kokkos学习指导

张开发
2026/4/15 6:47:23 15 分钟阅读

分享文章

kokkos学习指导
github链接只需要在编译的时候加一个参数就可以实现跨平台多cpu、多加速器等平台的可移植性。1、下载kokkos的包#设置全局变量 export KOKKOS_VERSION5.1.0 #替换为你实际想要安装的版本号题主这里选择5.1.0 export KOKKOS_DOWNLOAD_URLhttps://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 --versionnvcc安装成功我的kokkos配置参数如下补充电脑信息i9 RTX 3060 Ubuntu。cmake -B builddir \ -DCMAKE_CXX_COMPILERg \ -DCMAKE_BUILD_TYPERelease \ -DKokkos_ENABLE_OPENMPON \ -DKokkos_ENABLE_CUDAON \ -DKokkos_ARCH_NATIVEON \ -DKokkos_ARCH_AMPERE86ON \ -DCMAKE_CXX_FLAGS-mno-amx-tile -mno-amx-int8 -mno-amx-bf16解释-DKokkos_ENABLE_OPENMPON #开启 CPU 多核并行-DKokkos_ENABLE_CUDAON #开启 NVIDIA GPU 支持-DKokkos_ARCH_NATIVEON #自动识别并优化 Intel i9 处理器-DKokkos_ARCH_AMPERE86ON #指定 RTX 3060 显卡架构安培 Ampere-DKokkos_CXX_FLAGS-mno-amx-int8 -mno-amx-bf16 #关闭AMX指令集配置成功如果由于版本问题配置失败解决后记得执行如下指令再重新进行配置。rm -rf builddir3、构建kokkoscmake --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 高级指令集但 NVCCCUDA 编译器不认识 GCC 13 的 AMX 内置函数所以编译到 OpenMP 测试用例时直接炸了解决方案强制关闭 AMX 指令集配置的时候给指令多加一条参数-DCMAKE_CXX_FLAGS-mno-amx-tile -mno-amx-int8 -mno-amx-bf16重新编译即解决问题。

更多文章