KML数学加速库调优
本文记录 KML BLAS 测试项目的编译、运行、模式切换及基础优化方式,并整理了编译过程中遇到的常见问题。
环境准备
1. 安装 KML 库
2. 解压测试包
说明:如果环境中缺少 cmake 或 make,请先通过系统包管理工具自行安装。
编译与运行
1. 进入工程并编译
2. 运行程序
当 build 目录下生成 blas_demo 时,说明编译已完成,可直接运行:
3. 编译成功示例

提示:如果只看到 warning 警告但编译成功,通常不影响运行。
若希望减少 CMake 版本告警,可将 CMakeLists.txt 中的以下配置从 2.8 调整为 3.0:
常见问题与解决
1. KML_PATH 路径不正确
首次编译时,可能需要手动修改 CMakeLists.txt 中的 KML_PATH,将其改为实际安装路径。
默认路径示例:
2. 环境中没有 openmpi
原始工程可能默认使用:
如果当前环境没有安装 openmpi,可选择以下两种方式之一:
- 直接将编译器改为
gcc - 安装
openmpi 及其开发包
改为 gcc:
安装 openmpi:
性能模式切换
切换 BLAS 模式前,建议先清理旧的构建缓存,再重新执行 cmake 和 make。
1. 通用切换流程
注意:切换模式前必须清理缓存,否则可能沿用旧配置。
2. OpenMP 多线程模式

3. Pthread 多线程模式

4. 单线程加锁模式

5. 单线程无锁模式
如果不传 BLAS 参数,默认通常为该模式。

测试结果
最终测试结果如下:

进一步优化建议
1. 性能优先:使用 Release 构建
如果希望进一步追求性能,可优先使用 Release 模式构建,以启用更激进的编译优化选项(通常包含 -O3)。
可参考以下思路:
更推荐直接在命令行中显式指定:
说明:原始记录中同时保留了 **Debug 到 Release 的修改思路,这里统一整理为“优先显式指定 Release”。
2. 精度 / 性能对比:尝试 float
如果需要测试不同精度下的性能差异,可尝试:
- 将
blas_demo.c 中的 double 改为 float - 将 KML 函数从
cblas_dgemv 调整为 cblas_sgemv
这种方式适合做精度与性能之间的对比实验。
KML数学加速库调优
本文记录 KML BLAS 测试项目的编译、运行、模式切换及基础优化方式,并整理了编译过程中遇到的常见问题。
环境准备
1. 安装 KML 库
2. 解压测试包
编译与运行
1. 进入工程并编译
2. 运行程序
当
build目录下生成blas_demo时,说明编译已完成,可直接运行:3. 编译成功示例
常见问题与解决
1.
KML_PATH路径不正确首次编译时,可能需要手动修改
CMakeLists.txt中的KML_PATH,将其改为实际安装路径。默认路径示例:
2. 环境中没有
openmpi原始工程可能默认使用:
如果当前环境没有安装
openmpi,可选择以下两种方式之一:gccopenmpi及其开发包改为
gcc:安装
openmpi:性能模式切换
切换 BLAS 模式前,建议先清理旧的构建缓存,再重新执行
cmake和make。1. 通用切换流程
2. OpenMP 多线程模式
3. Pthread 多线程模式
4. 单线程加锁模式
5. 单线程无锁模式
如果不传
BLAS参数,默认通常为该模式。测试结果
最终测试结果如下:
进一步优化建议
1. 性能优先:使用 Release 构建
如果希望进一步追求性能,可优先使用
Release模式构建,以启用更激进的编译优化选项(通常包含-O3)。可参考以下思路:
更推荐直接在命令行中显式指定:
2. 精度 / 性能对比:尝试
float如果需要测试不同精度下的性能差异,可尝试:
blas_demo.c中的double改为floatcblas_dgemv调整为cblas_sgemv这种方式适合做精度与性能之间的对比实验。