如何使用 CMake 构建 fatbin 文件?
How can I build a fatbin file using CMake?
我想使用 CMake 从我的 .cu
源文件构建一个 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
类型的库。但是,如果我删除 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? :-(
忘记 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)
我想使用 CMake 从我的 .cu
源文件构建一个 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
类型的库。但是,如果我删除 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? :-(
忘记 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)