Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions GPU/GPUTracking/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -292,10 +292,10 @@ foreach(GPU_PARAM_JSON_FILE IN LISTS GPU_PARAM_JSON)
math(EXPR GPU_PARAM_JSON_N_FILES "${GPU_PARAM_JSON_N_FILES} + 1")
endforeach()

include(cmake/gpu_param_header_generator.cmake)
include(Definitions/Parameters/gpu_param_header_generator.cmake)
set(GPU_DEFAULT_PARAMS_HEADER ${ON_THE_FLY_DIR}/GPUDefParametersDefaults.h)
set(GPU_DEFAULT_PARAMS_HEADER_DEVICE ${ON_THE_FLY_DIR}/GPUDefParametersDefaultsDevice.h)
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
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
list(APPEND GENERATED_HEADERS_LIST ${GPU_DEFAULT_PARAMS_HEADER} ${GPU_DEFAULT_PARAMS_HEADER_DEVICE})

set(HDRS_INSTALL ${HDRS_INSTALL} ${GENERATED_HEADERS_LIST})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ function(generate_gpu_param_header GPU_PARAM_JSON_FILES ARCH_LIST OUT_HEADER OUT

string(APPEND TMP_HEADER_DEVICE "#if 0\n")
foreach(ARCH IN LISTS ARCH_LIST)
if(do_all_architectures EQUAL -1 AND do_auto_architectures EQUAL -1 AND NOT generate_gpu_param_header_OUTPUT_TMP_${ARCH})
message(FATAL_ERROR "No parameters defined for architecture ${ARCH}")
endif()
string(APPEND TMP_HEADER_DEVICE "\n#elif defined(GPUCA_GPUTYPE_${ARCH})\n")
string(APPEND TMP_HEADER_DEVICE ${generate_gpu_param_header_OUTPUT_TMP_${ARCH}})
endforeach()
Expand All @@ -129,5 +132,4 @@ function(generate_gpu_param_header GPU_PARAM_JSON_FILES ARCH_LIST OUT_HEADER OUT
string(APPEND TMP_HEADER_DEVICE "\n#endif // GPUDEFPARAMETERSDEFAULTSDEVICE_H\n")
file(GENERATE OUTPUT "${OUT_HEADER}" CONTENT "${TMP_HEADER}")
file(GENERATE OUTPUT "${OUT_HEADER_DEVICE}" CONTENT "${TMP_HEADER_DEVICE}")
message(STATUS "Generated ${OUT_HEADER} and ${OUT_HEADER_DEVICE}")
endfunction()
2 changes: 2 additions & 0 deletions GPU/GPUTracking/Standalone/Benchmark/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
target_link_libraries(${targetName} PUBLIC GPUTracking)
endif()

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

if(ROOT_FOUND)
Expand Down
1 change: 0 additions & 1 deletion GPU/GPUTracking/Standalone/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -246,4 +246,3 @@ install(TARGETS ca TPCFastTransformation standalone_support)
install(FILES "cmake/makefile" DESTINATION "${CMAKE_INSTALL_PREFIX}")
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${O2_DIR} ${CMAKE_INSTALL_PREFIX}/src)")
install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_BINARY_DIR}/config.cmake ${CMAKE_INSTALL_PREFIX}/config.cmake)")
install(DIRECTORY tools DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU)
60 changes: 60 additions & 0 deletions GPU/GPUTracking/Standalone/tools/dumpGPUParamByArch.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

if [[ -z $3 ]]; then
echo "Usage: dumpGPUParamByArch.sh [JSON or CSV parameter file] [Architecture] [Output File]"
exit 1
fi

if ! command -v root &> /dev/null; then
echo "Cannot run root, please make sure ROOT is available and in the parh"
exit 1
fi

if [[ ! -f $1 ]]; then
echo "Input file $1 does not exist"
exit 1
fi

if [[ -f "include/GPU/GPUDefParametersLoad.inc" ]]; then
LOADDIR=$(realpath "include/GPU")
elif [[ -f "$O2_ROOT/include/GPU/GPUDefParametersLoad.inc" ]]; then
LOADDIR=$(realpath "$O2_ROOT/include/GPU/")
else
echo "Cannot find GPUDefParametersLoad.inc, please run from standalone benchmark folder or set \$O2_ROOT to the standalone or O2 installation"
exit 1
fi

