---
title: 鲲鹏数学库加速
description: "在一些机器学习算法（如PCA、SVD算法）中，使用到了BLAS、LAPACK等数学库实现算法中的数学运算，鲲鹏针对数学库进行了优化，针对此类算法，使用鲲鹏数学库将会提升性能。请参考如下在集群各个数据节点和管理节点上安装鲲鹏数学库。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdsml_05_0017.html
sourcePath: /source/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdsml_05_0017.html
indexId: 172c20d6fd2875a83a40bdc9a731c5f6b28c40cb10464ebbfb5b50ec60f4135483
---
# 鲲鹏数学库加速

在一些机器学习算法（如PCA、SVD算法）中，使用到了BLAS、LAPACK等数学库实现算法中的数学运算，鲲鹏针对数学库进行了优化，针对此类算法，使用鲲鹏数学库将会提升性能。请参考如下在集群各个数据节点和管理节点上安装鲲鹏数学库。

#### 安装鲲鹏数学库

1. 基于AArch64架构完成netlib、jniloader相关JAR包和.so文件的编译，上传到“/opt/netlib/”路径下。
  单击netlib仓库(https://github.com/fommil/netlib-java)获取netlib仓库内容。 单击jniloader仓库(https://github.com/ibmsoe/jniloader)获取jniloader仓库内容。 编译之前要求本机没有安装BLAS。

2. 安装netlib依赖。

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

  b. 安装gfortran。
    1 yum install gcc-gfortran

  c. 安装libblas。
    1 yum install blas-devel

    查看安装结果。

    1 ll /usr/lib64/ | grep libblas

  d. 安装liblapack。
    1 yum install lapack-devel

    查看安装结果。

    1 ll /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数学库。
  举例：

  1 2 3 4 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/libklapack-full.so 1000 sudo update-alternatives --install /usr/lib64/liblapack.so.3 liblapack.so.3 /usr/local/kml_lapack/lib/libklapack-full.so 1000

  验证：

  1 2 3 4 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/boostkit-ml-acc_2.11-2.1.0-spark2.3.2.jar:lib/boostkit-ml-core_2.11-2.1.0-spark2.3.2.jar:lib/boostkit-ml-kernel_2.11-2.1.0-spark2.3.2-aarch64.jar" \
--conf "spark.executor.extraClassPath=/opt/netlib/*" \
```
