中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

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为系统自带,一般可以使用yumapt命令安装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。
  • 请参见《鲲鹏数学库 开发指南》的“生成完整的LAPACK”章节生成libklapack_full.so,生成后拷贝至KML安装路径下的“lib”目录。

构建KML_Numpy库

  1. 安装1.22.4版本开源Numpy库。
    pip3 install numpy==1.22.4
  2. 安装0.29.xx版本cypthon库。
    pip3 install cython==0.29.34
  3. 下载kml_adapter,并上传到构建环境(假设上传至“/home”目录下)

    下载地址:https://gitee.com/openeuler/kml_adapter

  4. 配置相关环境变量(假设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"
  5. 编译。
    cd /home/kml_adapter/numpy_adapter
    NPY_BLAS_ORDER= NPY_LAPACK_ORDER= python3 setup.py build -j16
  6. 确认编译是否成功。

    如果编译成功,将在“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