Windows10下编译Numpy如何指定使用本地AMD AOCL BLIS/LAPACK库?
解决Anaconda环境下编译NumPy关联AMD AOCL 4.2 BLIS/LAPACK的问题
前提确认
确保AOCL 4.2的BLIS/LAPACK已正确安装,且pkg-config能检测到目标库(你已完成此步骤,可跳过验证)。操作前务必激活Anaconda虚拟环境。
针对GCC编译的解决方案(解决远程下载BLIS、架构不匹配问题)
1. 配置环境变量强制使用本地库
设置以下环境变量,指定pkg-config路径、强制使用BLIS/LAPACK,并修正x86_64架构匹配问题:
# 替换为你的AOCL实际安装路径 export PKG_CONFIG_PATH=/opt/amd/aocl/4.2/blis/lib/pkgconfig:/opt/amd/aocl/4.2/lapack/lib/pkgconfig # 强制NumPy优先使用BLIS/LAPACK export NPY_BLAS_ORDER=blis export NPY_LAPACK_ORDER=lapack export BLAS=blis export LAPACK=lapack # 指定64位编译,解决架构不匹配 export CFLAGS="-m64 -O3" export FFLAGS="-m64 -O3"
2. 编译安装NumPy
禁用二进制轮子,强制从源码构建:
pip install numpy --no-binary :all: --force-reinstall -v
针对MSVC编译的解决方案(解决.pc文件检测失败、LAPACK名称异常问题)
1. 安装conda版pkg-config
MSVC原生不支持pkg-config,先通过conda安装适配工具:
conda activate your_env conda install -c conda-forge m2w64-pkg-config
2. 配置环境变量指定库路径
# 替换为你的AOCL实际安装路径 set AOCL_PATH=C:\path\to\aocl\4.2 # 设置头文件路径 set C_INCLUDE_PATH=%AOCL_PATH%\blis\include;%AOCL_PATH%\lapack\include set CXX_INCLUDE_PATH=%AOCL_PATH%\blis\include;%AOCL_PATH%\lapack\include # 设置库文件路径 set LIB=%AOCL_PATH%\blis\lib;%AOCL_PATH%\lapack\lib;%LIB% # 强制使用BLIS/LAPACK set NPY_BLAS_ORDER=blis set NPY_LAPACK_ORDER=lapack set BLAS=blis set LAPACK=lapack
3. 手动配置site.cfg(可选,解决LAPACK名称异常)
如果仍出现LAPACK名称问题,复制虚拟环境中Lib\site-packages\numpy\distutils\site.cfg.example为site.cfg,添加以下内容:
[blis] libraries = blis library_dirs = C:\path\to\aocl\4.2\blis\lib include_dirs = C:\path\to\aocl\4.2\blis\include [lapack] libraries = lapack library_dirs = C:\path\to\aocl\4.2\lapack\lib include_dirs = C:\path\to\aocl\4.2\lapack\include
然后执行编译命令:
pip install numpy --no-binary :all: --force-reinstall -v
验证编译结果
编译完成后,进入Python验证是否成功关联目标库:
import numpy as np np.__config__.show()
输出中应显示BLAS为blis,LAPACK为AOCL对应的库,而非默认的OpenBLAS或其他。
内容的提问来源于stack exchange,提问作者user25005585
相关产品推荐
相关产品推荐

