Skip to content

Commit 2d96089

Browse files
committed
GPU Parameters: Add script to generate parameter file from parameter list csv/json and architecture
1 parent aa7e258 commit 2d96089

File tree

7 files changed

+72
-10
lines changed

7 files changed

+72
-10
lines changed

GPU/GPUTracking/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,10 +292,10 @@ foreach(GPU_PARAM_JSON_FILE IN LISTS GPU_PARAM_JSON)
292292
math(EXPR GPU_PARAM_JSON_N_FILES "${GPU_PARAM_JSON_N_FILES} + 1")
293293
endforeach()
294294

295-
include(cmake/gpu_param_header_generator.cmake)
295+
include(Definitions/Parameters/gpu_param_header_generator.cmake)
296296
set(GPU_DEFAULT_PARAMS_HEADER ${ON_THE_FLY_DIR}/GPUDefParametersDefaults.h)
297297
set(GPU_DEFAULT_PARAMS_HEADER_DEVICE ${ON_THE_FLY_DIR}/GPUDefParametersDefaultsDevice.h)
298-
generate_gpu_param_header("${GPU_PARAM_JSON_FILES}" "ALL" "${GPU_DEFAULT_PARAMS_HEADER}" "${GPU_DEFAULT_PARAMS_HEADER_DEVICE}" GPU_CONST_PARAM_ARCHITECTUES) # generate header with default GPU parameters, arch selected by CMake variables
298+
generate_gpu_param_header("${GPU_PARAM_JSON_FILES}" "ALL" "${GPU_DEFAULT_PARAMS_HEADER}" "${GPU_DEFAULT_PARAMS_HEADER_DEVICE}" GPU_CONST_PARAM_ARCHITECTUES) # generate header with default GPU parameters for all architectures
299299
list(APPEND GENERATED_HEADERS_LIST ${GPU_DEFAULT_PARAMS_HEADER} ${GPU_DEFAULT_PARAMS_HEADER_DEVICE})
300300

301301
set(HDRS_INSTALL ${HDRS_INSTALL} ${GENERATED_HEADERS_LIST})