set -e

TMPDIR=$(mktemp -d)
if [[ $? != 0 ]]; then
echo "Failed to create a temporary directory"
exit 1
fi

BASE_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))

if [[ $1 =~ \.csv$ ]]; then
"${BASE_DIR}"/../../Definitions/Parameters/csv_to_json.sh $1 > "$TMPDIR"/temp.json
JSON_FILE="$TMPDIR"/temp.json
else
JSON_FILE=$(realpath $1)
fi

cat <<EOT > "${TMPDIR}"/CMakeLists.txt
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
project(DumpGPUParam NONE)
include($BASE_DIR/../../Definitions/Parameters/gpu_param_header_generator.cmake)
generate_gpu_param_header("${JSON_FILE}" "$2" "${TMPDIR}/GPUDefParametersDefaultsOnTheFly.h" "${TMPDIR}/GPUDefParametersDefaultsDeviceOnTheFly.h")
EOT

cmake -B "${TMPDIR}" -S"${TMPDIR}"

echo -e "#define GPUCA_GPUTYPE_$2\n" \
"#define PARAMETER_FILE \"${TMPDIR}/GPUDefParametersDefaultsOnTheFly.h\"\n" \
"gInterpreter->AddIncludePath(\"${TMPDIR}\");gInterpreter->AddIncludePath(\"${LOADDIR}\");\n" \
".x $BASE_DIR/dumpGPUDefParam.C(\"$3\")\n.q\n" | root -l -b

echo -e "\nCreated $3 with parameters for $2 architecture from $1"

rm -Rf "${TMPDIR}"
9 changes: 4 additions & 5 deletions GPU/GPUTracking/display/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,13 @@ if(ALIGPU_BUILD_TYPE STREQUAL "Standalone")
add_library(O2::${MODULE} ALIAS ${MODULE})
target_link_libraries(${targetName} PUBLIC O2::GPUTracking)
install(TARGETS ${MODULE})

install(DIRECTORY filterMacros/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter FILES_MATCHING PATTERN "*.C")
get_property(GPU_DISPLAY_INCLUDE_PATH DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
configure_file(filterMacros/setinclude.sh.in setinclude.sh @ONLY)
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)
endif()

install(FILES ${HDRS} ${HDRS_INSTALL} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/GPU)
install(DIRECTORY filterMacros/ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/GPU/displayTrackFilter FILES_MATCHING PATTERN "*.C")
get_property(GPU_DISPLAY_INCLUDE_PATH DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
configure_file(filterMacros/setinclude.sh.in setinclude.sh @ONLY)
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)

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

Expand Down
2 changes: 1 addition & 1 deletion GPU/GPUTracking/display/filterMacros/setinclude.sh.in
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#!/bin/bash
export ROOC_INCLUDE_PATH="@GPU_DISPLAY_INCLUDE_PATH@"
export ROOT_INCLUDE_PATH="@GPU_DISPLAY_INCLUDE_PATH@"
16 changes: 6 additions & 10 deletions dependencies/FindO2GPU.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# or submit itself to any jurisdiction.

# NOTE!!!! - Whenever this file is changed, move it over to alidist/resources
# FindO2GPU.cmake Version 11
# FindO2GPU.cmake Version 13

set(CUDA_COMPUTETARGET_DEFAULT_FULL 80-real 86-real 89-real 120-real 75-virtual)
set(HIP_AMDGPUTARGET_DEFAULT_FULL gfx906;gfx908)
Expand Down Expand Up @@ -65,7 +65,6 @@ function(detect_gpu_arch backend) # Detect GPU architecture, optionally filterri
else()
set(CUDA_TARGET TESLA)
endif()
message(STATUS "Using optimized CUDA settings for ${CUDA_TARGET} GPU (sm_${CUDA_FIRST_TARGET})")

string(REGEX MATCH "^[ \t\r\n]*gfx[0-9]+" HIP_FIRST_TARGET "${HIP_AMDGPUTARGET}")
string(STRIP "${HIP_FIRST_TARGET}" HIP_FIRST_TARGET)
Expand All @@ -87,12 +86,13 @@ function(detect_gpu_arch backend) # Detect GPU architecture, optionally filterri
else()
set(HIP_TARGET VEGA)
endif()
message(STATUS "Using optimized HIP settings for ${HIP_TARGET} GPU (gfx${HIP_FIRST_TARGET})")

