Conversation
133bb9a to
3b86b64
Compare
3b86b64 to
79a2a01
Compare
|
Just as a general feature request: it would be cool if this tool allows easy, user-level performance benchmarks on clusters similar to what we did in Figure 1 in https://arxiv.org/abs/1706.00522 . So that we can easily switch backends, compression, written size per node and the like. |
72aeec7 to
698edde
Compare
|
Thanks for your suggestions, the figure gives a good guideline.
and the benchmark is then executed for every possible combination of entered values. ↑ edit: this has changed now, look into the documentation |
6854b1b to
3160119
Compare
Yep, sounds useful since it controls the data per node. We should write both particle and mesh data, but I am ok to start with the latter. |
3160119 to
0022fbb
Compare
I have expressed myself unclearly, the Benchmark class already allows choosing the part of the dataset to write per rank relatively freely. The user can choose this be passing to the constructor an implementation of the BlockSlicer abstract class. Once the BlockSlicer is chosen, it is currently fixed to allow for comparable results – unlike compression strategies, backends and thread sizes which can be altered.
To be fair, I just copied that part from here, I will look into it. |
1ba8b5d to
53129c6
Compare
4ffe131 to
b3525a1
Compare
62a848b to
7a3a838
Compare
docs/source/index.rst
Outdated
| :maxdepth: 1 | ||
| :hidden: | ||
|
|
||
| /utilities/benchmark.rst No newline at end of file |
src/Datatype.cpp
Outdated
| os << dt; | ||
| return buf.str(); | ||
| } | ||
| } No newline at end of file |
|
|
||
| #endif | ||
| } | ||
|
|
|
|
||
| }; | ||
|
|
||
| } No newline at end of file |
| }; | ||
| } | ||
| #endif | ||
|
|
| } | ||
|
|
||
| #endif | ||
|
|
| src/backend/PatchRecordComponent.cpp | ||
| src/backend/Writable.cpp) | ||
| src/backend/Writable.cpp | ||
| src/benchmark/mpi/OneDimensionalBlockSlicer.cpp) |
There was a problem hiding this comment.
Is it possible that this file and mpi_benchmark.cpp should be just in an extra or example target list?
There was a problem hiding this comment.
I added mpi_benchmark.cpp (now 8_mpi_benchmark.cpp) to the example target list.
For OneDimensionalBlockSlicer.cpp do you mean to create a new list for that?
There was a problem hiding this comment.
Yes, this .cpp file is not part of the library's CORE_SOURCE but of the examples/apps only.
| } | ||
|
|
||
| MPI_Finalize(); | ||
| } No newline at end of file |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
c54507c to
58315a1
Compare
Implementation for slicing a hypercube along one dimension Refactor MPI benchmarking Dataset filling is now implemented by an own class instead of a virtual function. Add the fundaments for a write benchmark Adapted from https://openpmd-api.readthedocs.io/en/latest/usage/parallel.html#writing Nearly complete, but untested MPI benchmark Missing the collection of benchmarking results for the single threads Basically executable version of the benchmark Better handling of dataset indexing Do not set a compression when the compression string is empty Fix index calculation Create the write data anew for every iteration This allows for bigger benchmarks since only final memory is needed, but the time for data creation needs to be measured and deducted in the end. Also document the code. Refactor the creation of a DataSet Forward constructor arguments to the DatasetFiller Add some documentation and cleanup Flush the Series after every iteration in the benchmark Integrate with the build system Allow compiling without MPI enabled Also fix some shadowed variables Refactor the benchmark Make BlockSlicer and DatasetFiller abstract classes instead of templates. Add configuration options for backends and numbers of threads to use. Make it possible to actually include the benchmark. Refactor benchmark to allow for several datatypes in one run Make the benchmark system more flexible Includes setting the number of iterations per benchmark configuration and adding an adaptor class template SimpleDatasetFillerProvider lifting a DatasetFiller to a DatasetFillerProvider. Add documentation for the benchmark Includes an example usage.
"resolve MPI misbehaviour" = "realized that I had a faulty installation"
58315a1 to
b8751b6
Compare
0354bec to
ed1fa9c
Compare
ed1fa9c to
46b18f2
Compare
| * openPMD type. | ||
| */ | ||
|
|
||
| #if _MSC_VER && !__INTEL_COMPILER |
There was a problem hiding this comment.
Please place this macro block above the doxygen block (separated by an empty newline)
|
I can merge this for now, thanks a lot! |
|
@franzpoeschel in CI, we get sporadically the error in the MPI benchmark. Can you confirm and might there be a quirk we need to fix? |
|
I have seen this error already, yes. I thought it was an issue with the ADIOS backend, I will try finding the cause of it. |
|
Just to be sure, #418 is exactly this issue, right? |
Adds a generic MPI benchmark to openPMD (#37).
Todo:
openPMD::unsupported_data_error: Unsupported attribute datatype)*.rst).