Using an optimized BLAS

You may want an optimized library if one is available, since the Level 3 tests can go on for much longer if you use only the reference library. However, only a few vendor libraries supply all of the BLAS that ATLAS provides (to be fair, ATLAS provides BLAS above those mandated by the standard; it provides all the routines present in the Fortran77 reference library). So, the easiest way to get a complete library is to also install the reference Fortran77 library from netlib, as described in the previous section.

Now, you can set BLASlib so that the optimized library is linked in first, and the reference BLAS are used for any routines not provided in the optimized library. For instance, here's an old BLASlib for using MKL:

   BLASlib = /home/rwhaley/lib/libmkl32_def.a /home/rwhaley/lib/libfblas.a

For many routines, the tester cannot tell the difference between an error in the BLAS given by BLASlib, and an error in ATLAS. Subsequent section will explain how to figure this out, but understand that a lot of optimized BLAS will fail this tester, in which case you need to link against the F77 BLAS instead of the optimized version of that routine. Let us say you find out that there are errors in the optimized DTRSM. In this case, you can simply link in the F77 reference DTRSM object file first to override the on in the optimized lib. So, your BLASlib line would then look something like:

   BLASlib = /home/rwhaley/FBLAS/dtrsm.o \
             /home/rwhaley/lib/libmkl32_def.a /home/rwhaley/lib/libfblas.a

Obviously, if you have more than a few routines like this, just testing against the f77 reference BLAS and taking the extra runtime is the way to go.

Clint Whaley 2012-07-10