开发者
KML数学加速库调优
KML数学加速库调优
原创
发表于05/29
5130

KML数学加速库调优

本文记录 KML BLAS 测试项目的编译、运行、模式切换及基础优化方式,并整理了编译过程中遇到的常见问题。

环境准备

1. 安装 KML 库

rpm -ivh kml-XXXX.aarch64.rpm

2. 解压测试包

unzip KML_BLAS_Project.zip

说明:如果环境中缺少 cmakemake,请先通过系统包管理工具自行安装。

编译与运行

1. 进入工程并编译

cd ./KML_BLAS_Project/
mkdir build && cd build
cmake ..
make

2. 运行程序

build 目录下生成 blas_demo 时,说明编译已完成,可直接运行:

./blas_demo

3. 编译成功示例

编译成功示例

提示:如果只看到 warning 警告但编译成功,通常不影响运行。

若希望减少 CMake 版本告警,可将 CMakeLists.txt 中的以下配置从 2.8 调整为 3.0

cmake_minimum_required(VERSION 2.8)

常见问题与解决

1. KML_PATH 路径不正确

首次编译时,可能需要手动修改 CMakeLists.txt 中的 KML_PATH,将其改为实际安装路径。

set(KML_PATH /opt/kml/2.2.0/bisheng3.1.0)

默认路径示例:

set(KML_PATH /usr/local/kml)

2. 环境中没有 openmpi

原始工程可能默认使用:

set(CMAKE_C_COMPILER mpicc)

如果当前环境没有安装 openmpi,可选择以下两种方式之一:

  • 直接将编译器改为 gcc
  • 安装 openmpi 及其开发包

改为 gcc

set(CMAKE_C_COMPILER gcc)

安装 openmpi

yum -y install openmpi openmpi-devel

性能模式切换

切换 BLAS 模式前,建议先清理旧的构建缓存,再重新执行 cmakemake

1. 通用切换流程

cd /home/kunpeng/KML_BLAS_Project/build
rm -rf *
cmake .. -DBLAS=<mode>
make

注意:切换模式前必须清理缓存,否则可能沿用旧配置。

2. OpenMP 多线程模式

cmake .. -DBLAS=omp

OpenMP 模式结果

3. Pthread 多线程模式

cmake .. -DBLAS=pthread

Pthread 模式结果

4. 单线程加锁模式

cmake .. -DBLAS=locking

单线程加锁模式结果

5. 单线程无锁模式

如果不传 BLAS 参数,默认通常为该模式。

cmake .. -DBLAS=nolocking

单线程无锁模式结果

测试结果

最终测试结果如下:

最终测试结果

进一步优化建议

1. 性能优先:使用 Release 构建

如果希望进一步追求性能,可优先使用 Release 模式构建,以启用更激进的编译优化选项(通常包含 -O3)。

可参考以下思路:

set(CMAKE_BUILD_TYPE "Release")

更推荐直接在命令行中显式指定:

cmake .. -DBLAS=nolocking -DCMAKE_BUILD_TYPE=Release

说明:原始记录中同时保留了 **DebugRelease 的修改思路,这里统一整理为“优先显式指定 Release”。

2. 精度 / 性能对比:尝试 float

如果需要测试不同精度下的性能差异,可尝试:

  • blas_demo.c 中的 double 改为 float
  • 将 KML 函数从 cblas_dgemv 调整为 cblas_sgemv

这种方式适合做精度与性能之间的对比实验。

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