OpenBLAS在LoongArch64架构下的CMake构建问题与解决方案

OpenBLAS在LoongArch64架构下的CMake构建问题与解决方案

【免费下载链接】OpenBLAS 【免费下载链接】OpenBLAS 项目地址: https://gitcode.com/gh_mirrors/ope/OpenBLAS

前言

OpenBLAS作为一个高性能的线性代数计算库,在多种CPU架构上都有着广泛的应用。近期在LoongArch64架构(龙芯3A6000处理器)上使用CMake构建OpenBLAS 0.3.26和0.3.27版本时,开发者遇到了一些构建问题。本文将详细分析这些问题及其解决方案,帮助LoongArch64平台的用户顺利构建OpenBLAS。

问题一:CMake命令缺失错误

现象描述

在使用CMake配置OpenBLAS项目时,系统报告"Unknown CMake command CHECK_CXX_COMPILER_FLAG"错误。这个问题源于CMake脚本中使用了C++编译器标志检查命令,但项目本身并未包含必要的CMake模块。

根本原因

OpenBLAS的CMake构建系统在LoongArch64架构检测部分使用了CHECK_CXX_COMPILER_FLAG命令来验证ABI支持情况,但项目配置中:

  1. 没有包含CheckCXXCompilerFlag模块
  2. 项目定义中未声明C++语言支持(project命令中缺少CXX)

解决方案

提供了两种解决路径:

方案一(推荐)

  1. 在CMakeLists.txt或cc.cmake文件顶部添加:include(CheckCCompilerFlag)
  2. 将cc.cmake和fc.cmake文件中关于LOONGARCH64的部分修改为使用C编译器标志检查:
    • CHECK_CXX_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)改为CHECK_C_COMPILER_FLAG("-mabi=lp64d" COMPILER_SUPPORT_LP64D_ABI)
    • CHECK_CXX_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)改为CHECK_C_COMPILER_FLAG("-mabi=ilp32d" COMPILER_SUPPORT_ILP32D_ABI)

方案二

  1. 在CMakeLists.txt或cc.cmake文件顶部添加:include(CheckCXXCompilerFlag)
  2. 修改项目定义:将project(OpenBLAS C ASM)改为project(OpenBLAS C ASM CXX)

推荐使用方案一,因为它避免了不必要的C++编译器依赖,更符合OpenBLAS作为C语言项目的本质。

问题二:汇编语法错误

现象描述

在构建过程中,汇编器报告错误:"error: no match insn: fsub.s $f9,$f9,$f9,"。这是由于LoongArch64汇编代码中存在语法错误导致的构建失败。

问题分析

在文件kernel/loongarch64/dot_lasx.S的第168行,浮点减法指令fsub.s的格式不正确,在操作数和注释之间多了一个逗号:

fsub.s    s2,     s2,      s2,  /* set s2 to 0.0 */

同样的问题也存在于kernel/loongarch64/dot_lsx.S文件的相同位置。

解决方案

删除多余的逗号,修正后的指令应为:

fsub.s    s2,     s2,      s2  /* set s2 to 0.0 */

构建建议

对于LoongArch64平台的用户,建议使用以下CMake配置命令:

CC=gcc FC=gfortran cmake -B build \
    -DCMAKE_INSTALL_PREFIX=/opt/OpenBLAS \
    -DBUILD_SHARED_LIBS=ON \
    -DBUILD_TESTING=OFF \
    -DNO_AFFINITY=ON \
    -DUSE_OPENMP=1 \
    -DNO_WARMUP=1

总结

本文详细分析了OpenBLAS在LoongArch64架构下使用CMake构建时遇到的两个主要问题及其解决方案。第一个问题涉及CMake配置系统的调整,第二个问题则是汇编代码的语法修正。这些解决方案已经得到OpenBLAS开发团队的确认和采纳,将有助于LoongArch64平台的用户顺利构建和使用这一高性能数学库。

对于使用龙芯处理器的开发者来说,正确构建OpenBLAS可以充分发挥LoongArch64架构的计算潜力,为科学计算和机器学习应用提供高效的底层支持。

【免费下载链接】OpenBLAS 【免费下载链接】OpenBLAS 项目地址: https://gitcode.com/gh_mirrors/ope/OpenBLAS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值