Skip to content

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.