NVCC使用CMAKE的cuda_compile_ptx编译为ptx

 福州精诚小家电 发布于 2022-12-18 13:23

我在文件kernel.cu中有简单的内核

__global__ void add1( double * pi, double c ) 
{
    *pi += c;
}

并且可以使用以下命令轻松将其编译为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
)

但是当我打字的时候

cmake.&& make

没有构建ptx文件.如何使用cmake重现上述nvcc命令的行为?特别是,如何:

将ptx文件的独立编译添加到目标(例如all):我注意到当同一个CMakeFile中有另一个cuda_add_executable时,它也会构建ptx文件,否则不会.

将文件命名为源文件,但使用.ptx而不是.cu结尾:与此问题相关: 如何在CMake中更改cuda_compile_ptx的输出文件名?

jet47.. 5

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)

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

1 个回答
  • 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)
    

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

    2022-12-18 13:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有