我在文件kernel.cu中有简单的内核
__global__ void add1( double * pi, double c )
{
*pi += c;
}
Run Code Online (Sandbox Code Playgroud)
并且可以使用以下命令轻松将其编译为ptx文件kernel.ptx:
nvcc -ptx kernel.cu
现在,我想使用cmake和以下CMakeLists.txt重现相同的行为:
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
cuda_compile_ptx(
test
kernel.cu
)
Run Code Online (Sandbox Code Playgroud)
但是当我打字的时候
cmake.&& make
没有构建ptx文件.如何使用cmake重现上述nvcc命令的行为?特别是,如何:
将ptx文件的独立编译添加到目标(例如all):我注意到当同一个CMakeFile中有另一个cuda_add_executable时,它也会构建ptx文件,否则不会.
将文件命名为源文件,但使用.ptx而不是.cu结尾:与此问题相关: 如何在CMake中更改cuda_compile_ptx的输出文件名?
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)
Run Code Online (Sandbox Code Playgroud)
现在,如果您运行make或make ptx,它将生成ptx文件.
| 归档时间: |
|
| 查看次数: |
1871 次 |
| 最近记录: |