GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — AliceO2/dependencies/FindO2GPU.cmake at dev · MFTDecoding/AliceO2 Expand file tree/ Copy pathFindO2GPU.cmakeMore file actions 224 lines (214 loc) · 8.53 KB / Copy pathFindO2GPU.cmakeFile metadata and controls224 lines (214 loc) · 8.53 KB 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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 # Copyright 2019-2020 CERN and copyright holders of ALICE O2. # See https://alice-o2.web.cern.ch/copyright for details of the copyright holders. # All rights not expressly granted are reserved. # # This software is distributed under the terms of the GNU General Public # License v3 (GPL Version 3), copied verbatim in the file "COPYING". # # In applying this license CERN does not waive the privileges and immunities # granted to it by virtue of its status as an Intergovernmental Organization # or submit itself to any jurisdiction. if(NOT DEFINED ENABLE_CUDA) set(ENABLE_CUDA "AUTO") endif() if(NOT DEFINED ENABLE_OPENCL1) set(ENABLE_OPENCL1 "AUTO") endif() if(NOT DEFINED ENABLE_OPENCL2) set(ENABLE_OPENCL2 "AUTO") endif() if(NOT DEFINED ENABLE_HIP) set(ENABLE_HIP "AUTO") endif() string(TOUPPER "${ENABLE_CUDA}" ENABLE_CUDA) string(TOUPPER "${ENABLE_OPENCL1}" ENABLE_OPENCL1) string(TOUPPER "${ENABLE_OPENCL2}" ENABLE_OPENCL2) string(TOUPPER "${ENABLE_HIP}" ENABLE_HIP) # Detect and enable CUDA if(ENABLE_CUDA) set(CMAKE_CUDA_STANDARD 17) set(CMAKE_CUDA_STANDARD_REQUIRED TRUE) include(CheckLanguage) check_language(CUDA) if(CUDA_GCCBIN) message(STATUS "Using as CUDA GCC version: ${CUDA_GCCBIN}") set(CMAKE_CUDA_HOST_COMPILER "${CUDA_GCCBIN}") if (NOT CMAKE_CUDA_COMPILER) set(CMAKE_CUDA_COMPILER "nvcc") #check_language does not treat the HOST_COMPILER flag correctly, we force it and will fail below if wrong. endif() endif() if(CMAKE_CUDA_COMPILER) enable_language(CUDA) get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES) if (ENABLE_CUDA STREQUAL "AUTO") set(FAILURE_SEVERITY STATUS) else() set(FAILURE_SEVERITY FATAL_ERROR) endif() if(NOT CUDA IN_LIST LANGUAGES) message(${FAILURE_SEVERITY} "CUDA was found but cannot be enabled") set(CMAKE_CUDA_COMPILER OFF) endif() find_path(THRUST_INCLUDE_DIR thrust/version.h PATHS ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} NO_DEFAULT_PATH) if(THRUST_INCLUDE_DIR STREQUAL "THRUST_INCLUDE_DIR-NOTFOUND") message(${FAILURE_SEVERITY} "CUDA found but thrust not available") set(CMAKE_CUDA_COMPILER OFF) endif() if (NOT CMAKE_CUDA_COMPILER_VERSION VERSION_GREATER_EQUAL "11.4") message(${FAILURE_SEVERITY} "CUDA Version too old: ${CMAKE_CUDA_COMPILER_VERSION}, 11.4 required") set(CMAKE_CUDA_COMPILER OFF) endif() endif() if(CMAKE_CUDA_COMPILER) # Forward CXX flags to CUDA C++ Host compiler (for warnings, gdb, etc.) STRING(REGEX REPLACE "\-std=[^ ]*" "" CMAKE_CXX_FLAGS_NOSTD ${CMAKE_CXX_FLAGS}) # Need to strip c++17 imposed by alidist defaults set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"${CMAKE_CXX_FLAGS_NOSTD}\" --expt-relaxed-constexpr --extended-lambda --allow-unsupported-compiler -Xptxas -v") set(CMAKE_CUDA_FLAGS_DEBUG "${CMAKE_CUDA_FLAGS_DEBUG} -lineinfo -Xcompiler \"${CMAKE_CXX_FLAGS_DEBUG}\" -Xptxas -O0 -Xcompiler -O0") if(NOT CMAKE_BUILD_TYPE STREQUAL "DEBUG") set(CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE} "${CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE}} -Xcompiler \"${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}\" -Xptxas -O4 -Xcompiler -O4 -use_fast_math --ftz=true") endif() if(CMAKE_CXX_FLAGS MATCHES "(^| )-Werror( |$)") set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Werror=cross-execution-space-call") endif() if(CUDA_COMPUTETARGET) set(CMAKE_CUDA_ARCHITECTURES ${CUDA_COMPUTETARGET} CACHE STRING "" FORCE) else() set(CMAKE_CUDA_ARCHITECTURES 61-virtual CACHE STRING "" FORCE) endif() set(CUDA_ENABLED ON) message(STATUS "CUDA found (Version ${CMAKE_CUDA_COMPILER_VERSION})") elseif(NOT ENABLE_CUDA STREQUAL "AUTO") message(FATAL_ERROR "CUDA not found (Compiler: ${CMAKE_CUDA_COMPILER})") else() set(CUDA_ENABLED OFF) endif() endif() # Detect and enable OpenCL 1.2 from AMD if(ENABLE_OPENCL1 OR ENABLE_OPENCL2) find_package(OpenCL) if((ENABLE_OPENCL1 AND NOT ENABLE_OPENCL1 STREQUAL "AUTO") OR (ENABLE_OPENCL2 AND NOT ENABLE_OPENCL2 STREQUAL "AUTO")) set_package_properties(OpenCL PROPERTIES TYPE REQUIRED) else() set_package_properties(OpenCL PROPERTIES TYPE OPTIONAL) endif() endif() if(ENABLE_OPENCL1) if(NOT AMDAPPSDKROOT) set(AMDAPPSDKROOT "$ENV{AMDAPPSDKROOT}") endif() if(OpenCL_FOUND AND OpenCL_VERSION_STRING VERSION_GREATER_EQUAL 1.2 AND AMDAPPSDKROOT AND EXISTS "${AMDAPPSDKROOT}") set(OPENCL1_ENABLED ON) message(STATUS "Found AMD OpenCL 1.2") elseif(NOT ENABLE_OPENCL1 STREQUAL "AUTO") message(FATAL_ERROR "AMD OpenCL 1.2 not available") else() set(OPENCL1_ENABLED OFF) endif() endif() # Detect and enable OpenCL 2.x if(ENABLE_OPENCL2) find_package(OpenCL) find_package(LLVM) if(LLVM_FOUND) find_package(Clang) endif() if(DEFINED ENV{ROCM_PATH}) get_filename_component(ROCM_ROOT "$ENV{ROCM_PATH}" ABSOLUTE) else() set(ROCM_ROOT "/opt/rocm") endif() find_program(CLANG_OCL clang-ocl PATHS "${ROCM_ROOT}/bin") find_program(ROCM_AGENT_ENUMERATOR rocm_agent_enumerator PATHS "${ROCM_ROOT}/bin") find_program(LLVM_SPIRV llvm-spirv) if(Clang_FOUND AND LLVM_FOUND AND LLVM_PACKAGE_VERSION VERSION_GREATER_EQUAL 13.0) set(OPENCL2_COMPATIBLE_CLANG_FOUND ON) endif() if(OpenCL_VERSION_STRING VERSION_GREATER_EQUAL 2.0 AND OPENCL2_COMPATIBLE_CLANG_FOUND AND NOT CLANG_OCL STREQUAL "CLANG_OCL-NOTFOUND") set(OPENCL2_ENABLED_AMD ON) endif() if(OpenCL_VERSION_STRING VERSION_GREATER_EQUAL 2.2 AND OPENCL2_COMPATIBLE_CLANG_FOUND AND NOT LLVM_SPIRV STREQUAL "LLVM_SPIRV-NOTFOUND") set(OPENCL2_ENABLED_SPIRV ON) endif () if(OPENCL2_COMPATIBLE_CLANG_FOUND AND (OpenCL_VERSION_STRING VERSION_GREATER_EQUAL 2.2 OR OPENCL2_ENABLED_AMD OR OPENCL2_ENABLED_SPIRV)) set(OPENCL2_ENABLED ON) message( STATUS "Found OpenCL 2 (${OpenCL_VERSION_STRING} ; AMD ${OPENCL2_ENABLED_AMD} ${CLANG_OCL} ; SPIR-V ${OPENCL2_ENABLED_SPIRV} ${LLVM_SPIRV} with CLANG ${LLVM_PACKAGE_VERSION})" ) elseif(NOT ENABLE_OPENCL2 STREQUAL "AUTO") message(FATAL_ERROR "OpenCL 2.x not available") else() set(OPENCL2_ENABLED OFF) endif() if (FORCE_OPENCL2_ALL AND NOT(OPENCL2_ENABLED_AMD AND OPENCL2_ENABLED_SPIRV)) message(FATAL_ERROR "Not all OpenCL2 backends available, but requested (AMD ${OPENCL2_ENABLED_AMD} SPIRV ${OPENCL2_ENABLED_SPIRV})") endif() endif() # Detect and enable HIP if(ENABLE_HIP) if(NOT DEFINED HIP_PATH) if(NOT DEFINED ENV{HIP_PATH}) set(HIP_PATH "/opt/rocm/hip" CACHE PATH "Path to which HIP has been installed") else() set(HIP_PATH $ENV{HIP_PATH} CACHE PATH "Path to which HIP has been installed") endif() endif() if(EXISTS "${HIP_PATH}") get_filename_component(hip_ROOT "${HIP_PATH}" ABSOLUTE) if(HIP_AMDGPUTARGET) set(AMDGPU_TARGETS "${HIP_AMDGPUTARGET}" CACHE STRING "AMD GPU targets to compile for" FORCE) set(GPU_TARGETS "${HIP_AMDGPUTARGET}" CACHE STRING "AMD GPU targets to compile for" FORCE) endif() find_package(hip) find_package(hipcub) find_package(rocprim) find_package(rocthrust) if(ENABLE_HIP STREQUAL "AUTO") set_package_properties(hip PROPERTIES TYPE OPTIONAL) set_package_properties(hipcub PROPERTIES TYPE OPTIONAL) set_package_properties(rocprim PROPERTIES TYPE OPTIONAL) set_package_properties(rocthrust PROPERTIES TYPE OPTIONAL) else() set_package_properties(hip PROPERTIES TYPE REQUIRED) set_package_properties(hipcub PROPERTIES TYPE REQUIRED) set_package_properties(rocprim PROPERTIES TYPE REQUIRED) set_package_properties(rocthrust PROPERTIES TYPE REQUIRED) endif() if(hip_FOUND AND hipcub_FOUND AND rocthrust_FOUND AND rocprim_FOUND AND hip_HIPCC_EXECUTABLE) set(HIP_ENABLED ON) set_target_properties(roc::rocthrust PROPERTIES IMPORTED_GLOBAL TRUE) message(STATUS "HIP Found (${hip_HIPCC_EXECUTABLE})") set(O2_HIP_CMAKE_CXX_FLAGS "-fcuda-flush-denormals-to-zero -Wno-invalid-command-line-argument -Wno-unused-command-line-argument -Wno-invalid-constexpr -Wno-ignored-optimization-argument -Wno-unused-private-field") if(HIP_AMDGPUTARGET) set(O2_HIP_CMAKE_CXX_FLAGS "${O2_HIP_CMAKE_CXX_FLAGS} --amdgpu-target=${HIP_AMDGPUTARGET}") endif() else() set(HIP_ENABLED OFF) endif() endif() if(NOT HIP_ENABLED AND NOT ENABLE_HIP STREQUAL "AUTO") message( FATAL_ERROR "HIP requested but HIP_PATH=${HIP_PATH} does not exist" ) endif() endif() # if we end up here without a FATAL, it means we have found the "O2GPU" package set(O2GPU_FOUND TRUE) |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |