Skip to content

Commit 27754d5

Browse files
authored
Fix TRT Decoder CMake for unsupported platforms (#332)
1 parent 048942b commit 27754d5

File tree

3 files changed

+75
-75
lines changed

3 files changed

+75
-75
lines changed

.github/workflows/all_libs.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
apt install -y tensorrt-dev
7575
7676
- name: Install TensorRT (arm64)
77-
if: matrix.platform == 'arm64'
77+
if: matrix.platform == 'arm64' && !startsWith(matrix.cuda_version, '12')
7878
run: |
7979
apt-cache search tensorrt | awk '{print "Package: "$1"\nPin: version *+cuda13.0\nPin-Priority: 1001\n"}' | tee /etc/apt/preferences.d/tensorrt-cuda13.0.pref > /dev/null
8080
apt update

.github/workflows/lib_qec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ jobs:
7373
apt install -y tensorrt-dev
7474
7575
- name: Install TensorRT (arm64)
76-
if: matrix.platform == 'arm64'
76+
if: matrix.platform == 'arm64' && !startsWith(matrix.cuda_version, '12')
7777
run: |
7878
apt-cache search tensorrt | awk '{print "Package: "$1"\nPin: version *+cuda13.0\nPin-Priority: 1001\n"}' | tee /etc/apt/preferences.d/tensorrt-cuda13.0.pref > /dev/null
7979
apt update

libs/qec/lib/decoders/plugins/trt_decoder/CMakeLists.txt

Lines changed: 73 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,11 @@ set(MODULE_NAME "cudaq-qec-trt-decoder")
1313
project(${MODULE_NAME})
1414

1515
# Set default TensorRT root if not provided
16-
if(NOT DEFINED TENSORRT_ROOT)
17-
message(STATUS "TENSORRT_ROOT not provided, using default: ${TENSORRT_ROOT}")
18-
else()
16+
if(DEFINED TENSORRT_ROOT)
1917
message(STATUS "Using TENSORRT_ROOT: ${TENSORRT_ROOT}")
2018
endif()
2119

22-
# Specify the source file for the plugin
23-
set(PLUGIN_SRC
24-
trt_decoder.cpp
25-
# Add additional source files here as needed
26-
)
27-
28-
find_package(CUDAToolkit REQUIRED)
29-
30-
# Create the shared library
31-
add_library(${MODULE_NAME} SHARED ${PLUGIN_SRC})
32-
33-
# Check for TensorRT availability
20+
# Check for TensorRT availability first
3421
find_path(TENSORRT_INCLUDE_DIR NvInfer.h
3522
PATHS
3623
${TENSORRT_ROOT}/include
@@ -46,6 +33,7 @@ find_library(TENSORRT_LIBRARY nvinfer
4633
PATHS
4734
${TENSORRT_ROOT}/lib
4835
/usr/lib/x86_64-linux-gnu
36+
/usr/lib/aarch64-linux-gnu
4937
/usr/local/cuda/lib64
5038
/usr/local/tensorrt/lib
5139
/opt/tensorrt/lib
@@ -56,89 +44,101 @@ find_library(TENSORRT_ONNX_LIBRARY nvonnxparser
5644
PATHS
5745
${TENSORRT_ROOT}/lib
5846
/usr/lib/x86_64-linux-gnu
47+
/usr/lib/aarch64-linux-gnu
5948
/usr/local/cuda/lib64
6049
/usr/local/tensorrt/lib
6150
/opt/tensorrt/lib
6251
NO_DEFAULT_PATH
6352
)
6453

54+
# Only build the module if TensorRT is found
6555
if(TENSORRT_INCLUDE_DIR AND TENSORRT_LIBRARY AND TENSORRT_ONNX_LIBRARY)
6656
message(STATUS "TensorRT found: ${TENSORRT_INCLUDE_DIR}")
6757
message(STATUS "TensorRT library: ${TENSORRT_LIBRARY}")
6858
message(STATUS "TensorRT ONNX parser: ${TENSORRT_ONNX_LIBRARY}")
69-
target_compile_definitions(${MODULE_NAME} PRIVATE TENSORRT_AVAILABLE)
70-
else()
71-
message(WARNING "TensorRT not found. Building decoder without TensorRT support.")
72-
message(WARNING "TENSORRT_INCLUDE_DIR: ${TENSORRT_INCLUDE_DIR}")
73-
message(WARNING "TENSORRT_LIBRARY: ${TENSORRT_LIBRARY}")
74-
message(WARNING "TENSORRT_ONNX_LIBRARY: ${TENSORRT_ONNX_LIBRARY}")
75-
endif()
7659

77-
# Set the include directories for dependencies
78-
target_include_directories(${MODULE_NAME}
79-
PUBLIC
80-
${CMAKE_SOURCE_DIR}/libs/qec/include
81-
${CMAKE_SOURCE_DIR}/libs/core/include
82-
)
60+
# Specify the source file for the plugin
61+
set(PLUGIN_SRC
62+
trt_decoder.cpp
63+
# Add additional source files here as needed
64+
)
65+
66+
find_package(CUDAToolkit REQUIRED)
8367

84-
# Add TensorRT include directory if found
85-
if(TENSORRT_INCLUDE_DIR)
86-
target_include_directories(${MODULE_NAME} PRIVATE
68+
# Create the shared library
69+
add_library(${MODULE_NAME} SHARED ${PLUGIN_SRC})
70+
71+
# Set compile definitions
72+
target_compile_definitions(${MODULE_NAME} PRIVATE TENSORRT_AVAILABLE)
73+
74+
# Set the include directories for dependencies
75+
target_include_directories(${MODULE_NAME}
76+
PUBLIC
77+
${CMAKE_SOURCE_DIR}/libs/qec/include
78+
${CMAKE_SOURCE_DIR}/libs/core/include
79+
PRIVATE
8780
${TENSORRT_INCLUDE_DIR}
8881
${CUDAToolkit_INCLUDE_DIRS}
8982
)
90-
endif()
91-
92-
# Link with required libraries
93-
target_link_libraries(${MODULE_NAME}
94-
PUBLIC
95-
cudaqx-core
96-
cudaq::cudaq-operator
97-
PRIVATE
98-
cudaq::cudaq-common
99-
cudaq-qec
100-
)
10183

102-
# Conditionally link TensorRT libraries
103-
if(TENSORRT_LIBRARY AND TENSORRT_ONNX_LIBRARY)
104-
target_link_libraries(${MODULE_NAME} PRIVATE
84+
# Link with required libraries
85+
target_link_libraries(${MODULE_NAME}
86+
PUBLIC
87+
cudaqx-core
88+
cudaq::cudaq-operator
89+
PRIVATE
90+
cudaq::cudaq-common
91+
cudaq-qec
10592
${TENSORRT_LIBRARY}
10693
${TENSORRT_ONNX_LIBRARY}
10794
CUDA::cudart
10895
)
109-
endif()
110-
111-
set_target_properties(${MODULE_NAME} PROPERTIES
112-
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/decoder-plugins
113-
)
11496

115-
# RPATH configuration
116-
# ==============================================================================
97+
set_target_properties(${MODULE_NAME} PROPERTIES
98+
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/decoder-plugins
99+
)
117100

118-
if (NOT SKBUILD)
119-
set_target_properties(${MODULE_NAME} PROPERTIES
120-
BUILD_RPATH "$ORIGIN:${TENSORRT_ROOT}/lib"
121-
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
122-
)
101+
# RPATH configuration
102+
# ==============================================================================
103+
104+
if (NOT SKBUILD)
105+
if(DEFINED TENSORRT_ROOT)
106+
set(TENSORRT_BUILD_RPATH "$ORIGIN:${TENSORRT_ROOT}/lib")
107+
set(TENSORRT_INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:${TENSORRT_ROOT}/lib")
108+
else()
109+
set(TENSORRT_BUILD_RPATH "$ORIGIN")
110+
set(TENSORRT_INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs")
111+
endif()
112+
set_target_properties(${MODULE_NAME} PROPERTIES
113+
BUILD_RPATH "${TENSORRT_BUILD_RPATH}"
114+
INSTALL_RPATH "${TENSORRT_INSTALL_RPATH}"
115+
)
116+
117+
# Let CMake automatically add paths of linked libraries to the RPATH:
118+
set_target_properties(${MODULE_NAME} PROPERTIES
119+
INSTALL_RPATH_USE_LINK_PATH TRUE)
120+
else()
121+
# CUDA-Q install its libraries in site-packages/lib (or dist-packages/lib)
122+
# Thus, we need the $ORIGIN/../lib
123+
set_target_properties(${MODULE_NAME} PROPERTIES
124+
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
125+
)
126+
endif()
127+
128+
# Install
129+
# ==============================================================================
130+
131+
install(TARGETS ${MODULE_NAME}
132+
COMPONENT qec-lib-plugins
133+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/decoder-plugins
134+
)
123135

124-
# Let CMake automatically add paths of linked libraries to the RPATH:
125-
set_target_properties(${MODULE_NAME} PROPERTIES
126-
INSTALL_RPATH_USE_LINK_PATH TRUE)
127136
else()
128-
# CUDA-Q install its libraries in site-packages/lib (or dist-packages/lib)
129-
# Thus, we need the $ORIGIN/../lib
130-
set_target_properties(${MODULE_NAME} PROPERTIES
131-
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib:$ORIGIN/../../../tensorrt_libs"
132-
)
137+
message(WARNING "TensorRT not found. Skipping ${MODULE_NAME} build.")
138+
message(WARNING "TENSORRT_INCLUDE_DIR: ${TENSORRT_INCLUDE_DIR}")
139+
message(WARNING "TENSORRT_LIBRARY: ${TENSORRT_LIBRARY}")
140+
message(WARNING "TENSORRT_ONNX_LIBRARY: ${TENSORRT_ONNX_LIBRARY}")
133141
endif()
134142

135-
# Install
136-
# ==============================================================================
137-
138-
install(TARGETS ${MODULE_NAME}
139-
COMPONENT qec-lib-plugins
140-
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/decoder-plugins
141-
)
142-
143143

144144

0 commit comments

Comments
 (0)