@@ -223,29 +223,33 @@ endif()
223223if (GPUCA_HIP_COMPILE_MODE STREQUAL "onefile" )
224224 target_compile_definitions (${targetName} PRIVATE GPUCA_KERNEL_COMPILE_MODE=0)
225225elseif (GPUCA_HIP_COMPILE_MODE STREQUAL "perkernel" )
226- add_library (GPUTrackingHIPKernels OBJECT $<JOIN:$<LIST:TRANSFORM,$<LIST:TRANSFORM,$<LIST:TRANSFORM,$<TARGET_PROPERTY:O2_GPU_KERNELS,O2_GPU_KERNEL_NAMES>,REPLACE,[^A-Za-z0-9]+,_>,PREPEND,${O2_GPU_KERNEL_WRAPPER_FOLDER} /krnl_>,APPEND ,.hip>, >)
227- target_compile_options (GPUTrackingHIPKernels PRIVATE "--cuda-device-only" )
228- target_compile_options (GPUTrackingHIPKernels PRIVATE $<$<COMPILE_LANGUAGE:HIP>:-fno-gpu-rdc>)
229- target_link_options (GPUTrackingHIPKernels PRIVATE $<$<COMPILE_LANGUAGE:HIP>:-fno-gpu-rdc>)
230226 target_compile_definitions (${targetName} PRIVATE GPUCA_KERNEL_COMPILE_MODE=1)
231- target_compile_definitions (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,COMPILE_DEFINITIONS >)
232- target_include_directories (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,INCLUDE_DIRECTORIES >)
233- target_link_libraries (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,LINK_LIBRARIES >)
234- if (NOT DEFINED GPUCA_HIP_HIPIFY_FROM_CUDA OR "${GPUCA_HIP_HIPIFY_FROM_CUDA} " )
235- add_dependencies (GPUTrackingHIPKernels ${MODULE} _HIPIFIED)
227+ if (NOT DEFINED GPUCA_RTC_NO_COMPILED_KERNELS OR NOT GPUCA_RTC_NO_COMPILED_KERNELS)
228+ add_library (GPUTrackingHIPKernels OBJECT $<JOIN:$<LIST:TRANSFORM,$<LIST:TRANSFORM,$<LIST:TRANSFORM,$<TARGET_PROPERTY:O2_GPU_KERNELS,O2_GPU_KERNEL_NAMES>,REPLACE,[^A-Za-z0-9]+,_>,PREPEND,${O2_GPU_KERNEL_WRAPPER_FOLDER} /krnl_>,APPEND ,.hip>, >)
229+ target_compile_options (GPUTrackingHIPKernels PRIVATE "--cuda-device-only" )
230+ target_compile_options (GPUTrackingHIPKernels PRIVATE $<$<COMPILE_LANGUAGE:HIP>:-fno-gpu-rdc>)
231+ target_link_options (GPUTrackingHIPKernels PRIVATE $<$<COMPILE_LANGUAGE:HIP>:-fno-gpu-rdc>)
232+ target_compile_definitions (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,COMPILE_DEFINITIONS >)
233+ target_include_directories (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,INCLUDE_DIRECTORIES >)
234+ target_link_libraries (GPUTrackingHIPKernels PRIVATE $<TARGET_PROPERTY:${targetName} ,LINK_LIBRARIES >)
235+ if (NOT DEFINED GPUCA_HIP_HIPIFY_FROM_CUDA OR "${GPUCA_HIP_HIPIFY_FROM_CUDA} " )
236+ add_dependencies (GPUTrackingHIPKernels ${MODULE} _HIPIFIED)
237+ endif ()
238+ file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin)
239+ add_custom_command (
240+ OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o
241+ COMMAND cp -u $<TARGET_OBJECTS:GPUTrackingHIPKernels> ${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin/
242+ COMMAND ${CMAKE_LINKER} -z noexecstack --relocatable --format binary --output ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o $<PATH :RELATIVE_PATH,$<LIST:TRANSFORM,$<PATH :GET_FILENAME,$<TARGET_OBJECTS:GPUTrackingHIPKernels>>,PREPEND,${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin/>,${CMAKE_CURRENT_BINARY_DIR} >
243+ DEPENDS GPUTrackingHIPKernels $<TARGET_OBJECTS:GPUTrackingHIPKernels>
244+ COMMENT "Compiling fatbin kernels ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o"
245+ VERBATIM
246+ COMMAND_EXPAND_LISTS
247+ )
248+ target_sources (${targetName} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o)
249+ set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o PROPERTIES EXTERNAL_OBJECT true GENERATED true )
250+ else ()
251+ set_source_files_properties (${GPUCA_HIP_SOURCE_DIR} /GPUReconstructionHIP.hip PROPERTIES COMPILE_DEFINITIONS GPUCA_RTC_NO_COMPILED_KERNELS)
236252 endif ()
237- file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin)
238- add_custom_command (
239- OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o
240- COMMAND cp -u $<TARGET_OBJECTS:GPUTrackingHIPKernels> ${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin/
241- COMMAND ${CMAKE_LINKER} -z noexecstack --relocatable --format binary --output ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o $<PATH :RELATIVE_PATH,$<LIST:TRANSFORM,$<PATH :GET_FILENAME,$<TARGET_OBJECTS:GPUTrackingHIPKernels>>,PREPEND,${CMAKE_CURRENT_BINARY_DIR} /hip_kernel_module_fatbin/>,${CMAKE_CURRENT_BINARY_DIR} >
242- DEPENDS GPUTrackingHIPKernels $<TARGET_OBJECTS:GPUTrackingHIPKernels>
243- COMMENT "Compiling fatbin kernels ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o"
244- VERBATIM
245- COMMAND_EXPAND_LISTS
246- )
247- target_sources (${targetName} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o)
248- set_source_files_properties (${CMAKE_CURRENT_BINARY_DIR} /GPUTrackingHIPKernelModules.o PROPERTIES EXTERNAL_OBJECT true GENERATED true )
249253
250254elseif (GPUCA_HIP_COMPILE_MODE STREQUAL "rdc" )
251255 message (FATAL_ERROR "HIP RDC compilation of GPUReconstruction ios not yet working!" )
0 commit comments