Skip to content

Commit 427e840

Browse files
committed
GPU Standalone: support build with ONNXRuntime
1 parent 83c6a8a commit 427e840

File tree

10 files changed

+151
-128
lines changed

10 files changed

+151
-128
lines changed

Common/ML/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
o2_add_library(ML
1313
SOURCES src/OrtInterface.cxx
1414
TARGETVARNAME targetName
15-
PRIVATE_LINK_LIBRARIES O2::Framework onnxruntime::onnxruntime)
15+
PRIVATE_LINK_LIBRARIES O2::GPUCommon onnxruntime::onnxruntime)
1616

1717
# Pass ORT variables as a preprocessor definition
1818
target_compile_definitions(${targetName} PRIVATE

Common/ML/include/ML/OrtInterface.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include <unordered_map>
2626

2727
// O2 includes
28-
#include "Framework/Logger.h"
28+
#include "GPUCommonLogger.h"
2929

3030
namespace Ort
3131
{

GPU/GPUTracking/Base/cuda/CMakeLists.txt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -121,12 +121,6 @@ if(ALIGPU_BUILD_TYPE STREQUAL "O2")
121121
${CMAKE_SOURCE_DIR}/DataFormats/Reconstruction/src
122122
${CMAKE_CURRENT_SOURCE_DIR}
123123
TARGETVARNAME targetName)
124-
125-
target_compile_definitions(${targetName} PRIVATE
126-
GPUCA_HAS_ONNX=1
127-
$<$<BOOL:${ORT_CUDA_BUILD}>:ORT_CUDA_BUILD>
128-
$<$<BOOL:${ORT_TENSORRT_BUILD}>:ORT_TENSORRT_BUILD>)
129-
130124
install(FILES ${HDRS} DESTINATION include/GPU)
131125
endif()
132126

@@ -141,6 +135,12 @@ endif()
141135

142136
target_compile_definitions(${targetName} PRIVATE $<TARGET_PROPERTY:O2::GPUTracking,COMPILE_DEFINITIONS>)
143137

138+
if (onnxruntime_FOUND)
139+
target_compile_definitions(${targetName} PRIVATE
140+
$<$<BOOL:${ORT_CUDA_BUILD}>:ORT_CUDA_BUILD>
141+
$<$<BOOL:${ORT_TENSORRT_BUILD}>:ORT_TENSORRT_BUILD>)
142+
endif()
143+
144144
# Setting target architecture and adding GPU libraries
145145
target_link_libraries(${targetName} PRIVATE cuda cudart nvrtc)
146146
set_target_cuda_arch(${targetName})

GPU/GPUTracking/Base/hip/CMakeLists.txt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,6 @@ if(ALIGPU_BUILD_TYPE STREQUAL "O2")
170170
${GPUCA_HIP_SOURCE_DIR}
171171
TARGETVARNAME targetName)
172172

173-
target_compile_definitions(${targetName} PRIVATE
174-
GPUCA_HAS_ONNX=1
175-
$<$<BOOL:${ORT_ROCM_BUILD}>:ORT_ROCM_BUILD>
176-
$<$<BOOL:${ORT_MIGRAPHX_BUILD}>:ORT_MIGRAPHX_BUILD>)
177-
178173
install(FILES ${HDRS} DESTINATION include/GPU)
179174

180175
# o2_add_test(GPUsortHIP NAME test_GPUsortHIP
@@ -195,6 +190,12 @@ endif()
195190

196191
target_compile_definitions(${targetName} PRIVATE $<TARGET_PROPERTY:O2::GPUTracking,COMPILE_DEFINITIONS>)
197192

193+
if (onnxruntime_FOUND)
194+
target_compile_definitions(${targetName} PRIVATE
195+
$<$<BOOL:${ORT_ROCM_BUILD}>:ORT_ROCM_BUILD>
196+
$<$<BOOL:${ORT_MIGRAPHX_BUILD}>:ORT_MIGRAPHX_BUILD>)
197+
endif()
198+
198199
add_library(${MODULE}_CXX OBJECT ${SRCS_CXX}) # Adding a C++ library for the .cxx code of the HIP library, such that it does not link to HIP libraries, and CMake HIP Language doesn't add HIP compile flags.
199200
target_compile_definitions(${MODULE}_CXX PRIVATE $<TARGET_PROPERTY:O2::GPUTracking,COMPILE_DEFINITIONS>)
200201
target_include_directories(${MODULE}_CXX PRIVATE $<TARGET_PROPERTY:O2::GPUTracking,INCLUDE_DIRECTORIES>)

GPU/GPUTracking/CMakeLists.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ set(SRCS_NO_CINT ${SRCS_NO_CINT}
200200
Refit/GPUTrackingRefitKernel.cxx
201201
Merger/GPUTPCGMO2Output.cxx)
202202

203-
if(NOT ALIGPU_BUILD_TYPE STREQUAL "Standalone")
203+
if(onnxruntime_FOUND)
204204
list(APPEND SRCS_NO_CINT TPCClusterFinder/GPUTPCNNClusterizerKernels.cxx TPCClusterFinder/GPUTPCNNClusterizer.cxx TPCClusterFinder/GPUTPCNNClusterizerHost.cxx)
205205
endif()
206206

@@ -343,15 +343,14 @@ if(ALIGPU_BUILD_TYPE STREQUAL "O2")
343343
O2::DetectorsRaw
344344
O2::Steer
345345
O2::ML
346-
PRIVATE_LINK_LIBRARIES onnxruntime::onnxruntime
347346
PUBLIC_INCLUDE_DIRECTORIES ${INCDIRS}
348347
SOURCES ${SRCS} ${SRCS_NO_CINT} ${SRCS_NO_H})
349348

350349
target_include_directories(
351350
${targetName}
352351
PRIVATE $<TARGET_PROPERTY:O2::Framework,INTERFACE_INCLUDE_DIRECTORIES>)
353352

354-
target_compile_definitions(${targetName} PRIVATE GPUCA_O2_LIB GPUCA_TPC_GEOMETRY_O2 GPUCA_HAS_ONNX=1)
353+
target_compile_definitions(${targetName} PRIVATE GPUCA_O2_LIB GPUCA_TPC_GEOMETRY_O2)
355354

