kokkos学习指导
2026/4/15 6:47:19 网站建设 项目流程

github链接

只需要在编译的时候加一个参数,就可以实现跨平台(多cpu、多加速器等平台)的可移植性。

1、下载kokkos的包

#设置全局变量 export KOKKOS_VERSION=5.1.0 #替换为你实际想要安装的版本号,题主这里选择5.1.0 export KOKKOS_DOWNLOAD_URL=https://github.com/kokkos/kokkos/releases/download/${KOKKOS_VERSION} #下载 curl -sLO ${KOKKOS_DOWNLOAD_URL}/kokkos-${KOKKOS_VERSION}.tar.gz curl -sLO ${KOKKOS_DOWNLOAD_URL}/kokkos-${KOKKOS_VERSION}-SHA-256.txt #校验 grep kokkos-${KOKKOS_VERSION}.tar.gz kokkos-${KOKKOS_VERSION}-SHA-256.txt | shasum -c #解压缩 tar -xzvf kokkos-${KOKKOS_VERSION}.tar.gz

题主的执行过程如下:

2、配置kokkos

前提:我的电脑是intel cpu + nvidia gpu,所以我选择的是cuda编译器nvcc,例如:如果你是amd gpu,则需要hipcc,具体配置参考官网。

我电脑当前的nvidia驱动版本:580.126.09,可以支持cuda 13.0,先安装nvcc,该版本的kokkos要求的最低版本是nvcc 12.2.0。

#下载 CUDA 12.6(仅工具包,不含驱动),由于我总是遇到依赖缺失、源冲突的情况,所以我选择全量打包的离线运行安装程序,注意它会比较大。 wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run #只装里面的toolkit sudo sh cuda_12.6.0_560.28.03_linux.run --toolkit --silent #让nvcc生效 echo 'export PATH=/usr/local/cuda-12.6/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc #立即生效当前终端 source ~/.bashrc #检查是否安装成功 nvcc --version

nvcc安装成功:

我的kokkos配置参数如下:

补充电脑信息:i9 + RTX 3060 + Ubuntu。

cmake -B builddir \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_BUILD_TYPE=Release \ -DKokkos_ENABLE_OPENMP=ON \ -DKokkos_ENABLE_CUDA=ON \ -DKokkos_ARCH_NATIVE=ON \ -DKokkos_ARCH_AMPERE86=ON \ -DCMAKE_CXX_FLAGS="-mno-amx-tile -mno-amx-int8 -mno-amx-bf16"

解释:-DKokkos_ENABLE_OPENMP=ON #开启 CPU 多核并行
-DKokkos_ENABLE_CUDA=ON #开启 NVIDIA GPU 支持
-DKokkos_ARCH_NATIVE=ON #自动识别并优化 Intel i9 处理器
-DKokkos_ARCH_AMPERE86=ON #指定 RTX 3060 显卡架构(安培 Ampere)
-DKokkos_CXX_FLAGS="-mno-amx-int8 -mno-amx-bf16" #关闭AMX指令集

配置成功:

如果由于版本问题配置失败,解决后,记得执行如下指令,再重新进行配置。

rm -rf builddir

3、构建kokkos

cmake --build builddir -j$(nproc)

编译成功:

如果编译失败,解决完问题之后,记得清理之前的编译结果。

#清理上次的编译结果 cmake --build builddir --target clean

安装头文件和库文件,我这里指定了目录,观者要记得更改为自己的。

cmake --install builddir --prefix ~/A_Waxeia/A_Myself/postgraduate/my/kokkos/headerfiles_libraries

遇到的参考问题记录:

编译失败:

报错原因:GCC 13 + CUDA 12.6 不兼容

  • 我的 CPU 是 Intel i9(不支持 AMX 高级指令集)
  • 但 NVCC(CUDA 编译器)不认识 GCC 13 的 AMX 内置函数
  • 所以编译到 OpenMP 测试用例时直接炸了

解决方案:强制关闭 AMX 指令集,配置的时候给指令多加一条参数:-DCMAKE_CXX_FLAGS="-mno-amx-tile -mno-amx-int8 -mno-amx-bf16",重新编译即解决问题。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询