Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayak Biswas <sayakAMD>2021-10-21 21:57:17 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-10-22 13:15:29 +0300
commitd092933abbadb3a6d5ab53a0b2b3b865cd5c9079 (patch)
tree9d44286512efc1db894257fa9ed786a5049bb41b /intern/cycles/kernel/CMakeLists.txt
parentd1fcf93f039b0546dfd01c33daf50bd135e34344 (diff)
Cycles: various fixes for HIP and compilation of HIP binaries
* Additional structs added to the hipew loader for device props * Adds hipRTC functions to the loader for future usage * Enables CPU+GPU usage for HIP * Cleanup to the adaptive kernel compilation process * Fix for kernel compilation failures with HIP with latest master Ref T92393, D12958
Diffstat (limited to 'intern/cycles/kernel/CMakeLists.txt')
-rw-r--r--intern/cycles/kernel/CMakeLists.txt57
1 files changed, 26 insertions, 31 deletions
diff --git a/intern/cycles/kernel/CMakeLists.txt b/intern/cycles/kernel/CMakeLists.txt
index 7357c5804ed..6c87c9c32f2 100644
--- a/intern/cycles/kernel/CMakeLists.txt
+++ b/intern/cycles/kernel/CMakeLists.txt
@@ -487,9 +487,6 @@ endif()
# HIP module
if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
- # 64 bit only
- set(HIP_BITS 64)
-
# build for each arch
set(hip_sources device/hip/kernel.cpp
${SRC_HEADERS}
@@ -504,32 +501,41 @@ if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
set(hip_fatbins)
macro(CYCLES_HIP_KERNEL_ADD arch prev_arch name flags sources experimental)
- if(${arch} MATCHES "compute_.*")
- set(format "ptx")
- else()
- set(format "fatbin")
- endif()
+ set(format "fatbin")
set(hip_file ${name}_${arch}.${format})
-
set(kernel_sources ${sources})
if(NOT ${prev_arch} STREQUAL "none")
- if(${prev_arch} MATCHES "compute_.*")
- set(kernel_sources ${kernel_sources} ${name}_${prev_arch}.ptx)
- else()
- set(kernel_sources ${kernel_sources} ${name}_${prev_arch}.fatbin)
- endif()
+ set(kernel_sources ${kernel_sources} ${name}_${prev_arch}.fatbin)
endif()
set(hip_kernel_src "/device/hip/${name}.cpp")
- set(hip_flags ${flags}
+ if(WIN32)
+ set(hip_command ${CMAKE_COMMAND})
+ set(hip_flags
+ -E env "HIP_PATH=${HIP_ROOT_DIR}" "PATH=${HIP_PERL_PATH}"
+ ${HIP_HIPCC_EXECUTABLE}.bat)
+ else()
+ set(hip_command ${HIP_HIPCC_EXECUTABLE})
+ set(hip_flags)
+ endif()
+
+ set(hip_flags
+ ${hip_flags}
+ --amdgpu-target=${arch}
+ ${HIP_HIPCC_FLAGS}
+ --genco
+ ${CMAKE_CURRENT_SOURCE_DIR}${hip_kernel_src}
+ ${flags}
-D CCL_NAMESPACE_BEGIN=
-D CCL_NAMESPACE_END=
-D HIPCC
- -m ${HIP_BITS}
-I ${CMAKE_CURRENT_SOURCE_DIR}/..
-I ${CMAKE_CURRENT_SOURCE_DIR}/device/hip
- --use_fast_math
+ -Wno-parentheses-equality
+ -Wno-unused-value
+ --hipcc-func-supp
+ -ffast-math
-o ${CMAKE_CURRENT_BINARY_DIR}/${hip_file})
if(${experimental})
@@ -541,20 +547,9 @@ if(WITH_CYCLES_HIP_BINARIES AND WITH_CYCLES_DEVICE_HIP)
set(hip_flags ${hip_flags} -D __KERNEL_DEBUG__)
endif()
- if(WITH_NANOVDB)
- set(hip_flags ${hip_flags}
- -D WITH_NANOVDB
- -I "${NANOVDB_INCLUDE_DIR}")
- endif()
-
- add_custom_command(
- OUTPUT ${hip_file}
- COMMAND ${HIP_HIPCC_EXECUTABLE}
- -arch=${arch}
- ${HIP_HIPCC_FLAGS}
- --${format}
- ${CMAKE_CURRENT_SOURCE_DIR}${hip_kernel_src}
- ${hip_flags}
+ add_custom_target(
+ ${hip_file}
+ COMMAND ${hip_command} ${hip_flags}
DEPENDS ${kernel_sources})
delayed_install("${CMAKE_CURRENT_BINARY_DIR}" "${hip_file}" ${CYCLES_INSTALL_PATH}/lib)
list(APPEND hip_fatbins ${hip_file})