首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CMAKE的cuda_compile_ptx编译成ptx

使用CMAKE的cuda_compile_ptx编译成ptx
EN

Stack Overflow用户
提问于 2014-10-04 23:52:17
回答 2查看 2.9K关注 0票数 4

文件kernel.cu中有一个简单的内核

代码语言:javascript
复制
__global__ void add1( double * pi, double c ) 
{
    *pi += c;
}

并可以轻松地将其编译到ptx文件kernel.ptx中:

nvcc -ptx kernel.cu

现在,我想使用以下CMakeLists.txt使用cmake再现相同的行为:

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8)
project(cmake_ptx)
find_package(CUDA REQUIRED)
cuda_compile_ptx(
  test
  kernel.cu
)

但当我打字的时候

克莱。&&制造

未生成ptx文件。如何使用cmake再现上述nvcc命令的行为?特别是如何:

  • 将ptx文件的独立编译添加到目标(例如,所有):我注意到,当同一个CMakeFile中有另一个cuda_add_executable时,它也构建ptx文件,否则不会。
  • 将该文件命名为源文件,但使用.ptx而不是.cu结尾:与此问题相关:ptx in CMake?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-05 07:46:57

cuda_compile_ptx只创建生成文件的规则,但不将它们添加到任何目标。您需要添加自定义目标,这取决于ptx文件:

代码语言:javascript
复制
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)

现在,如果您运行makemake ptx,它将生成ptx文件。

票数 5
EN

Stack Overflow用户

发布于 2014-10-05 18:35:58

仅供参考,这就是我的项目设置(我有一个src/和一个包含/文件夹)的工作原理,使用来自已接受的答案的提示:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26198294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档