diff options
author | Sayak Biswas <sayakAMD> | 2021-10-21 21:57:17 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-10-22 13:15:29 +0300 |
commit | d092933abbadb3a6d5ab53a0b2b3b865cd5c9079 (patch) | |
tree | 9d44286512efc1db894257fa9ed786a5049bb41b /intern/cycles/kernel/CMakeLists.txt | |
parent | d1fcf93f039b0546dfd01c33daf50bd135e34344 (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.txt | 57 |
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}) |