---
title: Numpy使用KML
description: "Numpy（Numerical Python），是一个高性能Python库，支持大量的维度数组与矩阵运算，此外也针对数组运算提供大量的数学函数库。KML_Numpy库是将KML数学库适配到Numpy的C源码中，使其相应函数的底层调用到KML接口，以此进一步提高性能。当前KML_Numpy适配的接口类型主要有：基础数学运算、FFT、线性代数。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0074.html
sourcePath: /source/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0074.html
indexId: 03a5bff23ae259777c54b0c95d73c5a186712852806ca2bcce7fee357ef5f1bd67
---
# 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。

- 请参见《  鲲鹏数学库 开发指南(https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_16_0218.html)
》的“生成完整的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. 从GitCode(https://atomgit.com/openeuler/kml_adapter)下载kml_adapter，并上传到构建环境（假设上传至“/home”目录下）。
4. 配置相关环境变量（假设KML安装路径为“/usr/local/kml”）。（假设HPCKit安装路径为/opt/HPCKit）。

```
export KML_PATH=/usr/local/kml
export KML_PATH=/opt/HPCKit/latest/kml/gcc/lib/noarch/
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 -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
```
