---
title: 鲲鹏数学库加速
description: "在一些机器学习算法中，使用到了blas、lapack等数学库实现算法中的数学运算，鲲鹏针对数学库进行了优化，针对此类算法，使用鲲鹏数学库将会提升性能。请参考如下在集群各个控制节点和计算节点上安装鲲鹏数学库。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0040.html
sourcePath: /source/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0040.html
indexId: 13a3e51cd7c97cfb5ed0ec40bca8ca9e0cdb23848ec1752b2cd01aebfef7990973
---
# 鲲鹏数学库加速

#### 安装鲲鹏数学库

在一些机器学习算法中，使用到了blas、lapack等数学库实现算法中的数学运算，鲲鹏针对数学库进行了优化，针对此类算法，使用鲲鹏数学库将会提升性能。请参考如下在集群各个控制节点和计算节点上安装鲲鹏数学库。

1. 基于aarch64架构完成netlib、jniloader相关jar包和.so文件的编译，上传到“/opt/ netlib/”路径下。

  - netlib仓库地址：    https://github.com/fommil/netlib-java(https://github.com/fommil/netlib-java)

  - jniloader仓库地址：    https://github.com/ibmsoe/jniloader(https://github.com/ibmsoe/jniloader)

  - 编译之前要求本机没有安装BLAS。
2. 安装netlib依赖。

  a. GCC。
    若已安装，本步骤忽略，要求至少4.8.5版本以上。

```
yum install gcc
```


  b. gfortran。

```
yum install gcc-gfortran
```


  c. libblas

```
yum install blas-devel
```


    验证：

```
ll /usr/lib64/ | grep libblas
```


  d. liblapack

```
yum install lapack-devel
```


    验证：

```
ll /usr/lib64/ | grep liblapackll /usr/lib64/ | grep liblapack
```


3. 获取鲲鹏blas数学库和lapack数学库，进行安装，并根据《鲲鹏数学库开发指南(https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_16_0001.html)》生成完整功能的KML_LAPACK动态库。
4. 创建软连接到安装好的blas数学库和lapack数学库。
  举例：

```
sudo update-alternatives --install /usr/lib64/libblas.so libblas.so /usr/local/kml_blas/lib/single/libkblas.so 1000
sudo update-alternatives --install /usr/lib64/libblas.so.3 libblas.so.3 /usr/local/kml_blas/lib/single/libkblas.so 1000
sudo update-alternatives --install /usr/lib64/liblapack.so liblapack.so /usr/local/kml_lapack/lib/libklapackfull.so 1000
sudo update-alternatives --install /usr/lib64/liblapack.so.3 liblapack.so.3 /usr/local/kml_lapack/lib/libklapackfull.so 1000
```


  验证：

```
sudo update-alternatives --display libblas.so
sudo update-alternatives --display libblas.so.3
sudo update-alternatives --display liblapack.so
sudo update-alternatives --display liblapack.so.3
```


#### 使用鲲鹏数学库

运行spark时，添加如下配置：

```
--conf "spark.driver.extraLibraryPath=
/opt/netlib
" \
--conf "spark.executor.extraLibraryPath=
/opt/netlib
" \
--conf "spark.driver.extraClassPath=
/opt/netlib/*
:lib/sophon-ml-acc_2.11-1.2.0.jar:lib/sophon-mlcore_2.11-1.2.0.jar:lib/sophon-ml-kernel-2.11-1.2.0-aarch_64.jar" \
--conf "spark.executor.extraClassPath=
/opt/netlib/*
" \
```