GPU/GPUTracking/cmake/gpu_param_header_generator.cmake renamed to GPU/GPUTracking/Definitions/Parameters/gpu_param_header_generator.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,9 @@ function(generate_gpu_param_header GPU_PARAM_JSON_FILES ARCH_LIST OUT_HEADER OUT
110110

111111
string(APPEND TMP_HEADER_DEVICE "#if 0\n")
112112
foreach(ARCH IN LISTS ARCH_LIST)
113+
if(do_all_architectures EQUAL -1 AND do_auto_architectures EQUAL -1 AND NOT generate_gpu_param_header_OUTPUT_TMP_${ARCH})
114+
message(FATAL_ERROR "No parameters defined for architecture ${ARCH}")
115+
endif()
113116
string(APPEND TMP_HEADER_DEVICE "\n#elif defined(GPUCA_GPUTYPE_${ARCH})\n")
114117
string(APPEND TMP_HEADER_DEVICE ${generate_gpu_param_header_OUTPUT_TMP_${ARCH}})
115118
endforeach()
@@ -129,5 +132,4 @@ function(generate_gpu_param_header GPU_PARAM_JSON_FILES ARCH_LIST OUT_HEADER OUT
129132
string(APPEND TMP_HEADER_DEVICE "\n#endif // GPUDEFPARAMETERSDEFAULTSDEVICE_H\n")
130133
file(GENERATE OUTPUT "${OUT_HEADER}" CONTENT "${TMP_HEADER}")
131134
file(GENERATE OUTPUT "${OUT_HEADER_DEVICE}" CONTENT "${TMP_HEADER_DEVICE}")
132-
message(STATUS "Generated ${OUT_HEADER} and ${OUT_HEADER_DEVICE}")
133135
endfunction()

GPU/GPUTracking/Standalone/Benchmark/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
3030
target_link_libraries(${targetName} PUBLIC GPUTracking)
3131
endif()
3232

33+
install(DIRECTORY ../tools DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU)
34+
install(DIRECTORY ../../Definitions/Parameters/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/tools FILES_MATCHING REGEX "\\.(python|sh|cmake)")
3335
target_compile_definitions(${targetName} PRIVATE $<TARGET_PROPERTY:O2::GPUTracking,COMPILE_DEFINITIONS>)
3436

3537
if(ROOT_FOUND)

GPU/GPUTracking/Standalone/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,4 +246,3 @@ install(TARGETS ca TPCFastTransformation standalone_support)
246246
install(FILES "cmake/makefile" DESTINATION "${CMAKE_INSTALL_PREFIX}")
247247
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${O2_DIR} ${CMAKE_INSTALL_PREFIX}/src)")
248248
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/config.cmake ${CMAKE_INSTALL_PREFIX}/config.cmake)")
249-
install(DIRECTORY tools DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU)
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#!/bin/bash
2+
3+
if [[ -z $3 ]]; then
4+
echo "Usage: dumpGPUParamByArch.sh [JSON or CSV parameter file] [Architecture] [Output File]"
5+
exit 1
6+
fi
7+
8+
if ! command -v root &> /dev/null; then
9+
echo "Cannot run root, please make sure ROOT is available and in the parh"
10+
exit 1
11+
fi
12+
13+
if [[ ! -f $1 ]]; then
14+
echo "Input file $1 does not exist"
15+
exit 1
16+
fi
17+
18+
if [[ -f "include/GPU/GPUDefParametersLoad.inc" ]]; then
19+
LOADDIR=$(realpath "include/GPU")
20+
elif [[ -f "$O2_ROOT/include/GPU/GPUDefParametersLoad.inc" ]]; then
21+
LOADDIR=$(realpath "$O2_ROOT/include/GPU/")
22+
else
23+
echo "Cannot find GPUDefParametersLoad.inc, please run from standalone benchmark folder or set \$O2_ROOT to the standalone or O2 installation"
24+
exit 1
25+
fi
26+
27+
set -e
28+
29+
TMPDIR=$(mktemp -d)
30+
if [[ $? != 0 ]]; then
31+
echo "Failed to create a temporary directory"
32+
exit 1
33+
fi
34+
35+
BASE_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))
36+
37+
if [[ $1 =~ \.csv$ ]]; then
38+
"${BASE_DIR}"/../../Definitions/Parameters/csv_to_json.sh $1 > "$TMPDIR"/temp.json
39+
JSON_FILE="$TMPDIR"/temp.json
40+
else
41+
JSON_FILE=$(realpath $1)
42+
fi
43+
44+
cat <<EOT > "${TMPDIR}"/CMakeLists.txt
45+
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
46+
project(DumpGPUParam NONE)
47+
include($BASE_DIR/../../Definitions/Parameters/gpu_param_header_generator.cmake)
48+
generate_gpu_param_header("${JSON_FILE}" "$2" "${TMPDIR}/GPUDefParametersDefaultsOnTheFly.h" "${TMPDIR}/GPUDefParametersDefaultsDeviceOnTheFly.h")
49+
EOT
50+
51+
cmake -B "${TMPDIR}" -S"${TMPDIR}"
52+
53+
echo -e "#define GPUCA_GPUTYPE_$2\n" \
54+
"#define PARAMETER_FILE \"${TMPDIR}/GPUDefParametersDefaultsOnTheFly.h\"\n" \
55+
"gInterpreter->AddIncludePath(\"${TMPDIR}\");gInterpreter->AddIncludePath(\"${LOADDIR}\");\n" \
56+
".x $BASE_DIR/dumpGPUDefParam.C(\"$3\")\n.q\n" | root -l -b
57+
58+
echo -e "\nCreated $3 with parameters for $2 architecture from $1"
59+
60+
rm -Rf "${TMPDIR}"

GPU/GPUTracking/display/CMakeLists.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,13 @@ if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
151151
add_library(O2::${MODULE} ALIAS ${MODULE})
152152
target_link_libraries(${targetName} PUBLIC O2::GPUTracking)
153153
install(TARGETS ${MODULE})
154-
155-
install(DIRECTORY filterMacros/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter FILES_MATCHING PATTERN "*.C")
156-
get_property(GPU_DISPLAY_INCLUDE_PATH DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
157-
configure_file(filterMacros/setinclude.sh.in setinclude.sh @ONLY)
158-
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/setinclude.sh PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter)
159154
endif()
160155

161156
install(FILES ${HDRS} ${HDRS_INSTALL} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GPU)
157+
install(DIRECTORY filterMacros/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter FILES_MATCHING PATTERN "*.C")
158+
get_property(GPU_DISPLAY_INCLUDE_PATH DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
159+
configure_file(filterMacros/setinclude.sh.in setinclude.sh @ONLY)
160+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/setinclude.sh PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter)
162161

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/bin/bash
2-
export ROOC_INCLUDE_PATH="@GPU_DISPLAY_INCLUDE_PATH@"
2+
export ROOT_INCLUDE_PATH="@GPU_DISPLAY_INCLUDE_PATH@"

0 commit comments

Comments
 (0)