Exit status and environment
From the manual of the benchmarks, man blas-microbenchmark
EXIT STATUS
0 when every point was measured and every result written; 1 for an invalid option or size, or when standard output or the -o file could not be written — a table cut short by a full disk must not pass for a complete one; 2 when a result was wrong (see CHECKING RESULTS), in which case nothing is written to the -o file; 77 when --batch-mode asks for a call the library does not have, or one it would crash on (see --batch-mode), or the routine is an extension the library does not have (axpby, gemmt, sbgemm), which is said on standard error: nothing is measured (77 is what make check's test driver takes for a test skipped).
ENVIRONMENT
The thread-count variables the library reads, in the order it reads them:
- OpenBLAS
- OPENBLAS_NUM_THREADS, GOTO_NUM_THREADS, OMP_NUM_THREADS
- BLIS, AOCL-BLAS
- BLIS_NUM_THREADS, OMP_NUM_THREADS
- NVPL, ArmPL
- OMP_NUM_THREADS
- MKL
- MKL_NUM_THREADS, OMP_NUM_THREADS. The count is set for MKL's BLAS domain, which overrides MKL_DOMAIN_NUM_THREADS; a warning says so when it is set. MKL_DYNAMIC=false makes MKL use them all on a small problem too (THREADS).
- FlexiBLAS
- those of the library it loaded, as above; none for Netlib.
FLEXIBLAS picks the library a build against FlexiBLAS loads, by the name flexiblas list gives it:
FLEXIBLAS=OPENBLAS-OPENMP bmb_dgemm -m 512:2048 -o openblas.json FLEXIBLAS=BLIS-OPENMP bmb_dgemm -m 512:2048 -o blis.json
The results name the library loaded: backend flexiblas/openblas-openmp, and FlexiBLAS's version with the library's name.
OMP_PROC_BIND and OMP_PLACES pin the threads of the OpenMP-threaded libraries.
The results record these variables, and the others that change what the library does, when they are set (OUTPUT).
NO_COLOR, when set and not empty, turns off the colours of warnings and errors, which are only used on a terminal anyway.
FILES
- /usr/local/libexec/blas-microbenchmark/level1
- /usr/local/libexec/blas-microbenchmark/level2
- /usr/local/libexec/blas-microbenchmark/level3
- The benchmarks, grouped by BLAS level rather than put on the PATH. To run them by name:
BMB=/usr/local/libexec/blas-microbenchmark export PATH="$BMB/level1:$BMB/level2:$BMB/level3:$PATH"
- /usr/local/share/blas-microbenchmark/reframe
- ReFrame tests of the benchmarks, for a site's test suite: one per routine, its result checked (--verify), its GFLOP/s and GB/s as performance variables, the site's references read from a JSON file. The README there says how to set the sizes, the threads and the references; see EXAMPLES.