numpy自带的openblas库和openblas64库的差异
准备一个test_num.pyimportnumpyasnpimporttime# 验证BLAS后端print(np.__config__.show())# 性能测试矩阵乘法deftest_blas_performance():size4096anp.random.rand(size,size).astype(np.float32)bnp.random.rand(size,size).astype(np.float32)starttime.time()cnp.dot(a,b)durationtime.time()-start gflops2*size**3/duration/1e9print(f矩阵大小:{size}x{size})print(f耗时:{duration:.2f}秒)print(f性能:{gflops:.2f}GFLOPS)test_blas_performance()numpy-1.20.3自带的是openblasaaakylin-pc:~/par$ python3 pip-22.3.1.pyz install numpy1.20.3 -i https://mirrors.aliyun.com/pypi/simple/ Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://mirrors.aliyun.com/pypi/simple/ Collecting numpy1.20.3 Downloading https://mirrors.aliyun.com/pypi/packages/22/bc/167ee56ac14f314544f393009b2cc62250c6e8d4d048d10304c8124b374b/numpy-1.20.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (12.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.7/12.7 MB 33.5 MB/s eta 0:00:00 Installing collected packages: numpy Attempting uninstall: numpy Found existing installation: numpy 1.21.6 Uninstalling numpy-1.21.6: Successfully uninstalled numpy-1.21.6 Successfully installed numpy-1.20.3 aaakylin-pc:~/par$ python3 pip-22.3.1.pyz show numpy Name: numpy Version: 1.20.3 Summary: NumPy is the fundamental package for array computing with Python. Home-page: https://www.numpy.org Author: Travis E. Oliphant et al. Author-email: License: BSD Location: /home/aaa/.local/lib/python3.8/site-packages Requires: Required-by: matplotlib, pandas aaakylin-pc:~/par$ cd /home/aaa/.local/lib/python3.8/site-packages aaakylin-pc:~/.local/lib/python3.8/site-packages$ ls cycler kiwisolver matplotlib-3.5.3-py3.8-nspkg.pth numpy.libs pandas-1.3.5.dist-info pyparsing-3.1.4.dist-info cycler-0.12.1.dist-info kiwisolver-1.4.7.dist-info mpl_toolkits packaging __pycache__ uv fontTools matplotlib numpy packaging-26.0.dist-info pylab.py uv-0.11.5.dist-info fonttools-4.57.0.dist-info matplotlib-3.5.3.dist-info numpy-1.20.3.dist-info pandas pyparsing aaakylin-pc:~/.local/lib/python3.8/site-packages$ aaakylin-pc:/usr/local/lib/python3.8/dist-packages$ cd ~/par aaakylin-pc:~/par$ python3 test_num.py blas_mkl_info: NOT AVAILABLE blis_info: NOT AVAILABLE openblas_info: libraries [openblas, openblas] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None)] blas_opt_info: libraries [openblas, openblas] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None)] lapack_mkl_info: NOT AVAILABLE openblas_lapack_info: libraries [openblas, openblas] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None)] lapack_opt_info: libraries [openblas, openblas] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None)] None 矩阵大小: 4096x4096 耗时: 1.34秒 性能: 102.23 GFLOPS aaakylin-pc:~/par$ cd ~/.local/lib/python3.8/site-packages/numpy/core aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy/core$ ldd _multiarray_umath.cpython-38-aarch64-linux-gnu.so linux-vdso.so.1 (0x0000007f87b1e000) libopenblasp-r0-afb71072.3.13.dev.so /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/libopenblasp-r0-afb71072.3.13.dev.so (0x0000007f862dc000) libm.so.6 /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f86216000) libpthread.so.0 /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f861e6000) libc.so.6 /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f86074000) libgfortran-daac5196.so.5.0.0 /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/libgfortran-daac5196.so.5.0.0 (0x0000007f85eec000) /lib/ld-linux-aarch64.so.1 (0x0000007f87aee000) libz-faed9fd9.so.1.2.7 /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/libz-faed9fd9.so.1.2.7 (0x0000007f85eab000) libgcc_s.so.1 /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f85e87000) aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy.libs$ ls -l 总用量 23584 -rwxrwxr-x 1 aaa aaa 1539832 4月 10 13:25 libgfortran-daac5196.so.5.0.0 -rwxrwxr-x 1 aaa aaa 22408760 4月 10 13:25 libopenblasp-r0-afb71072.3.13.dev.so -rwxrwxr-x 1 aaa aaa 198680 4月 10 13:25 libz-faed9fd9.so.1.2.7 aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy.libs$ cd ~/par用ldd命令可见数组相乘库用了libopenblasp这个在Whl包的numpy.libs目录中提供。2. numpy-1.23.4自带的是openblas64aaakylin-pc:~/par$ python3 pip-22.3.1.pyz install numpy1.23.4 -i https://mirrors.aliyun.com/pypi/simple/ Defaulting to user installation because normal site-packages is not writeable Looking in indexes: https://mirrors.aliyun.com/pypi/simple/ Collecting numpy1.23.4 Downloading https://mirrors.aliyun.com/pypi/packages/2a/28/94ef96d74927d35d2c53fba76e5636031958c374937d4714bcb9e4fe2506/numpy-1.23.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.0 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.0/14.0 MB 1.0 MB/s eta 0:00:00 Installing collected packages: numpy Attempting uninstall: numpy Found existing installation: numpy 1.20.3 Uninstalling numpy-1.20.3: Successfully uninstalled numpy-1.20.3 Successfully installed numpy-1.23.4 aaakylin-pc:~/par$ python3 test_num.py openblas64__info: libraries [openblas64_, openblas64_] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None), (BLAS_SYMBOL_SUFFIX, 64_), (HAVE_BLAS_ILP64, None)] runtime_library_dirs [/usr/local/lib] blas_ilp64_opt_info: libraries [openblas64_, openblas64_] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None), (BLAS_SYMBOL_SUFFIX, 64_), (HAVE_BLAS_ILP64, None)] runtime_library_dirs [/usr/local/lib] openblas64__lapack_info: libraries [openblas64_, openblas64_] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None), (BLAS_SYMBOL_SUFFIX, 64_), (HAVE_BLAS_ILP64, None), (HAVE_LAPACKE, None)] runtime_library_dirs [/usr/local/lib] lapack_ilp64_opt_info: libraries [openblas64_, openblas64_] library_dirs [/usr/local/lib] language c define_macros [(HAVE_CBLAS, None), (BLAS_SYMBOL_SUFFIX, 64_), (HAVE_BLAS_ILP64, None), (HAVE_LAPACKE, None)] runtime_library_dirs [/usr/local/lib] Supported SIMD extensions in this NumPy install: baseline NEON,NEON_FP16,NEON_VFPV4,ASIMD found ASIMDHP,ASIMDDP,ASIMDFHM not found None 矩阵大小: 4096x4096 耗时: 0.99秒 性能: 138.41 GFLOPS aaakylin-pc:~/par$ cd ~/.local/lib/python3.8/site-packages/numpy/core aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy/core$ ldd _multiarray_umath.cpython-38-aarch64-linux-gnu.so linux-vdso.so.1 (0x0000007f99e4b000) libopenblas64_p-r0-9c1f2efe.3.20.so /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/libopenblas64_p-r0-9c1f2efe.3.20.so (0x0000007f9837e000) libm.so.6 /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f982b8000) libpthread.so.0 /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f98288000) libc.so.6 /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f98116000) libgfortran-daac5196.so.5.0.0 /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/libgfortran-daac5196.so.5.0.0 (0x0000007f97f9b000) /lib/ld-linux-aarch64.so.1 (0x0000007f99e1b000) libz.so.1 /lib/aarch64-linux-gnu/libz.so.1 (0x0000007f97f71000) libgcc_s.so.1 /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007f97f4d000) aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy/core$ cd /home/aaa/.local/lib/python3.8/site-packages/numpy/core/./../../numpy.libs/ aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy.libs$ ls -la 总用量 26012 drwxrwxr-x 2 aaa aaa 4096 4月 10 14:08 . drwx------ 23 aaa aaa 4096 4月 10 14:08 .. -rwxrwxr-x 1 aaa aaa 1484448 4月 10 14:08 libgfortran-daac5196.so.5.0.0 -rwxrwxr-x 1 aaa aaa 25138552 4月 10 14:08 libopenblas64_p-r0-9c1f2efe.3.20.so aaakylin-pc:~/.local/lib/python3.8/site-packages/numpy.libs$简单矩阵乘法测试的结果openblas64库比openblas快了30%多。