etl-opt8>bunzip2 -c ~/dload/atlas3.9.12.tar.bz2 | tar xfm - etl-opt8>mv ATLAS ATLAS3.9.12.1 etl-opt8>cd ATLAS3.9.12.1/ etl-opt8>mkdir obj64 etl-opt8>cd obj64/ etl-opt8>../configure -b 64 -D c -DPentiumCPS=2100 --shared \ --prefix=/home/whaley/local/atlas \ --with-netlib-lapack-tarfile=/home/whaley/dload/lapack.tgz ................................................... ............<A WHOLE LOT OF OUTPUT>................ ................................................... etl-opt8>ls ARCHS/ Makefile xconfig* xprobe_3dnow* xprobe_OS* atlcomp.txt Make.inc xctest* xprobe_arch* xprobe_pmake* atlconf.txt Make.top xf2cint* xprobe_asm* xprobe_sse1* bin/ src/ xf2cname* xprobe_comp* xprobe_sse2* include/ tune/ xf2cstr* xprobe_f2c* xprobe_sse3* interfaces/ xarchinfo_linux* xf77test* xprobe_gas_x8632* xprobe_vec* lib/ xarchinfo_x86* xflibchk* xprobe_gas_x8664* xspew* etl-opt8>make ......................................................... ............<A WHOLE WHOLE LOT OF OUTPUT>................ ......................................................... ATLAS install complete. Examine ATLAS/bin/<arch>/INSTALL_LOG/SUMMARY.LOG for details. make[1]: Leaving directory `/home/whaley/TEST/ATLAS3.9.12.1/obj64' make clean make[1]: Entering directory `/home/whaley/TEST/ATLAS3.9.12.1/obj64' rm -f *.o x* config?.out *core* make[1]: Leaving directory `/home/whaley/TEST/ATLAS3.9.12.1/obj64' 1628.011u 153.212s 23:05.34 128.5% 0+0k 32+3325928io 0pf+0w
OK, in a little over 20 minutes, we've got ATLAS and LAPACK built. Now, we need
to see if it passes the sanity tests, which we do by:
etl-opt8>make check ........................................................ ............<A WHOLE LOT OF COMPILATION>................ ........................................................ DONE BUILDING TESTERS, RUNNING: SCOPING FOR FAILURES IN BIN TESTS: fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \ bin/sanity.out 8 cases: 8 passed, 0 skipped, 0 failed 4 cases: 4 passed, 0 skipped, 0 failed 8 cases: 8 passed, 0 skipped, 0 failed 4 cases: 4 passed, 0 skipped, 0 failed 8 cases: 8 passed, 0 skipped, 0 failed 4 cases: 4 passed, 0 skipped, 0 failed 8 cases: 8 passed, 0 skipped, 0 failed 4 cases: 4 passed, 0 skipped, 0 failed DONE SCOPING FOR FAILURES IN CBLAS TESTS: fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \ interfaces/blas/C/testing/sanity.out | \ fgrep -v PASSED make[1]: [sanity_test] Error 1 (ignored) DONE SCOPING FOR FAILURES IN F77BLAS TESTS: fgrep -e fault -e FAULT -e error -e ERROR -e fail -e FAIL \ interfaces/blas/F77/testing/sanity.out | \ fgrep -v PASSED make[1]: [sanity_test] Error 1 (ignored) DONE make[1]: Leaving directory `/home/whaley/TEST/ATLAS3.9.12.1/obj64' 61.684u 6.485s 1:08.66 99.2% 0+0k 0+163768io 0pf+0w
So, since we see no failures, we passed. I get essentially the same output when I check the parallel interfaces (my machine has eight processors) via make ptcheck.
Now, I am ready to make sure my libraries are getting the expected performance,
so I do:
etl-opt8>make time ........................................................ ............<A WHOLE LOT OF COMPILATION>................ ........................................................ single precision double precision ******************************** ******************************* real complex real complex --------------- --------------- --------------- --------------- Benchmark Refrenc Present Refrenc Present Refrenc Present Refrenc Present ========= ======= ======= ======= ======= ======= ======= ======= ======= kSelMM 643.4 642.9 622.0 621.8 323.8 343.5 320.5 316.9 kGenMM 191.4 192.1 161.8 174.1 178.3 164.3 172.9 172.4 kMM_NT 140.0 138.5 127.4 129.3 137.4 136.1 126.4 131.8 kMM_TN 165.2 165.3 159.8 157.0 163.0 161.6 158.0 155.2 BIG_MM 604.1 617.0 601.8 599.8 311.3 332.3 309.2 292.1 kMV_N 74.3 70.2 211.2 197.5 51.9 48.4 107.3 99.7 kMV_T 82.2 79.8 97.2 95.3 46.4 43.9 77.6 73.3 kGER 60.1 56.9 153.5 130.3 38.8 32.0 77.5 64.8We see that load and timer issues have made it so there is not an exact match, but that neither install is worse overall, and so this install looks good! Now we are finally ready to install the libraries. We can do so, and then check what got installed by:
etl-opt8>make install ............................................... ..............<A LOT OF OUTPUT>................ ............................................... etl-opt8>cd ~/local/atlas/ etl-opt8>ls include/ lib/ etl-opt8>ls include/ atlas/ cblas.h clapack.h etl-opt8>ls include/atlas/ atlas_buildinfo.h atlas_dr1kernels.h atlas_strsmXover.h atlas_cacheedge.h atlas_dr1_L1.h atlas_tcacheedge.h atlas_cGetNB_gelqf.h atlas_dr1_L2.h atlas_trsmNB.h atlas_cGetNB_geqlf.h atlas_dsyr2.h atlas_type.h atlas_cGetNB_geqrf.h atlas_dsyr.h atlas_zdNKB.h atlas_cGetNB_gerqf.h atlas_dsyr_L1.h atlas_zGetNB_gelqf.h atlas_cmv.h atlas_dsyr_L2.h atlas_zGetNB_geqlf.h atlas_cmvN.h atlas_dsysinfo.h atlas_zGetNB_geqrf.h atlas_cmvS.h atlas_dtGetNB_gelqf.h atlas_zGetNB_gerqf.h atlas_cmvT.h atlas_dtGetNB_geqlf.h atlas_zmv.h atlas_cNCmm.h atlas_dtGetNB_geqrf.h atlas_zmvN.h atlas_cr1.h atlas_dtGetNB_gerqf.h atlas_zmvS.h atlas_cr1kernels.h atlas_dtrsmXover.h atlas_zmvT.h atlas_cr1_L1.h atlas_pthreads.h atlas_zNCmm.h atlas_cr1_L2.h atlas_sGetNB_gelqf.h atlas_zr1.h atlas_csNKB.h atlas_sGetNB_geqlf.h atlas_zr1kernels.h atlas_csyr2.h atlas_sGetNB_geqrf.h atlas_zr1_L1.h atlas_csyr.h atlas_sGetNB_gerqf.h atlas_zr1_L2.h atlas_csyr_L1.h atlas_smv.h atlas_zsyr2.h atlas_csyr_L2.h atlas_smvN.h atlas_zsyr.h atlas_csysinfo.h atlas_smvS.h atlas_zsyr_L1.h atlas_ctGetNB_gelqf.h atlas_smvT.h atlas_zsyr_L2.h atlas_ctGetNB_geqlf.h atlas_sNCmm.h atlas_zsysinfo.h atlas_ctGetNB_geqrf.h atlas_sr1.h atlas_ztGetNB_gelqf.h atlas_ctGetNB_gerqf.h atlas_sr1kernels.h atlas_ztGetNB_geqlf.h atlas_ctrsmXover.h atlas_sr1_L1.h atlas_ztGetNB_geqrf.h atlas_dGetNB_gelqf.h atlas_sr1_L2.h atlas_ztGetNB_gerqf.h atlas_dGetNB_geqlf.h atlas_ssyr2.h atlas_ztrsmXover.h atlas_dGetNB_geqrf.h atlas_ssyr.h cmm.h atlas_dGetNB_gerqf.h atlas_ssyr_L1.h cXover.h atlas_dmv.h atlas_ssyr_L2.h dmm.h atlas_dmvN.h atlas_ssysinfo.h dXover.h atlas_dmvS.h atlas_stGetNB_gelqf.h smm.h atlas_dmvT.h atlas_stGetNB_geqlf.h sXover.h atlas_dNCmm.h atlas_stGetNB_geqrf.h zmm.h atlas_dr1.h atlas_stGetNB_gerqf.h zXover.h etl-opt8>ls lib/ libatlas.a libcblas.so liblapack.a libptcblas.so libatlas.so libf77blas.a liblapack.so libptf77blas.a libcblas.a libf77blas.so libptcblas.a libptf77blas.so
The shared object support in ATLAS is still experimental, so we can get some idea if our shared objects work by running an undocumented tester. To try a dynamically linked LU factorization, we:
animal>cd ../bin animal>make xdlutst_dyn ............................................................... ............<A WHOLE LOT OF UP-TO-DATE CHECKING>............... ............................................................... make[1]: Leaving directory `/home/whaley/numerics/ATLAS3.7.38/animal64/bin' gfortran -O -fPIC -m64 -o xdlutst_dyn dlutst.o \ /home/whaley/numerics/ATLAS3.7.38/animal64/lib/libtstatlas.a \ /home/whaley/numerics/ATLAS3.7.38/animal64/lib/liblapack.so \ /home/whaley/numerics/ATLAS3.7.38/animal64/lib/libf77blas.so \ /home/whaley/numerics/ATLAS3.7.38/animal64/lib/libcblas.so \ /home/whaley/numerics/ATLAS3.7.38/animal64/lib/libatlas.so \ -Wl,--rpath /home/whaley/numerics/ATLAS3.7.38/animal64/lib animal>./xdlutst_dyn NREPS Major M N lda NPVTS TIME MFLOP RESID ===== ===== ===== ===== ===== ===== ======== ======== ======== 0 Col 100 100 100 95 0.001 1273.153 1.416e-02 0 Col 200 200 200 194 0.002 2453.930 1.087e-02 0 Col 300 300 300 295 0.007 2574.077 8.561e-03 0 Col 400 400 400 394 0.017 2531.312 8.480e-03 0 Col 500 500 500 490 0.031 2701.090 7.610e-03 0 Col 600 600 600 594 0.051 2796.150 8.332e-03 0 Col 700 700 700 693 0.081 2832.877 7.681e-03 0 Col 800 800 800 793 0.116 2938.840 7.091e-03 0 Col 900 900 900 893 0.161 3014.142 6.856e-03 0 Col 1000 1000 1000 995 0.221 3019.330 7.097e-03 10 cases ran, 10 cases passedSo, we appear to be good, and the install is complete! Now we point our users to the installed libs, and wait for the error reports to roll in.
R. Clint Whaley 2016-07-28