if(backend STREQUAL "CUDA") # CUDA filter
message(STATUS "Using optimized CUDA settings for ${CUDA_TARGET} GPU (sm_${CUDA_FIRST_TARGET})")
set(TARGET_ARCH "${CUDA_TARGET}" PARENT_SCOPE)
elseif(backend STREQUAL "HIP") # HIP filter
set(TARGET_ARCH "${HIP_TARGET}" PARENT_SCOPE)
message(STATUS "Using optimized HIP settings for ${HIP_TARGET} GPU (gfx${HIP_FIRST_TARGET})")
elseif(backend STREQUAL "ALL" OR backend STREQUAL "AUTO") # Return all / enabled backends
set(TARGET_ARCH)
if(CUDA_ENABLED OR backend STREQUAL "ALL")
Expand Down Expand Up @@ -194,8 +194,6 @@ if(ENABLE_CUDA)
if(THRUST_INCLUDE_DIR STREQUAL "THRUST_INCLUDE_DIR-NOTFOUND")
message(${FAILURE_SEVERITY} "CUDA found but thrust not available, looked under: ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}")
set(CMAKE_CUDA_COMPILER OFF)
else()
message(STATUS "Thrust found in the path: ${THRUST_INCLUDE_DIR}")
endif()
if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "12.8")
message(${FAILURE_SEVERITY} "CUDA Version too old: ${CMAKE_CUDA_COMPILER_VERSION}, 12.8 required")
Expand Down Expand Up @@ -278,15 +276,14 @@ if(ENABLE_OPENCL)
AND NOT LLVM_SPIRV STREQUAL "LLVM_SPIRV-NOTFOUND"
AND OPENCL_COMPATIBLE_CLANG_FOUND)
set(OPENCL_ENABLED_SPIRV ON)
message(STATUS "Using CLANG ${LLVM_CLANG} and ${LLVM_SPIRV} for SPIR-V compilation")
endif ()
if(OPENCL_COMPATIBLE_CLANG_FOUND AND
(OpenCL_VERSION_STRING VERSION_GREATER_EQUAL 2.2
OR OPENCL_ENABLED_SPIRV))
set(OPENCL_ENABLED ON)
message(STATUS "Found OpenCL 2 (${OpenCL_VERSION_STRING} SPIR-V ${OPENCL_ENABLED_SPIRV} with CLANG ${LLVM_PACKAGE_VERSION})")
message(STATUS "Found OpenCL ${OpenCL_VERSION_STRING} (SPIR-V ${OPENCL_ENABLED_SPIRV} ${LLVM_CLANG} ${LLVM_PACKAGE_VERSION} ${LLVM_SPIRV})")
elseif(NOT ENABLE_OPENCL STREQUAL "AUTO")
message(FATAL_ERROR "OpenCL 2.x not available")
message(FATAL_ERROR "OpenCL >= 2.x not available")
else()
set(OPENCL_ENABLED OFF)
endif()
Expand Down Expand Up @@ -347,7 +344,6 @@ if(ENABLE_HIP)
set(CMAKE_HIP_HOST_COMPILER "$ENV{GCC_TOOLCHAIN_ROOT}/bin/gcc")
endif()
enable_language(HIP)
message(STATUS "HIP language enabled: ${CMAKE_HIP_COMPILER}")
endif()
elseif(NOT ENABLE_HIP STREQUAL "AUTO")
message(FATAL_ERROR "HIP requested, but CMAKE_PREFIX_PATH env variable does not contain rocm folder!")
Expand All @@ -373,7 +369,7 @@ if(ENABLE_HIP)
if(HIP_AMDGPUTARGET)
set(CMAKE_HIP_ARCHITECTURES "${HIP_AMDGPUTARGET}")
endif()
message(STATUS "HIP Found (${hip_HIPCC_EXECUTABLE} version ${hip_VERSION}, Architectures ${CMAKE_HIP_ARCHITECTURES})")
message(STATUS "HIP Found (${hip_HIPCC_EXECUTABLE} version ${hip_VERSION}, ${CMAKE_HIP_COMPILER}, Architectures ${CMAKE_HIP_ARCHITECTURES})")
else()
set(HIP_ENABLED OFF)
endif()
Expand Down
Loading