文件kernel.cu中有一个简单的内核
__global__ void add1( double * pi, double c )
{
*pi += c;
}并可以轻松地将其编译到ptx文件kernel.ptx中:
nvcc -ptx kernel.cu
现在,我想使用以下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命令的行为?特别是如何:
发布于 2014-10-05 07:46:57
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文件。
发布于 2014-10-05 18:35:58
仅供参考,这就是我的项目设置(我有一个src/和一个包含/文件夹)的工作原理,使用来自已接受的答案的提示:
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
include_directories(include/)
cuda_compile_ptx(
cuda_ptx_files
src/common_kernels.cu
OPTIONS -DCUDA_MATLAB
)
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/common_kernels.ptx COMMAND ${CMAKE_COMMAND} -E rename ${cuda_ptx_files} ${CMAKE_BINARY_DIR}/common_kernels.ptx DEPENDS ${cuda_ptx_files})
add_custom_target(ptx ALL
DEPENDS ${CMAKE_BINARY_DIR}/common_kernels.ptx src/common_kernels.cu
SOURCES src/common_kernels.cu
)这给了我与调用相同的输出:
nvcc -ptx src/include_kernels.cu -I -I/ -DCUDA_MATLAB
https://stackoverflow.com/questions/26198294
复制相似问题