Validation

Basic Tests

To run basic tests:

make tests

Remember: a set of key-value pairs represents a single unique (re-)build (and test):

make STATIC=0 tests

Test Suites

It is possible to run whole test suites or collections of tests like for LIBXSMM's Continuous Integration (CI). The script tool_test.sh is included in archives and releases, i.e., it also works for non-repository folders. To run an entire collection (aka scripts/tool_test.sh 0).

scripts/tool_test.sh

It is also possible to select a single test (out of the whole collection):

scripts/tool_test.sh 1

In general, key-value pairs which are valid for LIBXSMM's make can be specified:

AVX=3 DBG=1 scripts/tool_test.sh

There are several collections of tests covering specific domains:

  • samples/utilities/wrap/wrap-test.sh: test substituting standard symbols at link/run-time (gemm, gemv, etc).
  • samples/xgemm/kernel_test.sh: test SMM kernels in an almost exhaustive fashion (brute-force).
  • samples/eltwise/run_test.sh: test all kinds of element-wise kernels and variants.
  • samples/pyfr/test.sh: test Sparse Matrix times Dense Matrix (FsSpMDM).

Reproduce Failures

LIBXSMM's verbose mode can print the invocation arguments when launching a test driver (LIBXSMM_VERBOSE=4 and beyond). For example (LIBXSMM_VERBOSE=4 ./run_test_avx2.sh), the termination message of a failing test may look like:

[...]
LIBXSMM_TARGET: hsw
Registry and code: 13 MB + 8 KB (meltw=1)
Command: ./eltwise_binary_simple 1 0 F32 F32 F32 F32 10 10 10 10 
[...]

Note: scripts such scripts/tool_pexec.sh suppress error output (console) by default and capture error output in individual files, i.e., verbose output may not be immediately visible.