本地编译带OpenMP线程的BLIS并为Zen3架构编译Numpy后,Numpy无法启用多线程问题求助
我最近碰到了一个头疼的问题:我针对Zen3架构本地编译了开启OpenMP线程支持的BLIS库(已经用一段C++代码验证过OpenMP在我机器上能正常工作),接着基于这个BLIS编译了Numpy,但编译完成后发现Numpy似乎只能单线程运行,我实在找不到问题根源。
先给大家贴出我的BLIS配置输出:
configuration family: zen3
sub-configurations: zen3
requisite kernels sets: zen3 zen2 zen haswell
kernel-to-config map: haswell:zen3 zen:zen3 zen2:zen3 zen3:zen3BLIS version string: 0.9.0-118
.so major version: 4
.so minor.build vers: 0.0
install libdir: /home/me/blis/lib
install includedir: /home/me/blis/include
install sharedir: /home/me/blis/share
debugging status: off
enable AddressSanitizer? no
enabled threading model(s): openmp single
enable BLAS API? yes
enable CBLAS API? yes
build static library? yes
build shared library? yes
ARG_MAX hack enabled? no
我已经设置了环境变量:export OMP_NUM_THREADS=64(我的CPU是64线程的),还额外加了export BLIS_THREAD_IMPL=openmp以防万一。
另外,用pip直接安装的官方Numpy是可以正常多线程运行的,但它默认依赖的是OpenBLAS。
我的Numpy配置信息也显示确实绑定了BLIS:
libraries = ['blis', 'blis'] library_dirs = ['/home/me/blis/lib'] define_macros = [('HAVE_CBLAS', None)] include_dirs = ['/home/me/blis/include/blis'] language = c runtime_library_dirs = ['/home/or/blis/lib'] blas_opt_info: libraries = ['blis', 'blis'] library_dirs = ['/home/me/blis/lib'] define_macros = [('HAVE_CBLAS', None)] include_dirs = ['/home/me/blis/include/blis'] language = c runtime_library_dirs = ['/home/me/blis/lib']
有没有大佬能帮我排查下问题出在哪?
备注:内容来源于stack exchange,提问作者Crispy Holiday

