Numpy使用KML
Numpy库介绍
Numpy(Numerical Python),是一个高性能Python库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。KML_Numpy库是将KML数学库适配到Numpy的C源码中,使其相应函数的底层调用到KML接口,以此进一步提高性能。当前KML_Numpy适配的接口类型主要有:基础数学运算、FFT、线性代数。
环境要求
目前KML-Numpy适配了两个版本,分别为1.22.4和2.0.2,对构建环境有各自的要求:
- Python版本号为3.8~3.10,且含有开发模块。
若Python为自行安装构建,一般在Python的安装目录下都会存在include目录包含了Python.h等头文件。若Python为系统自带,一般可以使用yum或apt命令安装Python开发包。安装命令如下:
yum install python3-devel.aarch64 # 或 yum install python3-devel
之后在“/usr/local/include”目录下出现“python3.x”或“python3”目录,内含开发Python相关功能会使用到的头文件。(假设这个路径是“/usr/local/include/python3”。)
- GCC版本号为8及以上。
- 其中1.22.4版本要求Cython版本号为0.29.xx,2.0.2版本要求Cython>=3.0.6,meson-python>=0.15.0。
- 已安装KML。
构建KML_Numpy库
以下为1.22.4版本Numpy构建方式:
- 安装1.22.4版本开源Numpy库。
pip3 install numpy==1.22.4
- 安装0.29.xx版本cypthon库。
pip3 install cython==0.29.34
- 下载kml_adapter,并上传到构建环境(假设上传至“/home”目录下)
- 配置相关环境变量(假设HPCKit安装路径为/opt/HPCKit)。
export KML_PATH=/opt/HPCKit/latest/kml/gcc export PY3_HEADER_PATH=/usr/local/include/python3 export OPT=" -O3 -fopenmp -fopenmp-simd -I numpy/linalg ${PYH_PATH} -DHAVE_NEON_NPY -DHAVE_HUAWEI_KML -DNDEBUG -mtune=tsv110 -fno-math-errno -I ${PY3_HEADER_PATH} -I /usr/local/include/ -I ${KML_PATH}/include -L ${KML_PATH}/lib/neon -L ${KML_PATH}/lib/noarch -L ${KML_PATH}/lib/neon/kblas/multi -L ${KML_PATH}/lib/noarch/kvml/single -L ${KML_PATH}/lib/neon/kspblas/single -Wl,-rpath=${KML_PATH}/lib/neon -Wl,-rpath=${KML_PATH}/lib/noarch -Wl,-rpath=${KML_PATH}/lib/neon/kblas/multi -Wl,-rpath=${KML_PATH}/lib/noarch/kvml/single -Wl,-rpath=${KML_PATH}/lib/neon/kspblas/single -lkblas -lkvml -lkm -lkspblas -lklapack_full -lknpy -lkfft -lkfftf -lkm_l9 -lm -lksvml -lgfortran" - 编译。
cd /home/kml_adapter/numpy_adapter NPY_BLAS_ORDER= NPY_LAPACK_ORDER= python3 setup.py build -j16
- 确认编译是否成功。
如果编译成功,将在“numpy_adapter/build/”下根据你的环境生成如下几个目录:
lib.linux-aarch64-3.x src.linux-aarch64-3.x temp.linux-aarch64-3.x
以下为2.0.2版本Numpy构建方式:
- 下载Numpy-2.0.2源码。
- 下载子程序。
1git submodule update --init --recursive
- 进入根目录执行以下命令。
1sed -i "s|\$PREFIX|$(pwd)|g" pyproject.toml
- 添加环境变量为pcfiles所在路径。
1export PKG_CONFIG_PATH=$PWD/pcfiles
- 执行编译命令。
1python -m build
Numpy库使能KML
1.22.4版本Numpy使能:
配置环境变量,确保优先调用KML_Numpy。(假设构建生成的是“kml_adapter/numpy_adapter/build/lib.linux-aarch64-3.10”。)
export PYTHONPATH=/home/kml_adapter/numpy_adapter/build/lib.linux-aarch64-3.10:$PYTHONPATH
2.0.2版本Numpy使能:
上述步骤构建成功会在dist目录下生成一个.whl文件。(假设构建生成的是“numpy-2.0.2-cp39-cp39-linux_aarch64.whl”)
pip install numpy-2.0.2-cp39-cp39-linux_aarch64.whl