Skip to content

Commit 7e080ff

Browse files
committed
GPU CMake: Use FILE GENERATE to generate Default Parameter Headers to track changes and rerun if necessary
1 parent 98ce6ee commit 7e080ff

File tree

2 files changed

+18
-24
lines changed

2 files changed

+18
-24
lines changed

GPU/GPUTracking/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ if(GPUCA_OVERRIDE_PARAMETER_FILE)
112112
else()
113113
set(GPU_PARAM_JSON ${CMAKE_CURRENT_SOURCE_DIR}/Definitions/Parameters/GPUParameters.csv)
114114
endif()
115+
set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${GPU_PARAM_JSON}")
116+
115117
get_filename_component(GPU_PARAM_JSON_EXT ${GPU_PARAM_JSON} EXT)
116118
string(TOLOWER "${GPU_PARAM_JSON_EXT}" GPU_PARAM_JSON_EXT)
117119
if(GPU_PARAM_JSON_EXT STREQUAL .csv)

GPU/GPUTracking/cmake/gpu_param_header_generator.cmake

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,15 @@ function(generate_gpu_param_header GPU_ARCH OUT_HEADER)
8080
set(TARGET_ARCH ${GPU_ARCH})
8181
endif()
8282
file(READ "${GPU_PARAM_JSON}" JSON_CONTENT)
83-
set(TMP_HEADER "${OUT_HEADER}.tmp")
84-
file(WRITE "${TMP_HEADER}" "#ifndef GPUDEFPARAMETERSDEFAULTS_H\n#define GPUDEFPARAMETERSDEFAULTS_H\n\n")
85-
file(APPEND "${TMP_HEADER}" "// This file is auto-generated from gpu_params.json. Do not edit directly.\n")
83+
set(TMP_HEADER "#ifndef GPUDEFPARAMETERSDEFAULTS_H\n#define GPUDEFPARAMETERSDEFAULTS_H\n\n")
84+
string(APPEND TMP_HEADER "// This file is auto-generated from gpu_params.json. Do not edit directly.\n")
8685
string(REPLACE "," ";" ARCH_LIST "${TARGET_ARCH}")
87-
file(APPEND "${TMP_HEADER}" "// Architectures: ${TARGET_ARCH}\n\n")
88-
file(APPEND "${TMP_HEADER}" "#if defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS) // Avoid including for RTC generation besides normal include protection.\n\n")
86+
string(APPEND TMP_HEADER "// Architectures: ${TARGET_ARCH}\n\n")
87+
string(APPEND TMP_HEADER "#if defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS) // Avoid including for RTC generation besides normal include protection.\n\n")
8988

9089
# Types
9190
set(TYPES CORE LB PAR)
9291
# Per architecture definitions
93-
set(_first TRUE)
9492
generate_macros("${JSON_CONTENT}" TMP_OUTPUT "${TYPES}" "${ARCH_LIST};default;default_cpu" "JSON_ARCHITECTURES")
9593
list(FIND ARCH_LIST "ALL" do_all_architectures)
9694
if(ARGC GREATER 2)
@@ -99,31 +97,25 @@ function(generate_gpu_param_header GPU_ARCH OUT_HEADER)
9997
if(do_all_architectures GREATER -1)
10098
set(ARCH_LIST ${JSON_ARCHITECTURES})
10199
endif()
100+
string(APPEND TMP_HEADER "#if 0\n")
102101
foreach(ARCH IN LISTS ARCH_LIST)
103-
if(_first)
104-
file(APPEND "${TMP_HEADER}" "#if defined(GPUCA_GPUTYPE_${ARCH})\n\n")
105-
set(_first FALSE)
106-
else()
107-
file(APPEND "${TMP_HEADER}" "#elif defined(GPUCA_GPUTYPE_${ARCH})\n\n")
108-
endif()
109-
file(APPEND "${TMP_HEADER}" ${TMP_OUTPUT_${ARCH}})
102+
string(APPEND TMP_HEADER "\n#elif defined(GPUCA_GPUTYPE_${ARCH})\n")
103+
string(APPEND TMP_HEADER ${TMP_OUTPUT_${ARCH}})
110104
endforeach()
111-
if(NOT _first)
112-
file(APPEND "${TMP_HEADER}" "#else\n#error GPU TYPE NOT SET\n#endif\n")
113-
endif()
105+
string(APPEND TMP_HEADER "#else\n#error GPU TYPE NOT SET\n#endif\n")
114106

115107
# Default parameters
116-
file(APPEND "${TMP_HEADER}" "\n// Default parameters if not defined for the target architecture\n\n")
117-
file(APPEND "${TMP_HEADER}" ${TMP_OUTPUT_default})
118-
file(APPEND "${TMP_HEADER}" "#endif // defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS)\n\n")
108+
string(APPEND TMP_HEADER "\n// Default parameters if not defined for the target architecture\n\n")
109+
string(APPEND TMP_HEADER ${TMP_OUTPUT_default})
110+
string(APPEND TMP_HEADER "#endif // defined(GPUCA_GPUCODE) && !defined(GPUCA_GPUCODE_GENRTC) && !defined(GPUCA_GPUCODE_NO_LAUNCH_BOUNDS)\n\n")
119111

120112
# CPU fallback
121-
file(APPEND "${TMP_HEADER}" "#ifndef GPUCA_GPUCODE_GENRTC // Defaults for non-LB parameters also for CPU fallback\n\n")
122-
file(APPEND "${TMP_HEADER}" ${TMP_OUTPUT_default_cpu})
123-
file(APPEND "${TMP_HEADER}" "\n#endif // GPUCA_GPUCODE_GENRTC\n")
113+
string(APPEND TMP_HEADER "#ifndef GPUCA_GPUCODE_GENRTC // Defaults for non-LB parameters also for CPU fallback\n\n")
114+
string(APPEND TMP_HEADER ${TMP_OUTPUT_default_cpu})
115+
string(APPEND TMP_HEADER "\n#endif // GPUCA_GPUCODE_GENRTC\n")
124116

125-
file(APPEND "${TMP_HEADER}" "\n#endif // GPUDEFPARAMETERSDEFAULTS_H\n")
126-
file(RENAME "${TMP_HEADER}" "${OUT_HEADER}")
117+
string(APPEND TMP_HEADER "\n#endif // GPUDEFPARAMETERSDEFAULTS_H\n")
118+
file(GENERATE OUTPUT "${OUT_HEADER}" CONTENT "${TMP_HEADER}")
127119
message(STATUS "Generated ${OUT_HEADER}")
128120
add_custom_target(GPU_PARAM_HEADER_${GPU_ARCH}_ALL ALL DEPENDS ${OUT_HEADER} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/gpu_param_header_generator.cmake ${GPU_PARAM_JSON})
129121
endfunction()

0 commit comments

Comments
 (0)