File size: 2,587 Bytes
3624d0b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2206380
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
cmake_minimum_required(VERSION 3.20)
project(rclane_runtime LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

if(NOT CMAKE_BUILD_TYPE)
    set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()

find_path(TENSORRT_INCLUDE_DIR NvInferRuntime.h
    HINTS "$ENV{TENSORRT_ROOT}/include"
    PATHS /usr/include /usr/include/aarch64-linux-gnu /usr/local/TensorRT/include
)
find_library(TENSORRT_LIBRARY NAMES nvinfer libnvinfer.so.10
    HINTS "$ENV{TENSORRT_ROOT}/lib" "$ENV{TENSORRT_ROOT}/lib64"
    PATHS /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/aarch64-linux-gnu
)
find_path(CUDA_INCLUDE_DIR cuda_runtime_api.h
    HINTS "$ENV{CUDA_HOME}/include" "$ENV{CUDA_PATH}/include"
    PATHS /usr/local/cuda/include /usr/include
)
find_library(CUDART_LIBRARY NAMES cudart libcudart.so.13 libcudart.so.12
    HINTS "$ENV{CUDA_HOME}/lib64" "$ENV{CUDA_PATH}/lib64"
    PATHS /usr/local/cuda/lib64 /usr/lib/x86_64-linux-gnu
          /usr/lib/aarch64-linux-gnu
)

foreach(required_path
        TENSORRT_INCLUDE_DIR TENSORRT_LIBRARY CUDA_INCLUDE_DIR CUDART_LIBRARY)
    if(NOT ${required_path})
        message(FATAL_ERROR
            "${required_path} was not found; pass -D${required_path}=..."
        )
    endif()
endforeach()

find_package(OpenMP REQUIRED)

add_executable(rclane_runtime
    src/bev.cpp
    src/decoder.cpp
    src/main.cpp
    src/preprocess.cpp
    src/tensorrt_runner.cpp
)
target_include_directories(rclane_runtime PRIVATE
    include
    "${TENSORRT_INCLUDE_DIR}"
    "${CUDA_INCLUDE_DIR}"
)
target_link_libraries(rclane_runtime PRIVATE
    "${TENSORRT_LIBRARY}"
    "${CUDART_LIBRARY}"
    OpenMP::OpenMP_CXX
    dl
)
target_compile_options(rclane_runtime PRIVATE
    -O3 -march=native -Wall -Wextra -Wpedantic
)

get_filename_component(TENSORRT_LIBRARY_DIR "${TENSORRT_LIBRARY}" DIRECTORY)
get_filename_component(CUDART_LIBRARY_DIR "${CUDART_LIBRARY}" DIRECTORY)
set_target_properties(rclane_runtime PROPERTIES
    BUILD_RPATH "${TENSORRT_LIBRARY_DIR};${CUDART_LIBRARY_DIR}"
)

include(CTest)
if(BUILD_TESTING)
    add_executable(rclane_bev_modes_test
        tests/bev_modes_test.cpp
        src/bev.cpp
        src/decoder.cpp
    )
    target_include_directories(rclane_bev_modes_test PRIVATE
        include
        "${TENSORRT_INCLUDE_DIR}"
    )
    target_link_libraries(rclane_bev_modes_test PRIVATE OpenMP::OpenMP_CXX)
    target_compile_options(rclane_bev_modes_test PRIVATE
        -O2 -Wall -Wextra -Wpedantic
    )
    add_test(NAME bev_modes COMMAND rclane_bev_modes_test)
endif()