From 600e34ccdea61fcea2d30a6dd98e15766b51c237 Mon Sep 17 00:00:00 2001 From: Renjith Ravindran Date: Wed, 26 Mar 2025 00:06:21 -0700 Subject: [PATCH 1/5] rocthrust, rocprim, rocrand, hipcub, ck and aotriton include paths are also required --- caffe2/CMakeLists.txt | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt index 71cc4b31a995c6..e966572331760f 100644 --- a/caffe2/CMakeLists.txt +++ b/caffe2/CMakeLists.txt @@ -1373,12 +1373,62 @@ if(USE_ROCM) set(ROCM_SOURCE_DIR "/opt/rocm") endif() message(INFO "caffe2 ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR}") + find_package(rocthrust) + if(rocthrust_FOUND) + message(STATUS "rocthrust found") + else() #If rocthrust not found + message(FATAL_ERROR "rocthrust not found !!! Install rocthrust to proceed ...") + endif(rocthrust_FOUND) + + find_package(aotriton) + if(aotriton_FOUND) + message(STATUS "aotriton found") + set(AOTRITON_INCLUDE_DIR ${INTERFACE_INCLUDE_DIRECTORIES}) + else() #If aotriton not found + message(FATAL_ERROR "aotriton not found !!! Install aotriton to proceed ...") + endif(aotriton_FOUND) + + find_package(rocprim) + if(rocprim_FOUND) + message(STATUS "rocprim found") + else() #If rocprim not found + message(FATAL_ERROR "rocprim not found !!! Install rocprim to proceed ...") + endif(rocprim_FOUND) + + find_package(hipcub) + if(hipcub_FOUND) + message(STATUS "hipcub found") + else() #If hipcub not found + message(FATAL_ERROR "hipcub not found !!! Install hipcub to proceed ...") + endif(hipcub_FOUND) + + find_package(rocrand) + if(rocrand_FOUND) + message(STATUS "rocrand found") + else() #If rocrand not found + message(FATAL_ERROR "rocrand not found !!! Install rocrand to proceed ...") + endif(rocrand_FOUND) + + find_package(composable_kernel) + if(composable_kernel_FOUND) + message(STATUS "composable-kernel found") + set(CK_INCLUDE_DIR ${INTERFACE_INCLUDE_DIRECTORIES}) + else() #If composable-kernel not found + message(FATAL_ERROR "composable-kernel not found !!! Install composable-kernel to proceed ...") + endif(composable-kernel_FOUND) + target_include_directories(torch_hip PRIVATE ${ROCM_SOURCE_DIR}/include ${ROCM_SOURCE_DIR}/hcc/include ${ROCM_SOURCE_DIR}/rocblas/include ${ROCM_SOURCE_DIR}/hipsparse/include ${ROCM_SOURCE_DIR}/include/rccl/ + ${AOTRITON_INCLUDE_DIR} + ${ROCTHRUST_INCLUDE_DIR} + ${ROCPRIM_INCLUDE_DIR} + ${ROCRAND_INCLUDE_DIR} + ${HIPCUB_INCLUDE_DIR} + ${CK_INCLUDE_DIR} ) if(USE_FLASH_ATTENTION) target_compile_definitions(torch_hip PRIVATE From 65e402e788648e534922b8c0623af75b971c1329 Mon Sep 17 00:00:00 2001 From: Renjith Ravindran Date: Tue, 22 Apr 2025 11:10:37 -0700 Subject: [PATCH 2/5] Revert "rocthrust, rocprim, rocrand, hipcub, ck and aotriton include paths are also required" This reverts commit 7901d8c998ed20f5f0358f351a8a80c28ad93a3b. --- caffe2/CMakeLists.txt | 50 ------------------------------------------- 1 file changed, 50 deletions(-) diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt index e966572331760f..71cc4b31a995c6 100644 --- a/caffe2/CMakeLists.txt +++ b/caffe2/CMakeLists.txt @@ -1373,62 +1373,12 @@ if(USE_ROCM) set(ROCM_SOURCE_DIR "/opt/rocm") endif() message(INFO "caffe2 ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR}") - find_package(rocthrust) - if(rocthrust_FOUND) - message(STATUS "rocthrust found") - else() #If rocthrust not found - message(FATAL_ERROR "rocthrust not found !!! Install rocthrust to proceed ...") - endif(rocthrust_FOUND) - - find_package(aotriton) - if(aotriton_FOUND) - message(STATUS "aotriton found") - set(AOTRITON_INCLUDE_DIR ${INTERFACE_INCLUDE_DIRECTORIES}) - else() #If aotriton not found - message(FATAL_ERROR "aotriton not found !!! Install aotriton to proceed ...") - endif(aotriton_FOUND) - - find_package(rocprim) - if(rocprim_FOUND) - message(STATUS "rocprim found") - else() #If rocprim not found - message(FATAL_ERROR "rocprim not found !!! Install rocprim to proceed ...") - endif(rocprim_FOUND) - - find_package(hipcub) - if(hipcub_FOUND) - message(STATUS "hipcub found") - else() #If hipcub not found - message(FATAL_ERROR "hipcub not found !!! Install hipcub to proceed ...") - endif(hipcub_FOUND) - - find_package(rocrand) - if(rocrand_FOUND) - message(STATUS "rocrand found") - else() #If rocrand not found - message(FATAL_ERROR "rocrand not found !!! Install rocrand to proceed ...") - endif(rocrand_FOUND) - - find_package(composable_kernel) - if(composable_kernel_FOUND) - message(STATUS "composable-kernel found") - set(CK_INCLUDE_DIR ${INTERFACE_INCLUDE_DIRECTORIES}) - else() #If composable-kernel not found - message(FATAL_ERROR "composable-kernel not found !!! Install composable-kernel to proceed ...") - endif(composable-kernel_FOUND) - target_include_directories(torch_hip PRIVATE ${ROCM_SOURCE_DIR}/include ${ROCM_SOURCE_DIR}/hcc/include ${ROCM_SOURCE_DIR}/rocblas/include ${ROCM_SOURCE_DIR}/hipsparse/include ${ROCM_SOURCE_DIR}/include/rccl/ - ${AOTRITON_INCLUDE_DIR} - ${ROCTHRUST_INCLUDE_DIR} - ${ROCPRIM_INCLUDE_DIR} - ${ROCRAND_INCLUDE_DIR} - ${HIPCUB_INCLUDE_DIR} - ${CK_INCLUDE_DIR} ) if(USE_FLASH_ATTENTION) target_compile_definitions(torch_hip PRIVATE From 2b138f47cd2d220dad05531f56e4a60784bc7a58 Mon Sep 17 00:00:00 2001 From: Renjith Ravindran Date: Tue, 22 Apr 2025 11:25:50 -0700 Subject: [PATCH 3/5] Adding mathlib include paths --- caffe2/CMakeLists.txt | 9 +-------- cmake/public/LoadHIP.cmake | 6 ++++++ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt index 71cc4b31a995c6..21b42664f72757 100644 --- a/caffe2/CMakeLists.txt +++ b/caffe2/CMakeLists.txt @@ -1373,13 +1373,6 @@ if(USE_ROCM) set(ROCM_SOURCE_DIR "/opt/rocm") endif() message(INFO "caffe2 ROCM_SOURCE_DIR = ${ROCM_SOURCE_DIR}") - target_include_directories(torch_hip PRIVATE - ${ROCM_SOURCE_DIR}/include - ${ROCM_SOURCE_DIR}/hcc/include - ${ROCM_SOURCE_DIR}/rocblas/include - ${ROCM_SOURCE_DIR}/hipsparse/include - ${ROCM_SOURCE_DIR}/include/rccl/ - ) if(USE_FLASH_ATTENTION) target_compile_definitions(torch_hip PRIVATE USE_FLASH_ATTENTION @@ -1713,7 +1706,7 @@ if(USE_ROCM) target_link_libraries(torch_hip PRIVATE ${Caffe2_HIP_DEPENDENCY_LIBS}) # Since PyTorch files contain HIP headers, this is also needed to capture the includes. - target_include_directories(torch_hip PRIVATE ${Caffe2_HIP_INCLUDE}) + target_include_directories(torch_hip PRIVATE ${Caffe2_HIP_INCLUDE} ${ROCM_INCLUDE}) target_include_directories(torch_hip INTERFACE $) endif() diff --git a/cmake/public/LoadHIP.cmake b/cmake/public/LoadHIP.cmake index 28d15a5ea1b738..62288ad65c3a58 100644 --- a/cmake/public/LoadHIP.cmake +++ b/cmake/public/LoadHIP.cmake @@ -165,6 +165,12 @@ if(HIP_FOUND) endif() find_package_and_print_version(hipblaslt REQUIRED) + list(APPEND ROCM_INCLUDE ${rocthrust_INCLUDE_DIR}) + list(APPEND ROCM_INCLUDE ${rocprim_INCLUDE_DIR}) + list(APPEND ROCM_INCLUDE ${hipcub_INCLUDE_DIR}) + list(APPEND ROCM_INCLUDE ${rocRAND_INCLUDE_DIR}) + list(APPEND ROCM_INCLUDE ${INTERFACE_INCLUDE_DIRECTORIES}) + if(UNIX) find_package_and_print_version(rccl) find_package_and_print_version(hsa-runtime64 REQUIRED) From d0a90e857829cb0b27f5118b9411bb1748de00af Mon Sep 17 00:00:00 2001 From: Jithun Nair Date: Fri, 25 Apr 2025 15:50:22 +0000 Subject: [PATCH 4/5] Collate all ROCm component include dirs into one --- caffe2/CMakeLists.txt | 2 +- cmake/public/LoadHIP.cmake | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt index 21b42664f72757..dad26cc828959c 100644 --- a/caffe2/CMakeLists.txt +++ b/caffe2/CMakeLists.txt @@ -1706,7 +1706,7 @@ if(USE_ROCM) target_link_libraries(torch_hip PRIVATE ${Caffe2_HIP_DEPENDENCY_LIBS}) # Since PyTorch files contain HIP headers, this is also needed to capture the includes. - target_include_directories(torch_hip PRIVATE ${Caffe2_HIP_INCLUDE} ${ROCM_INCLUDE}) + target_include_directories(torch_hip PRIVATE ${Caffe2_HIP_INCLUDE} ${ROCM_INCLUDE_DIRS}) target_include_directories(torch_hip INTERFACE $) endif() diff --git a/cmake/public/LoadHIP.cmake b/cmake/public/LoadHIP.cmake index 62288ad65c3a58..21814c55d7d9bc 100644 --- a/cmake/public/LoadHIP.cmake +++ b/cmake/public/LoadHIP.cmake @@ -26,10 +26,10 @@ else() endif() endif() -if(NOT DEFINED ENV{ROCM_INCLUDE_DIRS}) - set(ROCM_INCLUDE_DIRS ${ROCM_PATH}/include) +if(NOT DEFINED ENV{ROCM_INCLUDE_DIR}) + set(ROCM_INCLUDE_DIR ${ROCM_PATH}/include) else() - set(ROCM_INCLUDE_DIRS $ENV{ROCM_INCLUDE_DIRS}) + set(ROCM_INCLUDE_DIR $ENV{ROCM_INCLUDE_DIR}) endif() # MAGMA_HOME @@ -72,6 +72,7 @@ list(APPEND CMAKE_PREFIX_PATH ${ROCM_PATH}) macro(find_package_and_print_version PACKAGE_NAME) find_package("${PACKAGE_NAME}" ${ARGN}) message("${PACKAGE_NAME} VERSION: ${${PACKAGE_NAME}_VERSION}") + list(APPEND ROCM_INCLUDE_DIRS ${${PACKAGE_NAME}_INCLUDE_DIR}) endmacro() # Find the HIP Package @@ -165,16 +166,14 @@ if(HIP_FOUND) endif() find_package_and_print_version(hipblaslt REQUIRED) - list(APPEND ROCM_INCLUDE ${rocthrust_INCLUDE_DIR}) - list(APPEND ROCM_INCLUDE ${rocprim_INCLUDE_DIR}) - list(APPEND ROCM_INCLUDE ${hipcub_INCLUDE_DIR}) - list(APPEND ROCM_INCLUDE ${rocRAND_INCLUDE_DIR}) - list(APPEND ROCM_INCLUDE ${INTERFACE_INCLUDE_DIRECTORIES}) - if(UNIX) find_package_and_print_version(rccl) find_package_and_print_version(hsa-runtime64 REQUIRED) + endif() + list(REMOVE_DUPLICATES ROCM_INCLUDE_DIRS) + + if(UNIX) # roctx is part of roctracer find_library(ROCM_ROCTX_LIB roctx64 HINTS ${ROCM_PATH}/lib) From 301a1788e8b7251480423801264b474dca98fedb Mon Sep 17 00:00:00 2001 From: Jithun Nair Date: Sun, 27 Apr 2025 02:39:53 +0000 Subject: [PATCH 5/5] Move find_package(hip) call up so that we can use hip_INCLUDE_DIR in Spack environment --- cmake/public/LoadHIP.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/public/LoadHIP.cmake b/cmake/public/LoadHIP.cmake index 21814c55d7d9bc..8363b1fb9f0225 100644 --- a/cmake/public/LoadHIP.cmake +++ b/cmake/public/LoadHIP.cmake @@ -83,9 +83,10 @@ find_package_and_print_version(HIP 1.0 MODULE) if(HIP_FOUND) set(PYTORCH_FOUND_HIP TRUE) + find_package_and_print_version(hip REQUIRED CONFIG) # Find ROCM version for checks. UNIX filename is rocm_version.h, Windows is hip_version.h find_file(ROCM_VERSION_HEADER_PATH NAMES rocm_version.h hip_version.h - HINTS ${ROCM_INCLUDE_DIRS}/rocm-core ${ROCM_INCLUDE_DIRS}/hip /usr/include) + HINTS ${ROCM_INCLUDE_DIR}/rocm-core ${hip_INCLUDE_DIR}/hip /usr/include) get_filename_component(ROCM_HEADER_NAME ${ROCM_VERSION_HEADER_PATH} NAME) if(EXISTS ${ROCM_VERSION_HEADER_PATH}) @@ -142,7 +143,6 @@ if(HIP_FOUND) # Find ROCM components using Config mode # These components will be searced for recursively in ${ROCM_PATH} message("\n***** Library versions from cmake find_package *****\n") - find_package_and_print_version(hip REQUIRED CONFIG) find_package_and_print_version(amd_comgr REQUIRED) find_package_and_print_version(rocrand REQUIRED) find_package_and_print_version(hiprand REQUIRED)