我在文件 kernel.cu 中有简单的内核
__global__ void add1( double * pi, double c )
{
*pi += c;
}
并且可以使用以下命令轻松将其编译为 ptx 文件 kernel.ptx:
现在,我想使用带有以下 CMakeLists.txt 的 cmake 重现相同的行为:
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
cuda_compile_ptx(
test
kernel.cu
)
但是当我打字的时候
没有构建 ptx 文件。如何使用 cmake 重现上述 nvcc 命令的行为?特别是,如何:
与这个问题相关:
How do I change the output filename of cuda_compile_ptx in CMake?
最佳答案
cuda_compile_ptx
只创建规则来生成文件,但不会将它们添加到任何目标。您需要添加自定义目标,这取决于 ptx 文件:
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
cuda_compile_ptx(
cuda_ptx_files
kernel.cu
)
add_custom_target(ptx ALL
DEPENDS ${cuda_ptx_files} kernel.cu
SOURCES kernel.cu)
现在,如果您运行
make
或 make ptx
,它将生成 ptx 文件。关于cuda - NVCC 使用 CMAKE 的 cuda_compile_ptx 编译为 ptx,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26198294/