Skip to content

Checking that new QUDA features preserve Dslash behavior

Mathias Wagner edited this page Sep 19, 2018 · 3 revisions

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.

Clone this wiki locally