356355
o2_target_root_dictionary(${MODULE}
357356
HEADERS ${HDRS_CINT_O2} ${HDRS_CINT_O2_ADDITIONAL}
@@ -421,6 +420,11 @@ target_link_libraries(${targetName} PRIVATE TBB::tbb)
421420

422421
target_compile_options(${targetName} PRIVATE -Wno-instantiation-after-specialization)
423422

423+
if (onnxruntime_FOUND)
424+
target_compile_definitions(${targetName} PRIVATE GPUCA_HAS_ONNX=1)
425+
target_link_libraries(${targetName} PRIVATE onnxruntime::onnxruntime)
426+
endif()
427+
424428
# Add CMake recipes for GPU Tracking librararies
425429
if(CUDA_ENABLED OR OPENCL_ENABLED OR HIP_ENABLED)
426430
if(CMAKE_SYSTEM_NAME MATCHES Darwin)

GPU/GPUTracking/Standalone/CMakeLists.txt

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,11 +121,25 @@ else()
121121
endif()
122122

123123
# Detect GPU Backends
124-
find_package(O2GPU)
124+
find_package(O2GPU REQUIRED)
125+
126+
if(GPUCA_CONFIG_ONNX)
127+
find_package(onnxruntime REQUIRED)
128+
if(CUDA_ENABLED AND NOT DEFINED ORT_CUDA_BUILD)
129+
set(ORT_CUDA_BUILD ON)
130+
elseif(HIP_ENABLED AND NOT DEFINED ORT_ROCM_BUILD)
131+
set(ORT_ROCM_BUILD ON)
132+
endif()
133+
else()
134+
set(onnxruntime_FOUND OFF)
135+
endif()
125136

126137
# Create main targets
127138
add_subdirectory(../../ GPU)
128-
add_library(standalone_support SHARED ${O2_DIR}/Common/Field/src/MagFieldFast.cxx
139+
add_library(standalone_support SHARED
140+
${O2_DIR}/Common/Field/src/MagFieldFast.cxx
141+
${O2_DIR}/Common/ML/src/OrtInterface.cxx
142+
${O2_DIR}/Common/Utils/src/StringUtils.cxx
129143
${O2_DIR}/DataFormats/Detectors/TPC/src/CompressedClusters.cxx
130144
${O2_DIR}/DataFormats/Reconstruction/src/TrackParametrization.cxx
131145
${O2_DIR}/DataFormats/Reconstruction/src/TrackParametrizationWithError.cxx
@@ -150,6 +164,7 @@ target_include_directories(standalone_support PUBLIC
150164
${O2_DIR}/Common/Constants/include
151165
${O2_DIR}/Common/MathUtils/include
152166
${O2_DIR}/Common/Utils/include
167+
${O2_DIR}/Common/ML/include
153168
${O2_DIR}/DataFormats/common/include
154169
${O2_DIR}/DataFormats/Detectors/Common/include
155170
${O2_DIR}/DataFormats/Detectors/ITSMFT/common/include
@@ -210,6 +225,10 @@ if(GPUCA_CONFIG_ROOT)
210225
ROOT::Tree)
211226
endif()
212227

228+
if(GPUCA_CONFIG_ONNX)
229+
target_link_libraries(standalone_support PRIVATE onnxruntime::onnxruntime)
230+
endif()
231+
213232
if (GPUCA_BUILD_DEBUG_SANITIZE AND CMAKE_CXX_COMPILER MATCHES "clang\\+\\+")
214233
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-file-name=libclang_rt.asan-x86_64.so OUTPUT_VARIABLE CLANG_ASAN_SO_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
215234
get_filename_component(CLANG_ASAN_SO_PATH "${CLANG_ASAN_SO_PATH}" DIRECTORY)

GPU/GPUTracking/Standalone/cmake/config.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ set(ENABLE_OPENCL AUTO)
1818
set(GPUCA_CONFIG_VC 1)
1919
set(GPUCA_CONFIG_FMT 1)
2020
set(GPUCA_CONFIG_ROOT 1)
21+
set(GPUCA_CONFIG_ONNX 0)
2122
set(GPUCA_BUILD_EVENT_DISPLAY 1)
2223
set(GPUCA_BUILD_EVENT_DISPLAY_FREETYPE 1)
2324
set(GPUCA_BUILD_EVENT_DISPLAY_VULKAN 1)

GPU/GPUTracking/Standalone/cmake/prepare.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ else
1111
fi
1212
eval "`alienv shell-helper`"
1313
# alienv load O2/latest
14-
for i in Vc boost fmt CMake ms_gsl Clang ninja TBB ROOT; do
14+
for i in Vc boost fmt CMake ms_gsl Clang ninja TBB ROOT ONNXRuntime; do
1515
source sw/$ALIARCH/$i/latest/etc/profile.d/init.sh
1616
done

GPU/GPUTracking/cmake/kernel_helpers.cmake

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,13 @@ function(o2_gpu_kernel_add_parameter)
174174
list(LENGTH ARGV n)
175175
math(EXPR n "${n} - 1")
176176
foreach(i RANGE 0 ${n})
177-
message(STATUS "Adding ${ARGV${i}}")
178177
set_property(TARGET O2_GPU_KERNELS APPEND PROPERTY O2_GPU_KERNEL_PARAMS "${ARGV${i}}")
179178
endforeach()
180179
endfunction()
181180
function(o2_gpu_kernel_add_string_parameter)
182181
list(LENGTH ARGV n)
183182
math(EXPR n "${n} - 1")
184183
foreach(i RANGE 0 ${n})
185-
message(STATUS "Adding ${ARGV${i}}")
186184
set_property(TARGET O2_GPU_KERNELS APPEND PROPERTY O2_GPU_KERNEL_STRING_PARAMS "${ARGV${i}}")
187185
endforeach()
188186
endfunction()

0 commit comments

Comments
 (0)