To build complete reports comparing the present ATLAS install to other LAPACK/BLAS, you can issue:
make atlvsys.pdf cmp="SYSTEM LIB NAME" make atlvat2.pdf cmp="ATLASvXXXX" AT2dir="OBJdir/lib dir of previous install" make atlvf77.pdf cmp="f77"
For example, to compare against MKL (setup as described below), you would issue:
make atlvsys.pdf cmp="MKL"
To compare against a previous version of ATLAS, you additionally must specify the directory of the installed libraries using the AT2dir macro.
You can build individual charts comparing ATLAS versus another LAPACK/BLAS install by issuing commands of the following form from BLDdir/results:
make charts/<pre><rout><side><uplo><ta>_<sz>_<cmp>[_pt].epsWhere the choices are:
pre
: precision/type prefix, choose `s', `d', `c', or `z'.
rout
: choose `mmsq' for square GEMM, `mmrk' for rank-K
update GEMM with K equal to the make macro RK, or
one of the l3blas names: `symm', `herk', `syrk', `herk', `syr2k',
`her2k', `trmm', `trsm'. You can choose one of the lapack names:
`getrf', `potrf', `geqrf'.
side
: `L' (Left) or 'R' (Right)
uplo
: `L' (Lower) or 'U' (Upper)
ta
: `N' (NoTranspose), `T' (Transpose), 'C' (ConjTrans)
cmp
: choose `avs' (compare present install to system lib like
ACML or MKL), `ava' (compare against prior ATLAS install),
`avf' (compare against F77 LAPACK & BLAS).
size
: varies problem sizes charted, choose: `tin' (10-100),
`med' (200-2000), `lrg' (2400-4000), `cmb' (all sizes in one chart)
`mlr' (medium and large sizes in one chart).
_pt
: if omitted, time serial, else time threaded
You can also get summary information that displays square GEMM and all factorization performance on one chart with the commands:
make charts/<pre>factor_<sz>_<lib>[_pt].eps # results in MFLOPS make charts/<pre>pcmm_factor_<sz>_<lib>[_pt].eps # results as % of GEMMYou can also get a summary chart of all QR variants using:
make charts/<pre>qrvar_<sz>_<lib>[_pt].eps # results in MFLOPSWhere
<lib>
is one of `atl', `sys', `at2', and `f77'.
To compare differing ATLAS installs, edit your BLDdir/results/Make.plinc, and set AT2dir to point to the other ATLAS install's lib/ directory.
To compare against a system LAPACK/BLAS, fill in the following macros in BLDdir/Make.inc to point to the system libraries, rather than the default F77BLAS:
SBLASlib = $(FBLASlib) # should be serial sysblas BLASlib = $(FBLASlib) # should be parallel sysblas SLAPACKlib = # set to parallel system lapack SSLAPACKlib = # set to serial system lapack
For instance, here's how to set them to use ACML:
SBLASlib = /opt/acml4.4.0/gfortran64/lib/libacml.a BLASlib = /opt/acml4.4.0/gfortran64_mp/lib/libacml_mp.a -fopenmp SLAPACKlib = /opt/acml4.4.0/gfortran64_mp/lib/libacml_mp.a SSLAPACKlib = $(SBLASlib)
MKL is a good deal more complicated, and you'll have to see Intel's directions for things to work for your setup. On mine, I did:
MKLROOT = /opt/intel/mkl/ SBLASlib = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_gf_lp64.a \ $(MKLROOT)/lib/intel64/libmkl_sequential.a \ $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread BLASlib = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_gf_lp64.a \ $(MKLROOT)/lib/intel64/libmkl_gnu_thread.a \ $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group \ -fopenmp -lpthread SLAPACKlib = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_gf_lp64.a \ $(MKLROOT)/lib/intel64/libmkl_gnu_thread.a \ $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group SSLAPACKlib = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_gf_lp64.a \ $(MKLROOT)/lib/intel64/libmkl_sequential.a \ $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group
After the above setup, I can compare ATLAS's medium-sized threaded Cholesky performance to that of ACML by issuing:
make charts/dpotrf_LLN_mlr_avs_pt.eps cmp=ACML gv charts/dpotrf_LLN_mlr_avs_pt.eps &
R. Clint Whaley 2016-07-28