Numpy使用KML
Numpy库介绍
Numpy(Numerical Python),是一个高性能Python库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。KML_Numpy库是将KML数学库适配到Numpy的C源码中,使其相应函数的底层调用到KML接口,以此进一步提高性能。当前KML_Numpy适配的接口类型主要有:基础数学运算、FFT、线性代数。
环境要求
由于KML_Numpy适配的是numpy-1.22.4版本,因此对构建环境有一定的要求:
- 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及以上。
- Python库Cython版本号为0.29.xx。
- 已安装KML。
构建KML_Numpy库
- 安装1.22.4版本开源Numpy库。
pip3 install numpy==1.22.4
- 安装0.29.xx版本cypthon库。
pip3 install cython==0.29.34
- 下载kml_adapter,并上传到构建环境(假设上传至“/home”目录下)
- 配置相关环境变量(假设KML安装路径为“/usr/local/kml”)。
export KML_PATH=/usr/local/kml 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 -march=armv8-a -fno-math-errno -I ${PY3_HEADER_PATH} -I /usr/local/include/ -I ${KML_PATH}/include -L ${KML_PATH}/lib -L ${KML_PATH}/lib/kblas/omp -L ${KML_PATH}/lib/kvml/single -L ${KML_PATH}/lib/kspblas/single -Wl,-rpath=${KML_PATH}/lib -Wl,-rpath=${KML_PATH}/lib/kblas/omp -Wl,-rpath=${KML_PATH}/lib/kvml/single -Wl,-rpath=${KML_PATH}/lib/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
Numpy库使能KML
配置环境变量,确保优先调用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
父主题: 其他常用数学库迁移到KML