lbmpy-pssrt
This module tests an lbmpy fork twith additional functionality added within the MultiXscale project. Long term, the goal is that this will be upstreamed in lbmpy.
EESSI_lbmpy_pssrt
¶
Bases: RunOnlyRegressionTest, EESSI_Mixin
This test case simulates the Kelvin-Helmholtz instabilty where an initial hyperbolic tangent velocity profile imposed in a fully periodic 2D square box is slightly perturbed to initiate rolling of the shear layers.
This use case tests a modified version of lbmpy, with additional functionality. This test cases uses lbmpy with OpenMP parallelization. As such, this test will only be instantiated on scales up to 1 full node. The runtime is in the order of seconds to minutes.
The test script takes three (optional) arguments: --grid-size, --run-time, --openmp. If grid-size or run-time are modified, the reference value in the assert_normalized_average_kinetic_energy sanity check needs to be updated. The reference does not change with the number of threads.
assert_normalized_average_kinetic_energy()
¶
Assert that the normalized average kinetic energy matches the reference (exactly). Note that the reference needs to be adjusted if a different --grid-size or --run-time is used. It should, however, be robust against changes in the number of threads.
lattice_updates()
¶
This test case reports number of Mega lattice updates per second (and a range) over 5 iterations.
lattice_updates_range()
¶
This test case reports range (max-min) of number of Mega lattice updates per second, over 5 iterations. In other words, it takes the difference in Mega lattice updates per seconds between the slowest and the fastest iteration
required_mem_per_node()
¶
Defines the required memory per node to run this test
set_openmp_argument()
¶
If the number of cpus_per_task is larger than 1, enable OpenMP by setting the --openmp argument. Also, set compact thread binding in this case
validate()
¶
This is the sanity function for this test. Currently, it only checks that assert_normalized_average_kinetic_energy is true, but this may be expanded with additional sanity checking if needed.
filter_singlenode_scales()
¶
Filtering function that returns only single node scales.