@@ -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