Checking that new QUDA features preserve Dslash behavior - lattice/quda GitHub Wiki
Any new QUDA features or updates should appropriately preserve the existing behavior of Dslash routines, both in the single and multi GPU case. The following bash
for loop commands apply dslash_test
and staggered_dslash_test
, looping over:
- All Wilson- or Staggered-type routines (respectively), controlled by the variable
$ops
- Predefined tests, controlled by the variable
$test
- Precisions, controlled by the variable
$prec
- Partitionings across multiple GPUs (emulated or otherwise), controlled by the variable
$partition
Wilson-type:
for ops in wilson clover twisted-mass twisted-clover domain-wall domain-wall-4d mobius; do for test in 0 1 3; do for prec in half single double; do for partition in 0 8 12 14 15; do echo -n "op ${ops} test ${test} prec ${prec} partition ${partition} "; dslash_test --dslash-type ${ops} --test ${test} --prec ${prec} --partition ${partition} --dim 8 8 8 8 | grep "PASSED"; done; done; done; done > results
Staggered-type:
for ops in staggered asqtad laplace; do for test in 0 1; do for prec in half single double; do for partition in 0 8 12 14 15; do echo -n "op ${ops} test ${test} prec ${prec} partition ${partition} "; staggered_dslash_test --dslash-type ${ops} --test ${test} --prec ${prec} --partition ${partition} --dim 8 8 8 8 | grep "PASSED"; done; done; done; done > results_stag
As appropriate, add or remove loops or individual values iterated over within the loops. These tests take a while, so remove unnecessary iterations. For example, if a feature is twisted specific, remove everything but twisted-mass
and twisted-clover
from the loop over $ops
.
If a combination of $ops/$test/$prec/$partition
does not show up in the output, it means the test failed and should be investigated further. Improvement is needed there. This behavior is the result of the grep
for "PASSED" without any conditional behavior on seeing if "PASSED" doesn't exist.