0

我想.cu使用 CMake 从我的源文件构建一个 fatbin 文件。

我试过这个:

add_library(dummy_lib OBJECT my_src.cu)
set_property(TARGET dummy_lib PROPERTY CUDA_PTX_COMPILATION ON)
add_custom_command(
  TARGET dummy_lib POST_BUILD
  COMMAND nvcc -fatbin 
     -o "$<TARGET_FILE_BASE_NAME::dummy_lib>.fatbin" 
     "$<TARGET_FILE:dummy_lib>"
  VERBATIM)

不幸的是 - 这不起作用,因为您可以POST_BUILD依赖于OBJECT-type 库。但是,如果我删除该OBJECT属性,那么我就无法使用CUDA_PTX_COMPILATION ON它......

然后我会尝试以下OUTPUT版本add_custom_command()

add_library(dummy_lib OBJECT my_src.cu)
set_property(TARGET dummy_lib PROPERTY CUDA_PTX_COMPILATION ON)
add_custom_command(
  OUTPUT my_src.fatbin
  COMMAND ${CMAKE_CUDA_COMPILER} -fatbin -o my_src.fatbin "$<TARGET_FILE:dummy_lib>"
  MAIN_DEPENDENCY dummy_lib
)

这不会触发任何错误......但也不会构建 fatbin 文件。

如何让 CMake 构建我的 fatbin?:-(

4

1 回答 1

1

忘记 PTX 中间文件,改为执行以下操作:

add_custom_command(
    OUTPUT my_src.fatbin
    COMMAND ${CMAKE_CUDA_COMPILER} -fatbin 
        -o ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/foo.fatbin 
        "${CMAKE_CURRENT_SOURCE_DIR}/my_src.cu"
    MAIN_DEPENDENCY my_src.cu
)
add_custom_target(dummy ALL DEPENDS my_src.fatbin)
于 2021-12-29T21:54:07.360 回答