cutlass介绍和基本使用方法
1.项目简介
CUTLASS(CUDA Templates for Linear Algebra Subroutines)是 NVIDIA 开发的一个高性能 CUDA C++模板库,专注于实现高效的矩阵乘法(GEMM)及相关计算。它通过 C++模板机制将复杂的线性代数运算分解为可重用的模块化组件,支持多种精度和架构优化。
2.环境准备
在开始使用 CUTLASS 之前,请确保你的开发环境满足以下要求:
• 硬件要求:
-
支持 CUDA 的 NVIDIA GPU,架构至少为 Volta(计算能力 7.0)及以上。
-
推荐使用 Ampere(计算能力 8.0)或 Hopper(计算能力 9.0)架构。
• 软件要求:
-
CUDA Toolkit:版本 11.4 及以上。
-
C++编译器:支持 C++17 标准。
-
CMake:版本 3.18 及以上。
3.安装与编译
3.1 克隆项目
通过以下命令克隆 CUTLASS 项目:
git clone https://github.com/NVIDIA/cutlass.git
3.2 创建构建目录
创建一个个人构建目录并进入该目录:
mkdir cutlass_test
cd cutlass_test
3.3 配置项目
可以参考官方文档的readme进行配置和使用,但是个人不是很建议,因为整个编译过程冗长,且涉及到的文件众多,不适合入门学习,需要有一定基础之后使用,下面给出本人在linux下的使用方式
- 编写CmakeLists.txt
cmake_minimum_required(VERSION 3.18) # 指定最低的 cmake 版本要求
# 项目名称和语言
project(MyCudaProject
LANGUAGES CXX CUDA
)
set(CUDA_TOOLKIT_ROOT_DIR $ENV{USED_CUDA_PATH})
# 查找 CUDA
find_package(CUDA REQUIRED)
set(CODE_PATH $ENV{PROJECT_PATH}/code)
set(CUDA_PATH $ENV{USED_CUDA_PATH})
# 设置编译选项
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CUDA_NVCC_FLAGS "-gencode arch=compute_89,code=sm_89 --keep -g --ptxas-options=-v -std=c++17 -G -O0")
message(STATUS "Configuring for Debug build")
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
set(CUDA_NVCC_FLAGS "-gencode arch=compute_89,code=sm_89 --keep -g --ptxas-options=-v -std=c++17 -O3")
message(STATUS "Configuring for Debug build")
else()
message(WARNING "Unknown build type: ${CMAKE_BUILD_TYPE}")
endif()
link_directories(
# ${CUDA_PATH}/targets/x86_64-linux/lib
)
# 包含 CUDA 头文件目录
include_directories(
${CODE_PATH}/../../cutlass/examples/common
${CODE_PATH}/../../cutlass/include
${CODE_PATH}/../../cutlass/tools/util/include
)
# 定义要编译的 CUDA 源文件
FILE(GLOB_RECURSE files
${CODE_PATH}/source/basic_gemm.cu
)
# 添加一个可执行文件
cuda_add_executable(MyCudaExecutable ${files})
以上代码中的运行示例是 basic_gemm.cu,可以在cutlass/examples/00_basic_gemm/basic_gemm.cu 找到
- 编写build.sh 脚本
#!/bin/bash
if [ $# -eq 0 ]; then
echo "Usage: $0 [debug][release]"
exit 1
fi
if [ $1 == "debug" ]; then
echo "Setting environment for Debug build"
export CMAKE_BUILD_TYPE="Debug"
elif [ $1 == "release" ]; then
echo "Setting environment for Release build"
export CMAKE_BUILD_TYPE="Release"
else
echo "Invalid argument: $1"
echo "Usage: $0 [debug][release]"
exit 1
fi
if [ -d "build" ]; then
rm -rf build
fi
mkdir build
cd build
BUILD_PATH=$(pwd)
export PROJECT_PATH=$BUILD_PATH/../
export USED_CUDA_PATH=/usr/local/cuda-12.5/
cmake -DCMAKE_CUDA_COMPILER=/usr/local/cuda-12.5/bin/nvcc ..
make -j
echo "finish!"
注意,以上代码中的 CUDA Toolkit 版本和路径需要结合自身环境。
3.4 编译项目
整个项目cutlass_test布局如下所示,cutlass位于和cutlass_test同级目录
.
├── CMakeLists.txt
├── build.sh
└── code
├── include
└── source
├── basic_gemm.cu
./build.sh release # 编译release版本
4.运行示例
CUTLASS 提供了多个示例,可以在 cutlass/examples 目录下找到,帮助你快速了解其功能。如果你按照上文步骤已经编译好了,那么直接运行
./build/MyCudaExecutable
就可以看到运行结果,是 Passed。如果你想添加别的用例或者进行修改,那么需要深入了解cutlass的具体内容,可以仔细阅读 cutlass/media/docs 下的文档,这里就不作展开了。

浙公网安备 33010602011771号