diff options
Diffstat (limited to 'dev-util/hip')
47 files changed, 2719 insertions, 0 deletions
diff --git a/dev-util/hip/Manifest b/dev-util/hip/Manifest new file mode 100644 index 000000000000..98d00a1edc40 --- /dev/null +++ b/dev-util/hip/Manifest @@ -0,0 +1,23 @@ +DIST hip-5.1.3-update-header.patch.gz 3406 BLAKE2B 805539c3396a9cdcc4b807afd96eacd2de0e494a9ec927a1526cb8ce26b1c6e0a4d06415cd0210cba1398b5ff70f995fa67ad22b659578c075eb24c2a2cc9228 SHA512 eef4d70f9470a61d1d8cb140728cc4f2e792a4e64e0900a7410a74f3a6421410e7546e4e62bbbf35ae231b566bf162fb85de1f1ad1d8cfb2f282d2ed9a34b53a +DIST hip-5.7.1.tar.gz 553774 BLAKE2B f88c235f688d3a662ec6cb4ad7fe3f82c0015015997871609cc30ab5b2f7fcb9709a08683d77194e45a6dbbe1d24c6355b128d2ecf655f1dea3468711c64e0a3 SHA512 68fa8753725b53c999d102d254c6b1dba53af4e00d6a48db93d10213cc02eec30b4a39c66e773d4f625dd9636cf8b0c5faa05b69fac27cf5a6b19dd3ddd2b905 +DIST hip-6.0.0.tar.gz 243451 BLAKE2B c404d23f7ee46a6c5601077d598edf4d6b2ca48da5e6cabf45c926ee1224eedc3d9eb6715948bc44cf3da2431a2feb879b1b8cd35bac69319c9dc066ab2e12f7 SHA512 2beb100812f9f515d6bc29fd4930913c2ff64c4f824727c9fc38d2e249841c840bd35357f652ab2b5022d166331de8f7409e72c49a5f69042f54f16a6a290339 +DIST rocclr-5.1.3.tar.gz 618606 BLAKE2B 02b7732ddd03c0883bee49c56466cd21c649159f801bfb2537eea6e640c65613eb57b37d942f465a9deb83d65735f51212dde5e4f77ba8239d1a6b7037e1800c SHA512 89fd2eca39ed84a1cf525b2c606089ef39f64c1f997c4880e10722da6de4864110752640e1508db1aeb9d15c48ba4e6fe5dbe7a9e56718853ece42548028b2ca +DIST rocclr-5.3.3.tar.gz 625944 BLAKE2B 0cdbc1415a355e1d56628834846aaa8587c9827eeea59f4312b788e868265dcb42197181fd5ef411416da2e11662c7f665f578aa750ab88c3a5405bcc58ee449 SHA512 3f85532cffc09c2ca8e7cd1770263d1c1a38633ed2bc5cfe62072e12a6f8f669db400519950718be31f6b77693d372e2ef905f06c7f02e126aa9ff7d2da97924 +DIST rocclr-5.4.3.tar.gz 640557 BLAKE2B 9ab91bab7ffb06c9c0d1c2ae79533fccc597071dda289ac375e32eb2965c638a7029951d2a49d46eeead9d7d242fe3a0cedb3e444d877af1bbf0e2d801c91e11 SHA512 c1d1a2ca08c2d762a221c04d394469aa7aff46086151333b145e0db9a7c7eb3dbbf8b9693e50d816aa9a13c16b4ebacf5ff3d5d8ff3393a8a764728ef5172d3a +DIST rocclr-5.5.1.tar.gz 634330 BLAKE2B e6383a6b6b09f274a944d66effd345e38a191ec73ee5c5240f8ec8bb62a4df97b80835ce57f8f78c3834602b9da425b49289b5c7cd7e4c7071147ff409c6a6c9 SHA512 4c12011d22a4f14d9e93250b2a38716eb973139afa1adbbbd51c0e0ed13c0b7c1f45a37c71ef937c5fdabf09e928d7913ca3332fc61b7a2c10d21421306a228f +DIST rocm-5.7.0.tar.gz 845881 BLAKE2B 08255edc1407e5ef85895336b11496319695318fce265565728ad75175b5e1dfab98f696fee2d27e60c48e862f721fad4c53118cc70b807353fff5f97ed72ac2 SHA512 72420e16c7cfe9687e030331838666dabaa43d686bdad1d109431e44db99070a2cf6dd64b59e3275019abedd6612f6008c798a79275e7225b6b122fb9f644660 +DIST rocm-clr-5.7.1.tar.gz 2008647 BLAKE2B 3db0760d6f83504e60caf88a2dd5e0bc02c7db9d6f263ad0eb2cfc79aa0f88a3699c412844a0158a796d9d02e79660287e791edad787d814eefffea4fd2298b4 SHA512 d79323481d82fc02c12a32cdcc0d14437d512af023e7737db0387b7eecb27fe6e4ae7c71d6adce57932a04bb24c880440d9dc10aeb5af11a4f2ca64d44330965 +DIST rocm-clr-6.0.0.tar.gz 1983453 BLAKE2B 2cf6ec7c3b0ec5dedeea94ff54af30662b781fc2eee22e3315094af61dc9d331eba33c1d9d463295848c5724e515a3137f9b189c1261273afad1a5f9d32226c2 SHA512 12e77a121150d8c25121b98bd7c6233c2568f9f4130bdbe6bc3ab225f14b8bea6a6bdc4ed497c0f999d3d3daabdca0de8caaa1b69911c11974b5d6f951734433 +DIST rocm-hip-5.1.3.tar.gz 967696 BLAKE2B 15cb52b5934b84acf515fe9c83b7c8982e00a23e20af933bdd2c4bc5b56fd42b08c8a08e840c85d2e0a8386d5a0e9c110504f68499989de1aaad00e9a5efcf43 SHA512 6b6fd6c12d73788df1711b12326b97fc7a184f319e0db114947b7967b75f2ee131f81e42e43a4981456b507221a6013133731120409f90214e13304299ccbc24 +DIST rocm-hip-5.3.3.tar.gz 1151858 BLAKE2B 5f460b2078c850b3eb4414fcec4a6f951a3b282aa9828f77ba5d5adfdc0ee8d2e62c856e112a154c340daaf7dad49f4871412edd7b38f7fae2e6b17840ee144b SHA512 e747cc10e78cd09009cac762f0e060be13f3447af7ec2a4a2889cbdc09cd76ecb1b5b58c89f09a3b45a8296c2c71e1c55baf113e58a5a12434af3de7168b8d87 +DIST rocm-hip-5.4.3.tar.gz 1195173 BLAKE2B 7452ee7a874bc4703b0d3aaaf9fa2a51e223d5650c65c34982a9981dbe14e8ec70c93d7e70c5ad36a8d02c3d2214fa6a393e20502a01418fb3320d8cfe363feb SHA512 1f4100e114576dcbad83aae453e21ab85cf25bd8a6ada380bb11cfc30e5f92ba903055b7257a099321a84b65adb444dd52b8258e82567f4bc882e65d89369b43 +DIST rocm-hip-5.5.1.tar.gz 1235158 BLAKE2B 2bd675c065fbe054a220f65b30834333d9db91fbd864c408f8ee915f3a511a2f607820562e4d6eacc8e5aa5dc3f8f37fe2b5675c9e89784e61c4a46a9357eef3 SHA512 9d57e96ff1d3eb14300d0809049a32dd8403851c70cd6d94cab8d17206a1210fef8b6f713063b041d35de37ef0ae10319e9d9803c65493a54fb59e66d29c9c4d +DIST rocm-hipamd-5.1.3.tar.gz 331996 BLAKE2B 176121fe199d53c02a0fc407015681c2f08c8a72104738b457581fd81b37d16efb8170a46d687fb85a45242ba8564246cdd5746e78d9b73dd0bdc9b24eb8378c SHA512 daa6f4da97f71a5fd1f79d8c9e5fc43324743aec91362a05fa62e08966397a637d794abc7e14230eccf5f1271f9fac58d1336aaad1f2cded6cd10792845a494b +DIST rocm-hipamd-5.3.3.tar.gz 383179 BLAKE2B 45c4fbf28d639095db3cec0632e1b1d872104b3755bdca818ed37ac46caab399fcd2224330e6ac8df7ab155fb146b6272b3ed2efe00d7358b47f31ca2cb1e4f5 SHA512 34c62d915990b6742a2df9b37b6b2bad09f7383e561009519911095e8b65f6f1d79486f7f9b97fa76d7a9755b59fca5a5dff321d8c8b15fd83f2fd22ce08834c +DIST rocm-hipamd-5.4.3.tar.gz 387070 BLAKE2B c5f30b606227692eea4bf9e35d35bff861648ef44357994996b7f1fb798ffe8b3ccf909bedd47d5486049c9742e426002f2d6636daabc679bae1b70e9ee5e89b SHA512 f2e36ceeca2580fd85f6847dc8320640bd43382bcd584f67362b11580a1d429c36596adbde252967a96d3a2dfc2bdca4d34bd23f5fb0d5e5e73e7844f925b03b +DIST rocm-hipamd-5.5.1.tar.gz 401791 BLAKE2B f6d0ce1ae684b51177a2c7b3d7f885cce48314ed7c76d075983e8ab6f1a15421feb11d0a718ea592c9c015c015d99ff92f892d69bee58a543a7fe0f0d476150f SHA512 c979edf358a87abfeddaee0fe809d65c106b188c5684a1f229af962e5c4505f4108b1d14db160485048806d69cf5811ad330711b84a6c995386adb21916851c5 +DIST rocm-opencl-runtime-5.1.3.tar.gz 1004765 BLAKE2B 64d9b42026d2be1d0e4aa666785699f6b4ec0584a927904a94bf830883050943503f8bdd7c97438a2fb11c71686a330d526f633959916c5c6c8da2e037841e79 SHA512 b83c3ae0bfad80f867bacce36710a8964f6dd7e64bf50da3ec6ce842217d6de63299d9ceaab9dc25a22252484520a85d02859809463dad5dda9b1f00a86863e0 +DIST rocm-opencl-runtime-5.3.3.tar.gz 1007773 BLAKE2B a3f600a68183337f92b152a123241cb7025889cca2ef6814d9d5b5a2146a78703b171d20bcb432bc7a2cdd1f24ad349408c17816b25a66702e9f0f5345af9082 SHA512 391f0f244b7f02972df8cada821e69ee8d81d96b9cff3c14f1d0838da583d8fb136ec4bd5ee820f6dd261968e9eef5e9a5b10b7bb76b1b64625c399d79bcb03f +DIST rocm-opencl-runtime-5.4.3.tar.gz 1005268 BLAKE2B f9398e4c2b0f045f1b5d8df9f31b7f2bef6a9201885aa6ee5fc5d71632cfde26a078d9a5ea38c3da12d3c187faf04c7bdcf1a8ecb9927cdba56b1efdfcdc44ee SHA512 f65d4622ce8721a6b91ab5b5b306d142ba507d3e631ac3ab0b76c5bc6d8d18455e02debd954c82e7eb609f232b509f1ec1a013dc2fad467c2c2ad31fdf15755d +DIST rocm-opencl-runtime-5.5.1.tar.gz 991802 BLAKE2B 07d955b4a76b11296259287f5878cadc2438350a3abcdb5bd693c02790ff4c330b1d0a2a87f8de5334b3e3459c26b3fdf695886502ec5d2c373d807c242c8f93 SHA512 06786e818002dc43f64e4b0aaae0a0a2bcdad7acdb4662e1215d43277b107d65fb9a7f7441c31e3378c380cac860b1cd2eaefb5753246beffa4d9c10efced85e +DIST rocm-tracer-5.1.3.tar.gz 511617 BLAKE2B 4142979b3b7d649798a7ac0b2a04b42aa7fbcbf82f2cf51b0e5363ec0da538046d6e59283d0ce1bfd341317bf24ac2f694d5c8a7d1f132f9b21caea5caf7eda3 SHA512 e73b0c921ffbdcac571d8b0825de39bd8a4fd5f2720ecdd0c189951db85efb607a0b1cd7a9bb02b3dbf329b277cb5e197525216a8e8927eea4e6ce290b7e7c7b diff --git a/dev-util/hip/files/0001-SWDEV-316128-HIP-surface-API-support.patch b/dev-util/hip/files/0001-SWDEV-316128-HIP-surface-API-support.patch new file mode 100644 index 000000000000..14af91f9055b --- /dev/null +++ b/dev-util/hip/files/0001-SWDEV-316128-HIP-surface-API-support.patch @@ -0,0 +1,35 @@ +From 4168c6ded4e54602f6fad8b0a483b20ab7f83cd5 Mon Sep 17 00:00:00 2001 +From: haoyuan2 <Hao.Yuan@amd.com> +Date: Mon, 21 Feb 2022 10:10:04 -0800 +Subject: [PATCH] SWDEV-316128 - HIP surface API support + +remove redundant code in host API + +Change-Id: I8fbf894e858642da4198cc7afd2d2e2f1971e738 +Signed-off-by: YiyangWu <xgreenlandforwyy@gmail.com> +--- + src/hip_surface.cpp | 4 +--- + 1 file changed, 1 insertion(+), 3 deletions(-) + +diff --git a/src/hip_surface.cpp b/src/hip_surface.cpp +index 831df321..a8e7f71d 100644 +--- a/src/hip_surface.cpp ++++ b/src/hip_surface.cpp +@@ -1,4 +1,4 @@ +-/* Copyright (c) 2015 - 2021 Advanced Micro Devices, Inc. ++/* Copyright (c) 2015 - 2022 Advanced Micro Devices, Inc. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal +@@ -81,8 +81,6 @@ hipError_t hipCreateSurfaceObject(hipSurfaceObject_t* pSurfObject, + } + + hipError_t ihipDestroySurfaceObject(hipSurfaceObject_t surfaceObject) { +- HIP_INIT_API(hipDestroySurfaceObject, surfaceObject); +- + if (surfaceObject == nullptr) { + return hipSuccess; + } +-- +2.34.1 + diff --git a/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch b/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch new file mode 100644 index 000000000000..b9a1329e5931 --- /dev/null +++ b/dev-util/hip/files/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch @@ -0,0 +1,70 @@ +From 73430b62a5437d1ba6c36a1d812a1434d1ad9df7 Mon Sep 17 00:00:00 2001 +From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com> +Date: Tue, 20 Dec 2022 06:51:12 +0530 +Subject: [PATCH 1/3] SWDEV-344620 - hipcc fails to parse version of clang in + some cases (#3119) + +Change-Id: I46f716c82a7500b9a2bcaf5f9ff4ad8a8f982770 +Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> +--- + bin/hipcc.pl | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +diff --git a/bin/hipcc.pl b/bin/hipcc.pl +index 645ae62d..2a01dcc3 100755 +--- a/bin/hipcc.pl ++++ b/bin/hipcc.pl +@@ -144,7 +144,7 @@ if ($HIP_PLATFORM eq "amd") { + $execExtension = ""; + if($isWindows) { + $execExtension = ".exe"; +- } ++ } + $HIPCC="$HIP_CLANG_PATH/clang++" . $execExtension; + + # If $HIPCC clang++ is not compiled, use clang instead +@@ -157,13 +157,10 @@ if ($HIP_PLATFORM eq "amd") { + $HIPLDFLAGS .= " -fuse-ld=lld"; + $HIPLDFLAGS .= " --ld-path=$HIP_CLANG_PATH/lld-link.exe"; + } +- $HIP_CLANG_VERSION = `$HIPCC --version`; +- $HIP_CLANG_VERSION=~/.*clang version (\S+).*/; +- $HIP_CLANG_VERSION=$1; + +- # Figure out the target with which llvm is configured +- $HIP_CLANG_TARGET = `$HIPCC -print-target-triple`; +- $HIP_CLANG_TARGET = chomp($HIP_CLANG_TARGET); ++ # get Clang RT Builtin path ++ $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`; ++ chomp($HIP_CLANG_RT_LIB); + + if (! defined $HIP_CLANG_INCLUDE_PATH) { + $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include"); +@@ -184,7 +181,7 @@ if ($HIP_PLATFORM eq "amd") { + print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n"); + print ("HIP_LIB_PATH=$HIP_LIB_PATH\n"); + print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n"); +- print ("HIP_CLANG_TARGET=$HIP_CLANG_TARGET\n"); ++ print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n"); + } + + if ($isWindows) { +@@ -715,13 +712,8 @@ if ($HIP_PLATFORM eq "amd") { + } else { + $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 "; + } +- # To support __fp16 and _Float16, explicitly link with compiler-rt +- $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; +- if (-e $HIP_CLANG_BUILTIN_LIB) { +- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET -lclang_rt.builtins " +- } else { +- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 " +- } ++ ++ $toolArgs .= " -L$HIP_CLANG_RT_LIB -lclang_rt.builtins-x86_64 " + } + } + +-- +2.38.1 + diff --git a/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch b/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch new file mode 100644 index 000000000000..9dbfe8a55395 --- /dev/null +++ b/dev-util/hip/files/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch @@ -0,0 +1,163 @@ +From 6c12b045bc3c434dd13e74bf124ed54afec668c6 Mon Sep 17 00:00:00 2001 +From: AravindanC <aravindan.cheruvally@amd.com> +Date: Fri, 26 Aug 2022 15:02:09 -0700 +Subject: [PATCH] SWDEV-352878 - LLVM pkg search directly using find_dep() for + CLANG Include path + +Change-Id: I355e39890757be07de8b9332deca159f35039dfd +Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> +--- + hip-config.cmake.in | 108 ++++++++++++++++++++++++++------------------ + 1 file changed, 64 insertions(+), 44 deletions(-) + +diff --git a/hip-config.cmake.in b/hip-config.cmake.in +index 89d1224e..67d898d8 100755 +--- a/hip-config.cmake.in ++++ b/hip-config.cmake.in +@@ -147,41 +147,62 @@ if(HIP_COMPILER STREQUAL "clang") + if(NOT HIP_CXX_COMPILER) + set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER}) + endif() +- if(HIP_CXX_COMPILER MATCHES ".*hipcc" OR HIP_CXX_COMPILER MATCHES ".*clang\\+\\+") +- execute_process(COMMAND ${HIP_CXX_COMPILER} --version ++ ++ # Use HIP_CXX_COMPILER option -print-resource-dir ++ # To fetch the clang include path ++ execute_process( ++ COMMAND ${HIP_CXX_COMPILER} -print-resource-dir ++ OUTPUT_VARIABLE HIP_CLANG_INCLUDE_PATH ++ OUTPUT_STRIP_TRAILING_WHITESPACE ++ RESULT_VARIABLE CLANG_INCLUDE_PATH_FETCH_EXIT_CODE) ++ ++ if( NOT "${CLANG_INCLUDE_PATH_FETCH_EXIT_CODE}" STREQUAL "0" ) ++ if(HIP_CXX_COMPILER MATCHES ".*hipcc" OR HIP_CXX_COMPILER MATCHES ".*clang\\+\\+") ++ # IF not successful in fetching HIP_CLANG_INCLUDE_PATH using ++ # HIP_CXX_COMPILER binary command options -print-resource-dir ++ # fallback to old method of getting include by finding HIP_CLANG_ROOT ++ # and from predefined relative path of HIP_CLANG_ROOT ++ execute_process(COMMAND ${HIP_CXX_COMPILER} --version + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE HIP_CXX_COMPILER_VERSION_OUTPUT) +- # Capture the repo, branch and patch level details of the HIP CXX Compiler. +- # Ex. clang version 13.0.0 (https://github.com/ROCm-Developer-Tools/HIP main 12345 COMMIT_HASH) +- # HIP_CLANG_REPO: https://github.com/ROCm-Developer-Tools/HIP +- # HIP_CLANG_BRANCH: main +- # HIP_CLANG_PATCH_LEVEL: 12345 +- if(${HIP_CXX_COMPILER_VERSION_OUTPUT} MATCHES "clang version [0-9]+\\.[0-9]+\\.[0-9]+ \\(([^ \n]*) ([^ \n]*) ([^ \n]*)") +- set(HIP_CLANG_REPO ${CMAKE_MATCH_1}) +- set(HIP_CLANG_BRANCH ${CMAKE_MATCH_2}) +- set(HIP_CLANG_PATCH_LEVEL ${CMAKE_MATCH_3}) +- endif() +- endif() +- if(HIP_CXX_COMPILER MATCHES ".*hipcc") +- if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)") +- get_filename_component(HIP_CLANG_ROOT "${CMAKE_MATCH_1}" DIRECTORY) +- endif() +- elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+") +- get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH) +- get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY) +- get_filename_component(HIP_CLANG_ROOT "${_HIP_CLANG_BIN_PATH}" DIRECTORY) +- endif() +- file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include) +- find_path(HIP_CLANG_INCLUDE_PATH stddef.h +- HINTS ++ # Capture the repo, branch and patch level details of the HIP CXX Compiler. ++ # Ex. clang version 13.0.0 (https://github.com/ROCm-Developer-Tools/HIP main 12345 COMMIT_HASH) ++ # HIP_CLANG_REPO: https://github.com/ROCm-Developer-Tools/HIP ++ # HIP_CLANG_BRANCH: main ++ # HIP_CLANG_PATCH_LEVEL: 12345 ++ if(${HIP_CXX_COMPILER_VERSION_OUTPUT} MATCHES "clang version [0-9]+\\.[0-9]+\\.[0-9]+ \\(([^ \n]*) ([^ \n]*) ([^ \n]*)") ++ set(HIP_CLANG_REPO ${CMAKE_MATCH_1}) ++ set(HIP_CLANG_BRANCH ${CMAKE_MATCH_2}) ++ set(HIP_CLANG_PATCH_LEVEL ${CMAKE_MATCH_3}) ++ endif() ++ if(HIP_CXX_COMPILER MATCHES ".*hipcc") ++ if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)") ++ get_filename_component(HIP_CLANG_ROOT "${CMAKE_MATCH_1}" DIRECTORY) ++ endif() ++ elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+") ++ get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH) ++ get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY) ++ get_filename_component(HIP_CLANG_ROOT "${_HIP_CLANG_BIN_PATH}" DIRECTORY) ++ endif() ++ ++ ++ file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include) ++ find_path(HIP_CLANG_INCLUDE_PATH stddef.h ++ HINTS + ${HIP_CLANG_INCLUDE_SEARCH_PATHS} +- NO_DEFAULT_PATH) ++ NO_DEFAULT_PATH) ++ # Since INTERFACE_INCLUDE_DIRECTORIES need to set the parent directory ++ # of HIP_CLANG_INCLUDE_PATH incase using find_path() of stddefs.h ++ set(HIP_CLANG_INCLUDE_PATH "${HIP_CLANG_INCLUDE_PATH}/..") ++ endif() # HIP_CXX_COMPILER Check ++ endif() # CLANG_INCLUDE_PATH_FETCH_EXIT_CODE Check ++ + if(NOT WIN32) + find_dependency(AMDDeviceLibs) + endif() + set(AMDGPU_TARGETS "gfx900;gfx906;gfx908;gfx90a;gfx1030" CACHE STRING "AMD GPU targets to compile for") + set(GPU_TARGETS "${AMDGPU_TARGETS}" CACHE STRING "GPU targets to compile for") +-endif() ++endif() # HIP_COMPILER check + + if(NOT WIN32) + find_dependency(amd_comgr) +@@ -263,11 +284,11 @@ if(HIP_COMPILER STREQUAL "clang") + hip_add_interface_link_flags(hip::device --hip-link) + + set_property(TARGET hip::device APPEND PROPERTY +- INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.." ++ INTERFACE_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}" + ) + + set_property(TARGET hip::device APPEND PROPERTY +- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}/.." ++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${HIP_CLANG_INCLUDE_PATH}" + ) + + foreach(GPU_TARGET ${GPU_TARGETS}) +@@ -291,25 +312,24 @@ if(HIP_COMPILER STREQUAL "clang") + endif() + endif() + +- file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_CLANG_ROOT}/lib/clang/*/lib/*") +- find_library(CLANGRT_BUILTINS +- NAMES +- clang_rt.builtins +- clang_rt.builtins-x86_64 +- PATHS +- ${HIP_CLANGRT_LIB_SEARCH_PATHS} +- ${HIP_CLANG_INCLUDE_PATH}/../lib/linux +- ${HIP_CLANG_INCLUDE_PATH}/../lib/windows +- NO_DEFAULT_PATH) ++ ++ # Use HIP_CXX option -print-libgcc-file-name --rtlib=compiler-rt ++ # To fetch the compiler rt library file name. ++ execute_process( ++ COMMAND ${HIP_CXX_COMPILER} -print-libgcc-file-name --rtlib=compiler-rt ++ OUTPUT_VARIABLE CLANGRT_BUILTINS ++ OUTPUT_STRIP_TRAILING_WHITESPACE ++ RESULT_VARIABLE CLANGRT_BUILTINS_FETCH_EXIT_CODE) + + # Add support for __fp16 and _Float16, explicitly link with compiler-rt +- if(NOT CLANGRT_BUILTINS) +- message(FATAL_ERROR "clangrt builtins lib not found") +- else() ++ if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" ) ++ # CLANG_RT Builtins found Successfully Set interface link libraries property + set_property(TARGET hip::host APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") + set_property(TARGET hip::device APPEND PROPERTY INTERFACE_LINK_LIBRARIES "${CLANGRT_BUILTINS}") +- endif() +-endif() ++ else() ++ message(STATUS "clangrt builtins lib not found: ${CLANGRT_BUILTINS_FETCH_EXIT_CODE}") ++ endif() # CLANGRT_BUILTINS_FETCH_EXIT_CODE Check ++endif() # HIP_COMPILER Check + + set( hip_LIBRARIES hip::host hip::device) + set( hip_LIBRARY ${hip_LIBRARIES}) +-- +2.38.1 + diff --git a/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch b/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch new file mode 100644 index 000000000000..6d64ad8c9fd8 --- /dev/null +++ b/dev-util/hip/files/0002-SWDEV-355608-Remove-clang-include-path-2996.patch @@ -0,0 +1,51 @@ +From 7613e00fe0299d6584d3ee67e5d4010e7fc0866a Mon Sep 17 00:00:00 2001 +From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com> +Date: Fri, 14 Oct 2022 16:02:40 +0530 +Subject: [PATCH 2/3] SWDEV-355608 - Remove clang include path (#2996) + +Clang doesn't need to be told where to find the clang headers + +Change-Id: I175781731c43647676d91eedc8a915124f2479ab +Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> +--- + bin/hipcc.pl | 11 ----------- + 1 file changed, 11 deletions(-) + +diff --git a/bin/hipcc.pl b/bin/hipcc.pl +index 2a01dcc3..7e82cad8 100755 +--- a/bin/hipcc.pl ++++ b/bin/hipcc.pl +@@ -162,9 +162,6 @@ if ($HIP_PLATFORM eq "amd") { + $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`; + chomp($HIP_CLANG_RT_LIB); + +- if (! defined $HIP_CLANG_INCLUDE_PATH) { +- $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include"); +- } + if (! defined $HIP_INCLUDE_PATH) { + $HIP_INCLUDE_PATH = "$HIP_PATH/include"; + } +@@ -177,20 +174,12 @@ if ($HIP_PLATFORM eq "amd") { + print ("HIP_ROCCLR_HOME=$HIP_ROCCLR_HOME\n"); + } + print ("HIP_CLANG_PATH=$HIP_CLANG_PATH\n"); +- print ("HIP_CLANG_INCLUDE_PATH=$HIP_CLANG_INCLUDE_PATH\n"); + print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n"); + print ("HIP_LIB_PATH=$HIP_LIB_PATH\n"); + print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n"); + print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n"); + } + +- if ($isWindows) { +- $HIPCXXFLAGS .= " -std=c++14 -fms-extensions -fms-compatibility"; +- } else { +- $HIPCXXFLAGS .= " -std=c++11"; +- } +- $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; +- $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; + $HIPLDFLAGS .= " -L\"$HIP_LIB_PATH\""; + if ($isWindows) { + $HIPLDFLAGS .= " -lamdhip64"; +-- +2.38.1 + diff --git a/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch b/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch new file mode 100644 index 000000000000..f92cce4cf8d8 --- /dev/null +++ b/dev-util/hip/files/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch @@ -0,0 +1,173 @@ +From fddbcef9a5a45ab63d4805c53d1f8fcf5c30d095 Mon Sep 17 00:00:00 2001 +From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com> +Date: Fri, 6 Jan 2023 02:37:15 +0530 +Subject: [PATCH 3/3] SWDEV-352878 - Removed relative path based CLANG include, + CLANGRT dependencies (#3124) + +Change-Id: Ifdcd117679bff548a6351ba915a8272689e647de +Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> +--- + cmake/FindHIP.cmake | 37 ++++++++++++++++++++++++++++- + hip-lang-config.cmake.in | 51 +++++++++++++++++++++------------------- + 2 files changed, 63 insertions(+), 25 deletions(-) + +diff --git a/cmake/FindHIP.cmake b/cmake/FindHIP.cmake +index 8b196dea..109c9f65 100644 +--- a/cmake/FindHIP.cmake ++++ b/cmake/FindHIP.cmake +@@ -48,6 +48,29 @@ mark_as_advanced(HIP_HOST_COMPILATION_CPP) + # FIND: HIP and associated helper binaries + ############################################################################### + ++if(NOT HIP_CXX_COMPILER) ++ set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER}) ++endif() ++ ++# Approach: To find HIP_CLANG_PATH using HIP_CXX_COMPILER options ++# Using --version option of HIP_CXX_COMPILER get the Install Directory ++# This install directory is set as the HIP_CLANG_PATH. ++# IF not successful in getting the Install Directory using HIP_CXX_COMPILER ++# fallback to Old Method to find HIP_CLANG_PATH from ENV Vars, ROCMPATH, HIPPATH etc. ++execute_process(COMMAND ${HIP_CXX_COMPILER} --version ++ OUTPUT_STRIP_TRAILING_WHITESPACE ++ OUTPUT_VARIABLE HIP_CXX_COMPILER_VERSION_OUTPUT) ++if(HIP_CXX_COMPILER MATCHES ".*hipcc") ++ if(HIP_CXX_COMPILER_VERSION_OUTPUT MATCHES "InstalledDir:[ \t]*([^\n]*)") ++ get_filename_component(HIP_CLANG_INSTALL_DIR "${CMAKE_MATCH_1}" DIRECTORY) ++ endif() ++elseif (HIP_CXX_COMPILER MATCHES ".*clang\\+\\+") ++ get_filename_component(_HIP_CLANG_REAL_PATH "${HIP_CXX_COMPILER}" REALPATH) ++ get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY) ++ get_filename_component(HIP_CLANG_INSTALL_DIR "${_HIP_CLANG_BIN_PATH}" DIRECTORY) ++endif() ++ ++ + get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_DIR}/../" REALPATH) + + # HIP is currently not supported for apple +@@ -230,6 +253,10 @@ if("${HIP_COMPILER}" STREQUAL "nvcc") + elseif("${HIP_COMPILER}" STREQUAL "clang") + #Set HIP_CLANG_PATH + if("x${HIP_CLANG_PATH}" STREQUAL "x") ++ # IF HIP_CLANG_INSTALL_DIR is Found ++ if( HIP_CLANG_INSTALL_DIR ) ++ set(HIP_CLANG_PATH ${HIP_CLANG_INSTALL_DIR}) ++ else() # IF HIP_CLANG_INSTALL_DIR is not found + if(DEFINED ENV{HIP_CLANG_PATH}) + set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH}) + elseif(DEFINED ENV{ROCM_PATH}) +@@ -252,7 +279,9 @@ elseif("${HIP_COMPILER}" STREQUAL "clang") + else() + message(FATAL_ERROR "Unable to find the clang compiler path. Set ROCM_PATH or HIP_PATH in env ") + endif() +- endif() ++ endif() # HIP_CLANG_INSTALL_DIR Check ++ endif() # Set HIP_CLANG_PATH ++ + #Number of parallel jobs by default is 1 + if(NOT DEFINED HIP_CLANG_NUM_PARALLEL_JOBS) + set(HIP_CLANG_NUM_PARALLEL_JOBS 1) +@@ -660,6 +689,10 @@ macro(HIP_ADD_EXECUTABLE hip_target) + endif() + if("${HIP_COMPILER}" STREQUAL "clang") + if("x${HIP_CLANG_PATH}" STREQUAL "x") ++ # IF HIP_CLANG_INSTALL_DIR is Found ++ if( HIP_CLANG_INSTALL_DIR ) ++ set(HIP_CLANG_PATH ${HIP_CLANG_INSTALL_DIR}) ++ else() # IF HIP_CLANG_INSTALL_DIR is not found + if(DEFINED ENV{HIP_CLANG_PATH}) + set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH}) + elseif(DEFINED ENV{ROCM_PATH}) +@@ -682,7 +715,9 @@ macro(HIP_ADD_EXECUTABLE hip_target) + else() + message(FATAL_ERROR "Unable to find the clang compiler path. Set ROCM_PATH or HIP_PATH in env") + endif() ++ endif() # HIP_CLANG_INSTALL_DIR Check + endif() ++ + set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} ${HIP_CLANG_PATH} ${HIP_CLANG_PARALLEL_BUILD_LINK_OPTIONS} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") + else() + set(CMAKE_HIP_LINK_EXECUTABLE "${HIP_HIPCC_CMAKE_LINKER_HELPER} <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>") +diff --git a/hip-lang-config.cmake.in b/hip-lang-config.cmake.in +index 9250a68a..1cf4e40f 100644 +--- a/hip-lang-config.cmake.in ++++ b/hip-lang-config.cmake.in +@@ -70,15 +70,6 @@ get_filename_component(_DIR "${CMAKE_CURRENT_LIST_DIR}" REALPATH) + get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH) + + +-#need _IMPORT_PREFIX to be set #FILE_REORG_BACKWARD_COMPATIBILITY +-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "${_IMPORT_PREFIX}/../llvm/lib/clang/*/include") +-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "${_IMPORT_PREFIX}/llvm/lib/clang/*/include") +-find_path(HIP_CLANG_INCLUDE_PATH __clang_cuda_math.h +- HINTS ${HIP_CLANG_INCLUDE_SEARCH_PATHS} +- ${HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG} +- NO_DEFAULT_PATH) +-get_filename_component(HIP_CLANG_INCLUDE_PATH "${HIP_CLANG_INCLUDE_PATH}" DIRECTORY) +- + #If HIP isnot installed under ROCm, need this to find HSA assuming HSA is under ROCm + if( DEFINED ENV{ROCM_PATH} ) + set(ROCM_PATH "$ENV{ROCM_PATH}") +@@ -96,18 +87,10 @@ if (NOT HSA_HEADER) + message (FATAL_ERROR "HSA header not found! ROCM_PATH environment not set") + endif() + +-get_filename_component(HIP_COMPILER_INSTALL_PATH ${CMAKE_HIP_COMPILER} DIRECTORY) +-file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_COMPILER_INSTALL_PATH}/../lib/clang/*/lib/*") +-find_library(CLANGRT_BUILTINS +- NAMES +- clang_rt.builtins +- clang_rt.builtins-x86_64 +- PATHS +- ${HIP_CLANGRT_LIB_SEARCH_PATHS} +- ${HIP_CLANG_INCLUDE_PATH}/../lib/linux) ++ + set_target_properties(hip-lang::device PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include;${HIP_CLANG_INCLUDE_PATH}>" +- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include;${HIP_CLANG_INCLUDE_PATH}>" ++ INTERFACE_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>" ++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "$<$<COMPILE_LANGUAGE:HIP>:${_IMPORT_PREFIX}/include>" + ) + + set_target_properties(hip-lang::amdhip64 PROPERTIES +@@ -133,13 +116,33 @@ set_property(TARGET hip-lang::device APPEND PROPERTY + INTERFACE_LINK_OPTIONS "$<$<LINK_LANGUAGE:HIP>:--hip-link>" + ) + ++# Approach: Check CLANGRT LIB support for CMAKE_HIP_COMPILER ++# Use CMAKE_HIP_COMPILER option -print-libgcc-file-name --rtlib=compiler-rt ++# Note: For Linux add additional option -unwindlib=libgcc also ++# To fetch the compiler rt library file name and confirm. ++# If unsuccessful in getting clangrt using this option then ++# FATAL_ERROR message send since compiler-rt linkage dependency is mandatory. ++# If successful then --rtlib=compiler-rt (and -unwindlib=libgcc for non windows) ++# added to Target's INTERFACE_LINK_LIBRARIES property ++if (NOT WIN32) ++ set(CLANGRT_LINUX_OPTION "-unwindlib=libgcc") ++endif() ++ ++execute_process( ++ COMMAND ${CMAKE_HIP_COMPILER} -print-libgcc-file-name --rtlib=compiler-rt ${CLANGRT_LINUX_OPTION} ++ OUTPUT_VARIABLE CLANGRT_BUILTINS ++ OUTPUT_STRIP_TRAILING_WHITESPACE ++ RESULT_VARIABLE CLANGRT_BUILTINS_FETCH_EXIT_CODE) ++ + # Add support for __fp16 and _Float16, explicitly link with compiler-rt +-if(NOT CLANGRT_BUILTINS) +- message(FATAL_ERROR "clangrt builtins lib not found") +-else() ++if( "${CLANGRT_BUILTINS_FETCH_EXIT_CODE}" STREQUAL "0" ) + set_property(TARGET hip-lang::device APPEND PROPERTY +- INTERFACE_LINK_LIBRARIES "$<$<LINK_LANGUAGE:HIP>:${CLANGRT_BUILTINS}>" ++ INTERFACE_LINK_OPTIONS $<$<LINK_LANGUAGE:HIP>:--rtlib=compiler-rt ${CLANGRT_LINUX_OPTION}> + ) ++else() ++ # FATAL_ERROR send if not successfull on compiler-rt linkage dependency ++ message(FATAL_ERROR ++ "${CMAKE_FIND_PACKAGE_NAME} Error:${CLANGRT_BUILTINS_FETCH_EXIT_CODE} - clangrt builtins lib could not be found.") + endif() + + # Approved by CMake to use this name. This is used so that HIP can +-- +2.38.1 + diff --git a/dev-util/hip/files/hip-4.2.0-cancel-hcc-header-removal.patch b/dev-util/hip/files/hip-4.2.0-cancel-hcc-header-removal.patch new file mode 100644 index 000000000000..08e0f3a3d4e3 --- /dev/null +++ b/dev-util/hip/files/hip-4.2.0-cancel-hcc-header-removal.patch @@ -0,0 +1,18 @@ +hcc now deprecated by ROCm upstream. They use cmake to delete hcc headers for upgrating hip on other distros, +but Gentoo don't need this and the following code causes sandbox violation (#799257). + +github.com/ROCm-Developer-Tools/HIP/commit/c2adc70d4df3d30ef0db84d47be14b99b01aa340 introduce these lines. + +--- orig/CMakeLists.txt ++++ HIP-rocm-4.2.0/CMakeLists.txt +@@ -333,10 +333,6 @@ if(NOT ${INSTALL_SOURCE} EQUAL 0) + endif() + install(DIRECTORY bin DESTINATION . USE_SOURCE_PERMISSIONS) + +- # The following two lines will be removed after upstream updation +- install(CODE "MESSAGE(\"Removing ${CMAKE_INSTALL_PREFIX}/include\")") +- install(CODE "file(REMOVE_RECURSE ${CMAKE_INSTALL_PREFIX}/include)") +- + install(DIRECTORY include DESTINATION .) + install(DIRECTORY cmake DESTINATION .) + endif() diff --git a/dev-util/hip/files/hip-4.2.0-config-cmake-in.patch b/dev-util/hip/files/hip-4.2.0-config-cmake-in.patch new file mode 100644 index 000000000000..12644828af78 --- /dev/null +++ b/dev-util/hip/files/hip-4.2.0-config-cmake-in.patch @@ -0,0 +1,15 @@ +since _IMPORT_PREFIX=/opt/gentoo/usr/lib/hip, INTERFACE_INCLUDE_DIRECTORIES should change + +--- orig/hip-config.cmake.in ++++ HIP-rocm-4.2.0/hip-config.cmake.in +@@ -185,8 +185,8 @@ if(HIP_RUNTIME MATCHES "rocclr") + + if(NOT WIN32) + set_target_properties(hip::device PROPERTIES +- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" +- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/../include" ++ INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" ++ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + ) + endif() + endif() diff --git a/dev-util/hip/files/hip-5.0.1-DisableTest.patch b/dev-util/hip/files/hip-5.0.1-DisableTest.patch new file mode 100644 index 000000000000..d41b06efc8c9 --- /dev/null +++ b/dev-util/hip/files/hip-5.0.1-DisableTest.patch @@ -0,0 +1,32 @@ +Index: hipamd-rocm-5.0.1/CMakeLists.txt +=================================================================== +--- hipamd-rocm-5.0.1.orig/CMakeLists.txt ++++ hipamd-rocm-5.0.1/CMakeLists.txt +@@ -503,27 +503,6 @@ endif() + if(NOT WIN32) + set(HIP_ROOT_DIR ${CMAKE_CURRENT_BINARY_DIR}) + set(HIP_SRC_PATH ${CMAKE_CURRENT_SOURCE_DIR}) +-if(HIP_PLATFORM STREQUAL "nvidia") +- execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_SRC_PATH}/include" "${HIP_ROOT_DIR}/include" RESULT_VARIABLE RUN_HIT ERROR_QUIET) +-endif() +-execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_COMMON_INCLUDE_DIR}/hip/" "${HIP_ROOT_DIR}/include/hip/" RESULT_VARIABLE RUN_HIT ERROR_QUIET) +-execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_COMMON_DIR}/cmake" "${HIP_ROOT_DIR}/cmake" RESULT_VARIABLE RUN_HIT ERROR_QUIET) +-if(${RUN_HIT} EQUAL 0) +- execute_process(COMMAND "${CMAKE_COMMAND}" -E copy_directory "${HIP_COMMON_BIN_DIR}" "${HIP_ROOT_DIR}/bin" RESULT_VARIABLE RUN_HIT ERROR_QUIET) +-endif() +-if(HIP_CATCH_TEST EQUAL "1") +- enable_testing() +- set(HIP_PATH ${HIP_ROOT_DIR}) +- add_subdirectory(${HIP_COMMON_DIR}/tests/catch ${PROJECT_BINARY_DIR}/catch) +-else() +- if(${RUN_HIT} EQUAL 0) +- set(CMAKE_MODULE_PATH "${HIP_ROOT_DIR}/cmake" ${CMAKE_MODULE_PATH}) +- include(${HIP_COMMON_DIR}/tests/hit/HIT.cmake) +- include(${HIP_COMMON_DIR}/tests/Tests.cmake) +- else() +- message(STATUS "Testing targets will not be available. To enable them please ensure that the HIP installation directory is writeable. Use -DCMAKE_INSTALL_PREFIX to specify a suitable location") +- endif() +-endif() + endif() + + ############################# diff --git a/dev-util/hip/files/hip-5.0.1-hip_vector_types.patch b/dev-util/hip/files/hip-5.0.1-hip_vector_types.patch new file mode 100644 index 000000000000..7a1a79b2a936 --- /dev/null +++ b/dev-util/hip/files/hip-5.0.1-hip_vector_types.patch @@ -0,0 +1,11 @@ +mitigate compilation error +--- a/include/hip/amd_detail/amd_hip_vector_types.h ++++ b/include/hip/amd_detail/amd_hip_vector_types.h +@@ -45,6 +45,7 @@ THE SOFTWARE. + + #if defined(__cplusplus) + #if !defined(__HIPCC_RTC__) ++ #include <new> + #include <array> + #include <iosfwd> + #include <type_traits> diff --git a/dev-util/hip/files/hip-5.0.2-correct-ldflag.patch b/dev-util/hip/files/hip-5.0.2-correct-ldflag.patch new file mode 100644 index 000000000000..81d1bc3b8552 --- /dev/null +++ b/dev-util/hip/files/hip-5.0.2-correct-ldflag.patch @@ -0,0 +1,18 @@ +This removes ldflag -L"/usr/lib" and -Wl,-rpath=/usr/lib:/usr/lib which +causes `ld: skipping incompatible /usr/lib/libm.so when searching for -lm` +Reference: https://github.com/justxi/rocm/issues/8#issuecomment-1166193820 +=================================================================== +--- HIP-rocm-5.1.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.1.3/bin/hipcc.pl +@@ -703,9 +703,9 @@ if ($HIP_PLATFORM eq "amd") { + + if (not $isWindows and not $compileOnly) { + if ($linkType eq 0) { +- $toolArgs = " -L$HIP_LIB_PATH -lamdhip64 -L$ROCM_PATH/lib -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; ++ $toolArgs = " -lamdhip64 -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; + } else { +- $toolArgs = " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 " . ${toolArgs}; ++ $toolArgs = " -Wl,--enable-new-dtags -lamdhip64 " . ${toolArgs}; + } + # To support __fp16 and _Float16, explicitly link with compiler-rt + $HIP_CLANG_BUILTIN_LIB="/opt/gentoo/opt/gentoo/usr/lib/llvm/14/bin/../../../../lib/clang/14.0.6/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; diff --git a/dev-util/hip/files/hip-5.0.2-set-build-id.patch b/dev-util/hip/files/hip-5.0.2-set-build-id.patch new file mode 100644 index 000000000000..21dfadf18b61 --- /dev/null +++ b/dev-util/hip/files/hip-5.0.2-set-build-id.patch @@ -0,0 +1,20 @@ +If git is not found, HIP_VERSION_BUILD_ID will not be set, causing bug 853718 +=================================================================== +--- hipamd-rocm-5.0.2.orig/CMakeLists.txt ++++ hipamd-rocm-5.0.2/CMakeLists.txt +@@ -89,6 +89,7 @@ list(GET VERSION_LIST 2 HIP_VERSION_PATC + string(REPLACE "-" ";" VERSION_LIST ${HIP_VERSION_PATCH_GITHASH}) + list(GET VERSION_LIST 0 HIP_VERSION_PATCH) + set(HIP_VERSION_GITDATE 0) ++set(HIP_VERSION_BUILD_ID 0) + + find_package(Git) + +@@ -126,7 +127,6 @@ if(GIT_FOUND) + set(HIP_VERSION_GITHASH ${git_output}) + endif() + +- set(HIP_VERSION_BUILD_ID 0) + set(HIP_VERSION_BUILD_NAME "") + if(NOT DEFINED ENV{HIP_OFFICIAL_BUILD} AND NOT HIP_OFFICIAL_BUILD) + # FIXME: Disabling it for ROCm 5.0 diff --git a/dev-util/hip/files/hip-5.1.3-clang-include-path.patch b/dev-util/hip/files/hip-5.1.3-clang-include-path.patch new file mode 100644 index 000000000000..bf1f2dd32ce5 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-clang-include-path.patch @@ -0,0 +1,12 @@ +pass HIP_CLANG_INCLUDE_PATH which is determined by clang -print-resource-dir +=================================================================== +--- HIP-rocm-5.1.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.1.3/bin/hipcc.pl +@@ -105,6 +105,7 @@ $ROCM_PATH = $hipvars::ROCM_PATH; + $HIP_VERSION = $hipvars::HIP_VERSION; + $HSA_PATH = $hipvars::HSA_PATH; + $HIP_ROCCLR_HOME = $hipvars::HIP_ROCCLR_HOME; ++$HIP_CLANG_INCLUDE_PATH = $hipvars::HIP_CLANG_INCLUDE_PATH; + + if ($HIP_PLATFORM eq "amd") { + # If using ROCclr runtime, need to find HIP_ROCCLR_HOME diff --git a/dev-util/hip/files/hip-5.1.3-correct-sample-install-location.patch b/dev-util/hip/files/hip-5.1.3-correct-sample-install-location.patch new file mode 100644 index 000000000000..57ac5cc3e992 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-correct-sample-install-location.patch @@ -0,0 +1,13 @@ +Index: hipamd-rocm-5.1.3/packaging/CMakeLists.txt +=================================================================== +--- hipamd-rocm-5.1.3.orig/packaging/CMakeLists.txt ++++ hipamd-rocm-5.1.3/packaging/CMakeLists.txt +@@ -106,7 +106,7 @@ endif() + #End doc files install + + #Begin samples files install +-install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION . COMPONENT samples) ++install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION ${CMAKE_INSTALL_DOCDIR}/ COMPONENT samples) + #End samples files install + + #Begin test files install diff --git a/dev-util/hip/files/hip-5.1.3-fix-hip_prof_gen.patch b/dev-util/hip/files/hip-5.1.3-fix-hip_prof_gen.patch new file mode 100644 index 000000000000..05b25e7178fa --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-fix-hip_prof_gen.patch @@ -0,0 +1,38 @@ +Backported fb5a64025bb0e10173a1ee4f3475db322b74b594 +fix an issue in hip_prof_gen.py with GLenum. +diff --git a/src/hip_prof_gen.py b/src/hip_prof_gen.py +index bd32d5bf..a3071a75 100755 +--- a/src/hip_prof_gen.py ++++ b/src/hip_prof_gen.py +@@ -81,7 +81,7 @@ def filtr_api_args(args_str): + args_str = re.sub(r'\s*,\s*', r',', args_str); + args_str = re.sub(r'\s+', r' ', args_str); + args_str = re.sub(r'\s*(\*+)\s*', r'\1 ', args_str); +- args_str = re.sub(r'(enum|struct) ', '', args_str); ++ args_str = re.sub(r'(\benum|struct) ', '', args_str); + return args_str + + # Normalizing types +@@ -129,7 +129,9 @@ def pointer_ck(arg_type): + m = re.match(r'(.*)\*$', arg_type) + if m: + ptr_type = m.group(1) +- ptr_type = re.sub(r'const ', '', ptr_type) ++ n = re.match(r'(.*)\*\*$', arg_type) ++ if not n: ++ ptr_type = re.sub(r'const ', '', ptr_type) + if ptr_type == 'void': ptr_type = '' + return ptr_type + ############################################################# +@@ -613,7 +615,7 @@ if (len(sys.argv) < 4): + " -p - HIP_INIT_API macro patching mode\n" + + "\n" + + " Example:\n" + +- " $ " + sys.argv[0] + " -v -p -t --priv ./include/hip/amd_detail/hip_runtime_api.h" + ++ " $ " + sys.argv[0] + " -v -p -t --priv ../hip/include/hip/hip_runtime_api.h" + + " ./src ./include/hip/amd_detail/hip_prof_str.h ./include/hip/amd_detail/hip_prof_str.h.new"); + + # API header file given as an argument +-- +2.34.1 + diff --git a/dev-util/hip/files/hip-5.1.3-fno-stack-protector.patch b/dev-util/hip/files/hip-5.1.3-fno-stack-protector.patch new file mode 100644 index 000000000000..c5957edba734 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-fno-stack-protector.patch @@ -0,0 +1,16 @@ +Since 1e9b3a08b9243daae1bebd6bac3da939d924df1f /etc/clang/gentoo-hardened.cfg +has -fstack-protector-strong which may cause build issues for HIP programs (bug +#890377) Disable this by adding -fno-stack-protector into c/cxx flags in hipcc. +=================================================================== +--- HIP-rocm-5.3.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.3.3/bin/hipcc.pl +@@ -687,6 +687,9 @@ if ($rdc and !$compileOnly and $HIP_PLAT + # pass-through CPP mode. + + if ($HIP_PLATFORM eq "amd") { ++ # Append -fno-stack-protector due to stack protection for HIP is not supported ++ $HIPCXXFLAGS .= " -fno-stack-protector"; ++ $HIPCFLAGS .= " -fno-stack-protector"; + # Set default optimization level to -O3 for hip-clang. + if ($optArg eq "") { + $HIPCXXFLAGS .= " -O3"; diff --git a/dev-util/hip/files/hip-5.1.3-llvm-15-noinline-keyword.patch b/dev-util/hip/files/hip-5.1.3-llvm-15-noinline-keyword.patch new file mode 100644 index 000000000000..de61356a5cc6 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-llvm-15-noinline-keyword.patch @@ -0,0 +1,21 @@ +LLVM 15 adds __noinline__ as a keyword to match behaviour of GCC 12. + +When this macro is left in, it can cause the expression __attribute__((__noinline__)) to be expanded incorrectly. + +When the __noinline__ keyword is available disable the macro. + +Ref: https://reviews.llvm.org/D124866 + https://bugs.gentoo.org/85712 +=================================================================== +--- a/include/hip/amd_detail/host_defines.h ++++ b/include/hip/amd_detail/host_defines.h +@@ -47,7 +47,9 @@ THE SOFTWARE. + #define __constant__ __attribute__((constant)) + #endif // !__CLANG_HIP_RUNTIME_WRAPPER_INCLUDED__ + ++#if !defined(__has_feature) || !__has_feature(cuda_noinline_keyword) + #define __noinline__ __attribute__((noinline)) ++#endif + #define __forceinline__ inline __attribute__((always_inline)) + + #if __HIP_NO_IMAGE_SUPPORT diff --git a/dev-util/hip/files/hip-5.1.3-remove-cmake-doxygen-commands.patch b/dev-util/hip/files/hip-5.1.3-remove-cmake-doxygen-commands.patch new file mode 100644 index 000000000000..921452b2ba92 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-remove-cmake-doxygen-commands.patch @@ -0,0 +1,21 @@ +Index: hipamd-rocm-5.1.3/packaging/CMakeLists.txt +=================================================================== +--- hipamd-rocm-5.1.3.orig/packaging/CMakeLists.txt ++++ hipamd-rocm-5.1.3/packaging/CMakeLists.txt +@@ -88,16 +88,6 @@ install(FILES ${CMAKE_BINARY_DIR}/includ + DESTINATION include/hip COMPONENT dev) + #End dev files install + +-#Begin doc files install +-find_program(DOXYGEN_EXE doxygen) +-if(DOXYGEN_EXE) +- add_custom_target(build_doxygen ALL +- COMMAND HIP_PATH=${HIP_COMMON_DIR} doxygen ${HIP_COMMON_DIR}/docs/doxygen-input/doxy.cfg) +- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/RuntimeAPI/html +- DESTINATION docs/RuntimeAPI COMPONENT doc) +-endif() +-#End doc files install +- + #Begin samples files install + install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION ${CMAKE_INSTALL_DOCDIR}/ COMPONENT samples) + #End samples files install diff --git a/dev-util/hip/files/hip-5.1.3-rocm-path.patch b/dev-util/hip/files/hip-5.1.3-rocm-path.patch new file mode 100644 index 000000000000..2ce68b733577 --- /dev/null +++ b/dev-util/hip/files/hip-5.1.3-rocm-path.patch @@ -0,0 +1,13 @@ +explicitly specify `--rocm-path=/usr` because clang does not list +it among the default paths +=================================================================== +--- HIP-rocm-5.1.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.1.3/bin/hipcc.pl +@@ -696,6 +696,7 @@ if ($HIP_PLATFORM eq "amd") { + + if ($hasHIP) { + if ($DEVICE_LIB_PATH ne "$ROCM_PATH/amdgcn/bitcode") { ++ $HIPCXXFLAGS .= " --rocm-path=\"$ROCM_PATH\""; + $HIPCXXFLAGS .= " --hip-device-lib-path=\"$DEVICE_LIB_PATH\""; + } + $HIPCXXFLAGS .= " -fhip-new-launch-api"; diff --git a/dev-util/hip/files/hip-5.3.3-correct-ldflag.patch b/dev-util/hip/files/hip-5.3.3-correct-ldflag.patch new file mode 100644 index 000000000000..20d117841c2b --- /dev/null +++ b/dev-util/hip/files/hip-5.3.3-correct-ldflag.patch @@ -0,0 +1,20 @@ +This removes ldflag -L"/usr/lib" and -Wl,-rpath=/usr/lib:/usr/lib which +causes `ld: skipping incompatible /usr/lib/libm.so when searching for -lm` +Reference: https://github.com/justxi/rocm/issues/8#issuecomment-1166193820 +=================================================================== +Index: HIP-rocm-5.3.3/bin/hipcc.pl +=================================================================== +--- HIP-rocm-5.3.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.3.3/bin/hipcc.pl +@@ -711,9 +711,9 @@ if ($HIP_PLATFORM eq "amd") { + + if (not $isWindows and not $compileOnly) { + if ($linkType eq 0) { +- $toolArgs = " -L$HIP_LIB_PATH -lamdhip64 -L$ROCM_PATH/lib -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; ++ $toolArgs = " -lamdhip64 -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; + } else { +- $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 "; ++ $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -lamdhip64 "; + } + # To support __fp16 and _Float16, explicitly link with compiler-rt + $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; diff --git a/dev-util/hip/files/hip-5.3.3-disable-Werror.patch b/dev-util/hip/files/hip-5.3.3-disable-Werror.patch new file mode 100644 index 000000000000..bed46bd144f4 --- /dev/null +++ b/dev-util/hip/files/hip-5.3.3-disable-Werror.patch @@ -0,0 +1,16 @@ +Index: hipamd-rocm-5.3.3/src/CMakeLists.txt +=================================================================== +--- hipamd-rocm-5.3.3.orig/src/CMakeLists.txt ++++ hipamd-rocm-5.3.3/src/CMakeLists.txt +@@ -44,11 +44,6 @@ if(ADDRESS_SANITIZER) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${ASAN_LINKER_FLAGS} -Wl,--build-id=sha1") + endif() + +-if(CMAKE_COMPILER_IS_GNUCC) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") +-endif() +- + option(DISABLE_DIRECT_DISPATCH "Disable Direct Dispatch" OFF) + + option(BUILD_SHARED_LIBS "Build the shared library" ON) diff --git a/dev-util/hip/files/hip-5.3.3-remove-cmake-doxygen-commands.patch b/dev-util/hip/files/hip-5.3.3-remove-cmake-doxygen-commands.patch new file mode 100644 index 000000000000..c4cd955bed90 --- /dev/null +++ b/dev-util/hip/files/hip-5.3.3-remove-cmake-doxygen-commands.patch @@ -0,0 +1,21 @@ +Index: hipamd-rocm-5.3.3/packaging/CMakeLists.txt +=================================================================== +--- hipamd-rocm-5.3.3.orig/packaging/CMakeLists.txt ++++ hipamd-rocm-5.3.3/packaging/CMakeLists.txt +@@ -94,16 +94,6 @@ install(FILES ${CMAKE_BINARY_DIR}/.hipVe + install(DIRECTORY ${HIP_COMMON_DIR}/cmake/ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/hip COMPONENT dev) + #End dev files install + +-#Begin doc files install +-find_program(DOXYGEN_EXE doxygen) +-if(DOXYGEN_EXE) +- add_custom_target(build_doxygen ALL +- COMMAND HIP_PATH=${HIP_COMMON_DIR} doxygen ${HIP_COMMON_DIR}/docs/doxygen-input/doxy.cfg) +- install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/RuntimeAPI/html +- DESTINATION ${CMAKE_INSTALL_DOCDIR}/RuntimeAPI COMPONENT doc) +-endif() +-#End doc files install +- + #Begin samples files install + install(DIRECTORY ${HIP_COMMON_DIR}/samples DESTINATION ${CMAKE_INSTALL_DATADIR}/hip COMPONENT samples) + #End samples files install diff --git a/dev-util/hip/files/hip-5.4.3-clang-include.patch b/dev-util/hip/files/hip-5.4.3-clang-include.patch new file mode 100644 index 000000000000..21b2c5bac8e8 --- /dev/null +++ b/dev-util/hip/files/hip-5.4.3-clang-include.patch @@ -0,0 +1,30 @@ +diff --git a/bin/hipcc.pl b/bin/hipcc.pl +index a143983..331881e 100755 +--- a/bin/hipcc.pl ++++ b/bin/hipcc.pl +@@ -180,9 +180,6 @@ if ($HIP_PLATFORM eq "amd") { + $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`; + chomp($HIP_CLANG_RT_LIB); + +- if (! defined $HIP_CLANG_INCLUDE_PATH) { +- $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include"); +- } + if (! defined $HIP_INCLUDE_PATH) { + $HIP_INCLUDE_PATH = "$HIP_PATH/include"; + } +@@ -195,15 +192,12 @@ if ($HIP_PLATFORM eq "amd") { + print ("HIP_ROCCLR_HOME=$HIP_ROCCLR_HOME\n"); + } + print ("HIP_CLANG_PATH=$HIP_CLANG_PATH\n"); +- print ("HIP_CLANG_INCLUDE_PATH=$HIP_CLANG_INCLUDE_PATH\n"); + print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n"); + print ("HIP_LIB_PATH=$HIP_LIB_PATH\n"); + print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n"); + print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n"); + } + +- $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; +- $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\""; + $HIPLDFLAGS .= " -L\"$HIP_LIB_PATH\""; + if ($isWindows) { + $HIPLDFLAGS .= " -lamdhip64"; diff --git a/dev-util/hip/files/hip-5.4.3-clang-version.patch b/dev-util/hip/files/hip-5.4.3-clang-version.patch new file mode 100644 index 000000000000..88290db66af0 --- /dev/null +++ b/dev-util/hip/files/hip-5.4.3-clang-version.patch @@ -0,0 +1,70 @@ +From 73430b62a5437d1ba6c36a1d812a1434d1ad9df7 Mon Sep 17 00:00:00 2001 +From: ROCm CI Service Account <66695075+rocm-ci@users.noreply.github.com> +Date: Tue, 20 Dec 2022 06:51:12 +0530 +Subject: [PATCH 1/3] SWDEV-344620 - hipcc fails to parse version of clang in + some cases (#3119) + +Change-Id: I46f716c82a7500b9a2bcaf5f9ff4ad8a8f982770 +Signed-off-by: Yiyang Wu <xgreenlandforwyy@gmail.com> +--- + bin/hipcc.pl | 22 +++++++--------------- + 1 file changed, 7 insertions(+), 15 deletions(-) + +diff --git a/bin/hipcc.pl b/bin/hipcc.pl +index 645ae62d..2a01dcc3 100755 +--- a/bin/hipcc.pl ++++ b/bin/hipcc.pl +@@ -144,7 +144,7 @@ if ($HIP_PLATFORM eq "amd") { + $execExtension = ""; + if($isWindows) { + $execExtension = ".exe"; +- } ++ } + $HIPCC="$HIP_CLANG_PATH/clang++" . $execExtension; + + # If $HIPCC clang++ is not compiled, use clang instead +@@ -176,13 +176,9 @@ if ($HIP_PLATFORM eq "amd") { + $HIPLDFLAGS .= " -fuse-ld=lld"; + $HIPLDFLAGS .= " --ld-path=$HIP_CLANG_PATH/lld-link.exe"; + } +- $HIP_CLANG_VERSION = `$HIPCC --version`; +- $HIP_CLANG_VERSION=~/.*clang version (\S+).*/; +- $HIP_CLANG_VERSION=$1; +- +- # Figure out the target with which llvm is configured +- $HIP_CLANG_TARGET = `$HIPCC -print-target-triple`; +- chomp($HIP_CLANG_TARGET); ++ # get Clang RT Builtin path ++ $HIP_CLANG_RT_LIB = `$HIPCC --print-runtime-dir`; ++ chomp($HIP_CLANG_RT_LIB); + + if (! defined $HIP_CLANG_INCLUDE_PATH) { + $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include"); +@@ -184,7 +181,7 @@ if ($HIP_PLATFORM eq "amd") { + print ("HIP_INCLUDE_PATH=$HIP_INCLUDE_PATH\n"); + print ("HIP_LIB_PATH=$HIP_LIB_PATH\n"); + print ("DEVICE_LIB_PATH=$DEVICE_LIB_PATH\n"); +- print ("HIP_CLANG_TARGET=$HIP_CLANG_TARGET\n"); ++ print ("HIP_CLANG_RT_LIB=$HIP_CLANG_RT_LIB\n"); + } + + if ($isWindows) { +@@ -715,13 +712,8 @@ if ($HIP_PLATFORM eq "amd") { + } else { + $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 "; + } +- # To support __fp16 and _Float16, explicitly link with compiler-rt +- $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; +- if (-e $HIP_CLANG_BUILTIN_LIB) { +- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET -lclang_rt.builtins " +- } else { +- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 " +- } ++ ++ $toolArgs .= " -L$HIP_CLANG_RT_LIB -lclang_rt.builtins-x86_64 " + } + } + +-- +2.38.1 + diff --git a/dev-util/hip/files/hip-5.4.3-correct-ldflag.patch b/dev-util/hip/files/hip-5.4.3-correct-ldflag.patch new file mode 100644 index 000000000000..3dbbb6721f3b --- /dev/null +++ b/dev-util/hip/files/hip-5.4.3-correct-ldflag.patch @@ -0,0 +1,20 @@ +This removes ldflag -L"/usr/lib" and -Wl,-rpath=/usr/lib:/usr/lib which +causes `ld: skipping incompatible /usr/lib/libm.so when searching for -lm` +Reference: https://github.com/justxi/rocm/issues/8#issuecomment-1166193820 +=================================================================== +Index: HIP-rocm-5.3.3/bin/hipcc.pl +=================================================================== +--- HIP-rocm-5.3.3.orig/bin/hipcc.pl ++++ HIP-rocm-5.3.3/bin/hipcc.pl +@@ -711,9 +711,9 @@ if ($HIP_PLATFORM eq "amd") { + + if (not $isWindows and not $compileOnly) { + if ($linkType eq 0) { +- $toolArgs = " -L$HIP_LIB_PATH -lamdhip64 -L$ROCM_PATH/lib -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; ++ $toolArgs = " -lamdhip64 -lhsa-runtime64 -ldl -lnuma " . ${toolArgs}; + } else { +- $toolArgs = ${toolArgs} . " -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 "; ++ $toolArgs = ${toolArgs} . " -Wl,--enable-new-dtags -lamdhip64 "; + } + # To support __fp16 and _Float16, explicitly link with compiler-rt + $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a"; diff --git a/dev-util/hip/files/hip-5.4.3-fix-HIP_CLANG_PATH-detection.patch b/dev-util/hip/files/hip-5.4.3-fix-HIP_CLANG_PATH-detection.patch new file mode 100644 index 000000000000..28277d9d880c --- /dev/null +++ b/dev-util/hip/files/hip-5.4.3-fix-HIP_CLANG_PATH-detection.patch @@ -0,0 +1,26 @@ +From 03a7fd2937c146142fa95d22a0ee10df40442788 Mon Sep 17 00:00:00 2001 +From: Yiyang Wu <xgreenlandforwyy@gmail.com> +Date: Sun, 19 Mar 2023 22:32:01 +0800 +Subject: [PATCH] FindHIP.cmake: fix HIP_CLANG_PATH detection via + HIP_CLANG_INSTALL_DIR + +--- + cmake/FindHIP.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/FindHIP.cmake b/cmake/FindHIP.cmake +index 109c9f65..5dc4c632 100644 +--- a/cmake/FindHIP.cmake ++++ b/cmake/FindHIP.cmake +@@ -255,7 +255,7 @@ elseif("${HIP_COMPILER}" STREQUAL "clang") + if("x${HIP_CLANG_PATH}" STREQUAL "x") + # IF HIP_CLANG_INSTALL_DIR is Found + if( HIP_CLANG_INSTALL_DIR ) +- set(HIP_CLANG_PATH ${HIP_CLANG_INSTALL_DIR}) ++ set(HIP_CLANG_PATH "${HIP_CLANG_INSTALL_DIR}/bin") + else() # IF HIP_CLANG_INSTALL_DIR is not found + if(DEFINED ENV{HIP_CLANG_PATH}) + set(HIP_CLANG_PATH $ENV{HIP_CLANG_PATH}) +-- +2.40.0 + diff --git a/dev-util/hip/files/hip-5.5.1-disable-Werror.patch b/dev-util/hip/files/hip-5.5.1-disable-Werror.patch new file mode 100644 index 000000000000..ee104644fbda --- /dev/null +++ b/dev-util/hip/files/hip-5.5.1-disable-Werror.patch @@ -0,0 +1,18 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 619d6a0..c520db0 100644 +--- hipamd-rocm-5.5.1.orig/src/CMakeLists.txt ++++ hipamd-rocm-5.5.1/src/CMakeLists.txt +@@ -44,13 +44,6 @@ if(ADDRESS_SANITIZER) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${ASAN_LINKER_FLAGS} -Wl,--build-id=sha1") + endif() + +-if(CMAKE_COMPILER_IS_GNUCC) +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") +- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=deprecated-declarations") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror") +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-declarations") +-endif() +- + option(DISABLE_DIRECT_DISPATCH "Disable Direct Dispatch" OFF) + + option(BUILD_SHARED_LIBS "Build the shared library" ON) diff --git a/dev-util/hip/files/hip-5.7.0-install.patch b/dev-util/hip/files/hip-5.7.0-install.patch new file mode 100644 index 000000000000..668e24af7c52 --- /dev/null +++ b/dev-util/hip/files/hip-5.7.0-install.patch @@ -0,0 +1,13 @@ +diff --git a/hipamd/CMakeLists.txt b/hipamd/CMakeLists.txt +index a472c5b7a..ac6fdc2ab 100755 +--- a/hipamd/CMakeLists.txt ++++ b/hipamd/CMakeLists.txt +@@ -396,8 +396,6 @@ if (NOT ${HIPCC_BIN_DIR} STREQUAL "") + install(PROGRAMS ${HIPCC_BIN_DIR}/hipcc.pl DESTINATION bin) + install(PROGRAMS ${HIPCC_BIN_DIR}/hipconfig.pl DESTINATION bin) + install(PROGRAMS ${HIPCC_BIN_DIR}/hipvars.pm DESTINATION bin) +- install(PROGRAMS ${HIPCC_BIN_DIR}/hipcc.bat DESTINATION bin) +- install(PROGRAMS ${HIPCC_BIN_DIR}/hipconfig.bat DESTINATION bin) + endif() + + ############################# diff --git a/dev-util/hip/files/hip-5.7.1-disable-stack-protector.patch b/dev-util/hip/files/hip-5.7.1-disable-stack-protector.patch new file mode 100644 index 000000000000..49d944ef4bc9 --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-disable-stack-protector.patch @@ -0,0 +1,13 @@ +Disable stack-protector (which is enabled by default gentoo-hardened) in device code. +This is not required after https://github.com/llvm/llvm-project/pull/70799, but helps with older clang. +Upstream bug: https://github.com/ROCm-Developer-Tools/clr/issues/21 +--- a/hipamd/src/hiprtc/hiprtcInternal.cpp ++++ b/hipamd/src/hiprtc/hiprtcInternal.cpp +@@ -144,6 +144,7 @@ RTCCompileProgram::RTCCompileProgram(std::string name_) : RTCProgram(name_), fgp + compile_options_.push_back("-nogpuinc"); + compile_options_.push_back("-Wno-gnu-line-marker"); + compile_options_.push_back("-Wno-missing-prototypes"); ++ compile_options_.push_back("-fno-stack-protector"); + #ifdef _WIN32 + compile_options_.push_back("-target"); + compile_options_.push_back("x86_64-pc-windows-msvc"); diff --git a/dev-util/hip/files/hip-5.7.1-exec-stack.patch b/dev-util/hip/files/hip-5.7.1-exec-stack.patch new file mode 100644 index 000000000000..744ca7b953c3 --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-exec-stack.patch @@ -0,0 +1,31 @@ +Upstream bug: https://github.com/ROCm-Developer-Tools/clr/issues/22 +--- a/hipamd/src/hip_embed_pch.sh ++++ b/hipamd/src/hip_embed_pch.sh +@@ -178,6 +178,7 @@ EOF + + echo "// Automatically generated script for HIP RTC." > $mcinFile + if [[ $isWindows -eq 0 ]]; then ++ echo " .section .note.GNU-stack,"",%progbits" >> $mcinFile + echo " .type __hipRTC_header,@object" >> $mcinFile + echo " .type __hipRTC_header_size,@object" >> $mcinFile + fi +--- a/hipamd/src/hiprtc/cmake/HIPRTC.cmake ++++ b/hipamd/src/hiprtc/cmake/HIPRTC.cmake +@@ -98,6 +98,7 @@ macro(generate_hiprtc_mcin HiprtcMcin HiprtcPreprocessedInput) + set(HIPRTC_TYPE_LINUX_ONLY "") + else() + set(HIPRTC_TYPE_LINUX_ONLY ++ " .section .note.GNU-stack,\"\",%progbits\n" + " .type __hipRTC_header,@object\n" + " .type __hipRTC_header_size,@object") + endif() +--- a/hipamd/src/hip_embed_pch.sh ++++ b/hipamd/src/hip_embed_pch.sh +@@ -111,6 +111,7 @@ cat >$tmp/hip_pch.h <<EOF + EOF + + cat >$tmp/hip_pch.mcin <<EOF ++ .section .note.GNU-stack,"",%progbits + .type __hip_pch_wave32,@object + .section .hip_pch_wave32,"aMS",@progbits,1 + .data diff --git a/dev-util/hip/files/hip-5.7.1-extend-isa-compatibility-check.patch b/dev-util/hip/files/hip-5.7.1-extend-isa-compatibility-check.patch new file mode 100644 index 000000000000..7853de693cde --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-extend-isa-compatibility-check.patch @@ -0,0 +1,236 @@ +Combined with matching changes within rocr-runtime ebuild, this patch allows +to load compatible kernels whenever possible. +For example if AMDGPU_TARGETS is set to gfx1030 and some application +was started on gfx1036, it loads gfx1030 kernel. + +Author: Cordell Bloor <cgmb@slerp.xyz> +https://salsa.debian.org/rocm-team/rocm-hipamd/-/blob/master/debian/patches/0025-improve-rocclr-isa-compatibility-check.patch +https://salsa.debian.org/rocm-team/rocm-hipamd/-/blob/master/debian/patches/0026-extend-hip-isa-compatibility-check.patch +--- a/hipamd/src/hip_code_object.cpp ++++ b/hipamd/src/hip_code_object.cpp +@@ -390,47 +390,123 @@ static bool getTripleTargetID(std::string bundled_co_entry_id, const void* code_ + return true; + } + +-static bool isCodeObjectCompatibleWithDevice(std::string co_triple_target_id, +- std::string agent_triple_target_id) { ++struct GfxPattern { ++ std::string root; ++ std::string suffixes; ++}; ++ ++static bool matches(const GfxPattern& p, const std::string& s) { ++ if (p.root.size() + 1 != s.size()) { ++ return false; ++ } ++ if (0 != std::memcmp(p.root.data(), s.data(), p.root.size())) { ++ return false; ++ } ++ return p.suffixes.find(s[p.root.size()]) != std::string::npos; ++} ++ ++static bool isGfx900EquivalentProcessor(const std::string& processor) { ++ return matches(GfxPattern{"gfx90", "029c"}, processor); ++} ++ ++static bool isGfx900SupersetProcessor(const std::string& processor) { ++ return matches(GfxPattern{"gfx90", "0269c"}, processor); ++} ++ ++static bool isGfx1030EquivalentProcessor(const std::string& processor) { ++ return matches(GfxPattern{"gfx103", "0123456"}, processor); ++} ++ ++static bool isGfx1010EquivalentProcessor(const std::string& processor) { ++ return matches(GfxPattern{"gfx101", "02"}, processor); ++} ++ ++static bool isGfx1010SupersetProcessor(const std::string& processor) { ++ return matches(GfxPattern{"gfx101", "0123"}, processor); ++} ++ ++enum CompatibilityScore { ++ CS_EXACT_MATCH = 1 << 4, ++ CS_PROCESSOR_MATCH = 1 << 3, ++ CS_PROCESSOR_COMPATIBLE = 1 << 2, ++ CS_XNACK_SPECIALIZED = 1 << 1, ++ CS_SRAM_ECC_SPECIALIZED = 1 << 0, ++ CS_INCOMPATIBLE = 0, ++}; ++ ++static int getProcessorCompatibilityScore(const std::string& co_processor, ++ const std::string& agent_processor) { ++ if (co_processor == agent_processor) ++ return CS_PROCESSOR_MATCH; ++ ++ if (isGfx900SupersetProcessor(agent_processor)) ++ return isGfx900EquivalentProcessor(co_processor) ? CS_PROCESSOR_COMPATIBLE : CS_INCOMPATIBLE; ++ ++ if (isGfx1010SupersetProcessor(agent_processor)) ++ return isGfx1010EquivalentProcessor(co_processor) ? CS_PROCESSOR_COMPATIBLE : CS_INCOMPATIBLE; ++ ++ if (isGfx1030EquivalentProcessor(agent_processor)) ++ return isGfx1030EquivalentProcessor(co_processor) ? CS_PROCESSOR_COMPATIBLE : CS_INCOMPATIBLE; ++ ++ return CS_INCOMPATIBLE; ++} ++ ++static int getCompatiblityScore(std::string co_triple_target_id, ++ std::string agent_triple_target_id) { + // Primitive Check +- if (co_triple_target_id == agent_triple_target_id) return true; ++ if (co_triple_target_id == agent_triple_target_id) return CS_EXACT_MATCH; + + // Parse code object triple target id + if (!consume(co_triple_target_id, std::string(AMDGCN_TARGET_TRIPLE) + '-')) { +- return false; ++ return CS_INCOMPATIBLE; + } + + std::string co_processor; + char co_sram_ecc, co_xnack; + if (!getTargetIDValue(co_triple_target_id, co_processor, co_sram_ecc, co_xnack)) { +- return false; ++ return CS_INCOMPATIBLE; + } + +- if (!co_triple_target_id.empty()) return false; ++ if (!co_triple_target_id.empty()) return CS_INCOMPATIBLE; + + // Parse agent isa triple target id + if (!consume(agent_triple_target_id, std::string(AMDGCN_TARGET_TRIPLE) + '-')) { +- return false; ++ return CS_INCOMPATIBLE; + } + + std::string agent_isa_processor; + char isa_sram_ecc, isa_xnack; + if (!getTargetIDValue(agent_triple_target_id, agent_isa_processor, isa_sram_ecc, isa_xnack)) { +- return false; ++ return CS_INCOMPATIBLE; + } + +- if (!agent_triple_target_id.empty()) return false; ++ if (!agent_triple_target_id.empty()) return CS_INCOMPATIBLE; + + // Check for compatibility +- if (agent_isa_processor != co_processor) return false; +- if (co_sram_ecc != ' ') { +- if (co_sram_ecc != isa_sram_ecc) return false; ++ int processor_score = getProcessorCompatibilityScore(co_processor, agent_isa_processor); ++ if (processor_score == CS_INCOMPATIBLE) { ++ return CS_INCOMPATIBLE; + } +- if (co_xnack != ' ') { +- if (co_xnack != isa_xnack) return false; ++ ++ int xnack_bonus; ++ if (co_xnack == ' ') { ++ xnack_bonus = 0; ++ } else if (co_xnack == isa_xnack) { ++ xnack_bonus = CS_XNACK_SPECIALIZED; ++ } else { ++ return CS_INCOMPATIBLE; + } + +- return true; ++ int sram_ecc_bonus; ++ if (co_sram_ecc == ' ') { ++ sram_ecc_bonus = 0; ++ } else if (co_sram_ecc == isa_sram_ecc) { ++ sram_ecc_bonus = CS_SRAM_ECC_SPECIALIZED; ++ } else { ++ return CS_INCOMPATIBLE; ++ } ++ ++ return processor_score + xnack_bonus + sram_ecc_bonus; + } + + // This will be moved to COMGR eventually +@@ -483,6 +559,7 @@ hipError_t CodeObject::extractCodeObjectFromFatBinary( + for (size_t i = 0; i < agent_triple_target_ids.size(); i++) { + code_objs.push_back(std::make_pair(nullptr, 0)); + } ++ std::vector<int> compatibility_score(agent_triple_target_ids.size()); + + const auto obheader = reinterpret_cast<const __ClangOffloadBundleHeader*>(data); + const auto* desc = &obheader->desc[0]; +@@ -495,17 +572,19 @@ hipError_t CodeObject::extractCodeObjectFromFatBinary( + reinterpret_cast<const void*>(reinterpret_cast<uintptr_t>(obheader) + desc->offset); + const size_t image_size = desc->size; + +- if (num_code_objs == 0) break; + std::string bundleEntryId{desc->bundleEntryId, desc->bundleEntryIdSize}; + + std::string co_triple_target_id; + if (!getTripleTargetID(bundleEntryId, image, co_triple_target_id)) continue; + + for (size_t dev = 0; dev < agent_triple_target_ids.size(); ++dev) { +- if (code_objs[dev].first) continue; +- if (isCodeObjectCompatibleWithDevice(co_triple_target_id, agent_triple_target_ids[dev])) { ++ if (compatibility_score[dev] >= CS_PROCESSOR_MATCH) continue; ++ int score = getCompatiblityScore(co_triple_target_id, agent_triple_target_ids[dev]); ++ if (score > compatibility_score[dev]) { ++ compatibility_score[dev] = score; ++ if (!code_objs[dev].first) ++ --num_code_objs; + code_objs[dev] = std::make_pair(image, image_size); +- --num_code_objs; + } + } + } +--- a/rocclr/device/device.cpp ++++ b/rocclr/device/device.cpp +@@ -232,10 +232,49 @@ std::string Isa::isaName() const { + return std::string(hsaIsaNamePrefix) + targetId(); + } + ++template <class T, std::size_t N> ++static bool Contains(const std::array<T, N>& arr, const T& value) { ++ return std::find(std::begin(arr), std::end(arr), value) != std::end(arr); ++} ++ ++static bool IsVersionCompatible(const Isa &codeObjectIsa, ++ const Isa &agentIsa) { ++ if (codeObjectIsa.versionMajor() == agentIsa.versionMajor() && ++ codeObjectIsa.versionMinor() == agentIsa.versionMinor()) { ++ ++ if (codeObjectIsa.versionStepping() == agentIsa.versionStepping()) { ++ return true; // exact match ++ } ++ ++ // The code object and the agent may sometimes be compatible if ++ // they differ only by stepping version. ++ if (codeObjectIsa.versionMajor() == 9 && ++ codeObjectIsa.versionMinor() == 0) { ++ const std::array<uint32_t, 4> gfx900_equivalent = { 0, 2, 9, 12 }; ++ const std::array<uint32_t, 5> gfx900_superset = { 0, 2, 6, 9, 12 }; ++ if (Contains(gfx900_equivalent, codeObjectIsa.versionStepping()) && ++ Contains(gfx900_superset, agentIsa.versionStepping())) { ++ return true; // gfx900 compatible object and agent ++ } ++ } else if (codeObjectIsa.versionMajor() == 10) { ++ if (codeObjectIsa.versionMinor() == 1) { ++ const std::array<uint32_t, 2> gfx1010_equivalent = { 0, 2 }; ++ const std::array<uint32_t, 4> gfx1010_superset = { 0, 1, 2, 3 }; ++ if (Contains(gfx1010_equivalent, codeObjectIsa.versionStepping()) && ++ Contains(gfx1010_superset, agentIsa.versionStepping())) { ++ return true; // gfx1010 compatible object and agent ++ } ++ } else if (codeObjectIsa.versionMinor() == 3) { ++ return true; // gfx1030 compatible object and agent ++ } ++ } ++ } ++ ++ return false; ++} ++ + bool Isa::isCompatible(const Isa &codeObjectIsa, const Isa &agentIsa) { +- if (codeObjectIsa.versionMajor() != agentIsa.versionMajor() || +- codeObjectIsa.versionMinor() != agentIsa.versionMinor() || +- codeObjectIsa.versionStepping() != agentIsa.versionStepping()) ++ if (!IsVersionCompatible(codeObjectIsa, agentIsa)) + return false; + + assert(codeObjectIsa.isSrameccSupported() == agentIsa.isSrameccSupported() && diff --git a/dev-util/hip/files/hip-5.7.1-fix-mmap-oom-check.patch b/dev-util/hip/files/hip-5.7.1-fix-mmap-oom-check.patch new file mode 100644 index 000000000000..dbafe4e11a74 --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-fix-mmap-oom-check.patch @@ -0,0 +1,41 @@ +Backport of SWDEV-417691 - Error handling for MemoryMap OS calls. +The issue was fixed in rocclr 6.0.0. +https://github.com/ROCm/clr/commit/7a10423a44b8b353f67539dc1ae14c0b99c209b8 +--- a/rocclr/os/os_posix.cpp ++++ b/rocclr/os/os_posix.cpp +@@ -214,7 +214,7 @@ address Os::reserveMemory(address start, size_t size, size_t alignment, MemProt + MAP_PRIVATE | MAP_NORESERVE | MAP_ANONYMOUS, 0, 0); + + // check for out of memory +- if (mem == NULL) return NULL; ++ if (mem == MAP_FAILED) return NULL; + + address aligned = alignUp(mem, alignment); + +@@ -842,7 +842,7 @@ bool Os::MemoryMapFileDesc(FileDesc fdesc, size_t fsize, size_t foffset, const v + } + + *mmap_ptr = mmap(NULL, fsize, PROT_READ, MAP_SHARED, fdesc, foffset); +- return true; ++ return (*mmap_ptr == MAP_FAILED) ? false : true; + } + + bool Os::MemoryUnmapFile(const void* mmap_ptr, size_t mmap_size) { +@@ -874,7 +874,7 @@ bool Os::MemoryMapFile(const char* fname, const void** mmap_ptr, size_t* mmap_si + + close(fd); + +- if (*mmap_ptr == nullptr) { ++ if (*mmap_ptr == MAP_FAILED) { + return false; + } + +@@ -899,7 +899,7 @@ bool Os::MemoryMapFileTruncated(const char* fname, const void** mmap_ptr, size_t + + close(fd); + +- if (*mmap_ptr == nullptr) { ++ if (*mmap_ptr == MAP_FAILED) { + return false; + } +
\ No newline at end of file diff --git a/dev-util/hip/files/hip-5.7.1-fix-unaligned-access.patch b/dev-util/hip/files/hip-5.7.1-fix-unaligned-access.patch new file mode 100644 index 000000000000..ae2092f6e1ac --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-fix-unaligned-access.patch @@ -0,0 +1,67 @@ +Fix SIGSEGV when compiled with avx-512 instructions. + +Due to unaligned allocations, library crashes in +nontemporalMemcpy in _mm512_stream_si512 (which requires +64-aligned allocations, but used to copy default-aligned objects). + +Without this patch hipamd causes random crashes in hipMemcpy* callers +(tensile, rocBLAS, miopen, rocThrust, etc.). + +Bug: https://bugs.gentoo.org/915969 +Bug report in upstream: https://github.com/ROCm-Developer-Tools/clr/issues/18 +--- a/rocclr/device/rocm/rocvirtual.cpp ++++ b/rocclr/device/rocm/rocvirtual.cpp +@@ -2790,44 +2790,6 @@ bool VirtualGPU::createVirtualQueue(uint deviceQueueSize) + return true; + } + +-// ================================================================================================ +-__attribute__((optimize("unroll-all-loops"), always_inline)) +-static inline void nontemporalMemcpy(void* __restrict dst, const void* __restrict src, +- uint16_t size) { +- #if defined(__AVX512F__) +- for (auto i = 0u; i != size / sizeof(__m512i); ++i) { +- _mm512_stream_si512(reinterpret_cast<__m512i* __restrict&>(dst)++, +- *reinterpret_cast<const __m512i* __restrict&>(src)++); +- } +- size = size % sizeof(__m512i); +- #endif +- +- #if defined(__AVX__) +- for (auto i = 0u; i != size / sizeof(__m256i); ++i) { +- _mm256_stream_si256(reinterpret_cast<__m256i* __restrict&>(dst)++, +- *reinterpret_cast<const __m256i* __restrict&>(src)++); +- } +- size = size % sizeof(__m256i); +- #endif +- +- for (auto i = 0u; i != size / sizeof(__m128i); ++i) { +- _mm_stream_si128(reinterpret_cast<__m128i* __restrict&>(dst)++, +- *(reinterpret_cast<const __m128i* __restrict&>(src)++)); +- } +- size = size % sizeof(__m128i); +- +- for (auto i = 0u; i != size / sizeof(long long); ++i) { +- _mm_stream_si64(reinterpret_cast<long long* __restrict&>(dst)++, +- *reinterpret_cast<const long long* __restrict&>(src)++); +- } +- size = size % sizeof(long long); +- +- for (auto i = 0u; i != size / sizeof(int); ++i) { +- _mm_stream_si32(reinterpret_cast<int* __restrict&>(dst)++, +- *reinterpret_cast<const int* __restrict&>(src)++); +- } +-} +- + // ================================================================================================ + bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, + const amd::Kernel& kernel, const_address parameters, void* eventHandle, +@@ -3096,7 +3058,7 @@ bool VirtualGPU::submitKernelInternal(const amd::NDRangeContainer& sizes, + argBuffer = reinterpret_cast<address>(allocKernArg(gpuKernel.KernargSegmentByteSize(), + gpuKernel.KernargSegmentAlignment())); + // Load all kernel arguments +- nontemporalMemcpy(argBuffer, parameters, ++ memcpy(argBuffer, parameters, + std::min(gpuKernel.KernargSegmentByteSize(), + signature.paramsSize())); + } diff --git a/dev-util/hip/files/hip-5.7.1-no_asan_doc.patch b/dev-util/hip/files/hip-5.7.1-no_asan_doc.patch new file mode 100644 index 000000000000..40de416334be --- /dev/null +++ b/dev-util/hip/files/hip-5.7.1-no_asan_doc.patch @@ -0,0 +1,17 @@ +Donot install -asan documents. + +Reference: +https://github.com/RadeonOpenCompute/llvm-project/commit/e782e09f7b113a0f896c6cec7240d411aca1d73f +https://github.com/RadeonOpenCompute/ROCm-CompilerSupport/issues/61 + +--- a/hipamd/packaging/CMakeLists.txt 2023-11-18 23:25:45.000000000 +0800 ++++ b/hipamd/packaging/CMakeLists.txt 2023-11-18 23:27:27.230354665 +0800 +@@ -36,8 +36,6 @@ + ###Set License#### + set(CPACK_RESOURCE_FILE_LICENSE ${hip_SOURCE_DIR}/LICENSE.txt) + install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DOCDIR} COMPONENT binary) +-# install license file in share/doc/hip-asan folder +-install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${CMAKE_INSTALL_DOCDIR}-asan COMPONENT asan) + set(CPACK_RPM_PACKAGE_LICENSE "MIT") + #Begin binary files install + if(HIP_PLATFORM STREQUAL "amd" ) diff --git a/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch b/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch new file mode 100644 index 000000000000..1d967212ac9a --- /dev/null +++ b/dev-util/hip/files/hip-test-5.7.0-rocm_agent_enumerator-location.patch @@ -0,0 +1,15 @@ +In Gentoo rocm_agent_enumerator is installed by rocminfo and is in PATH. + +--- catch/CMakeLists.txt~ 2023-11-18 13:56:08.000000000 +0800 ++++ catch/CMakeLists.txt 2023-11-18 13:59:28.136170638 +0800 +@@ -182,9 +182,8 @@ + # rocm_agent_enumerator + if(NOT DEFINED OFFLOAD_ARCH_STR + AND NOT DEFINED ENV{HCC_AMDGPU_TARGET} +- AND EXISTS "${ROCM_PATH}/bin/rocm_agent_enumerator" + AND HIP_PLATFORM STREQUAL "amd" AND UNIX) +- execute_process(COMMAND ${ROCM_PATH}/bin/rocm_agent_enumerator ++ execute_process(COMMAND rocm_agent_enumerator + OUTPUT_VARIABLE HIP_GPU_ARCH + RESULT_VARIABLE ROCM_AGENT_ENUM_RESULT) + # Trim out gfx000 diff --git a/dev-util/hip/files/hipvars-5.1.3.pm b/dev-util/hip/files/hipvars-5.1.3.pm new file mode 100644 index 000000000000..7de38b7f3c78 --- /dev/null +++ b/dev-util/hip/files/hipvars-5.1.3.pm @@ -0,0 +1,21 @@ +#!/usr/bin/perl -w +package hipvars; + +$HIP_BASE_VERSION_MAJOR = "@HIP_BASE_VERSION_MAJOR@"; +$HIP_BASE_VERSION_MINOR = "@HIP_BASE_VERSION_MINOR@"; + +$isWindows = 0; +$HIP_PATH='/usr'; +$ROCM_PATH='/usr'; +$CUDA_PATH='/opt/cuda'; +$HSA_PATH='/usr'; +$HIP_CLANG_PATH='@CLANG_PATH@'; +$HIP_CLANG_INCLUDE_PATH='@CLANG_INCLUDE_PATH@'; +$HIP_ROCCLR_HOME=$HIP_PATH; +$HIP_PLATFORM='amd'; +$HIP_COMPILER = "clang"; +$HIP_RUNTIME = "rocclr"; +$HIP_VERSION_MAJOR = $HIP_BASE_VERSION_MAJOR; +$HIP_VERSION_MINOR = $HIP_BASE_VERSION_MINOR; +$HIP_VERSION_PATCH = "@HIP_VERSION_PATCH@"; +$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH"; diff --git a/dev-util/hip/files/hipvars-5.3.3.pm b/dev-util/hip/files/hipvars-5.3.3.pm new file mode 100644 index 000000000000..fd1403661efb --- /dev/null +++ b/dev-util/hip/files/hipvars-5.3.3.pm @@ -0,0 +1,20 @@ +#!/usr/bin/perl -w +package hipvars; + +$HIP_BASE_VERSION_MAJOR = "@HIP_BASE_VERSION_MAJOR@"; +$HIP_BASE_VERSION_MINOR = "@HIP_BASE_VERSION_MINOR@"; + +$isWindows = 0; +$HIP_PATH='/usr'; +$ROCM_PATH='/usr'; +$CUDA_PATH='/opt/cuda'; +$HSA_PATH='/usr'; +$HIP_CLANG_PATH='@CLANG_PATH@'; +$HIP_ROCCLR_HOME=$HIP_PATH; +$HIP_PLATFORM='amd'; +$HIP_COMPILER = "clang"; +$HIP_RUNTIME = "rocclr"; +$HIP_VERSION_MAJOR = $HIP_BASE_VERSION_MAJOR; +$HIP_VERSION_MINOR = $HIP_BASE_VERSION_MINOR; +$HIP_VERSION_PATCH = "@HIP_VERSION_PATCH@"; +$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH"; diff --git a/dev-util/hip/files/hipvars.pm b/dev-util/hip/files/hipvars.pm new file mode 100644 index 000000000000..4c614080a119 --- /dev/null +++ b/dev-util/hip/files/hipvars.pm @@ -0,0 +1,20 @@ +#!/usr/bin/perl -w +package hipvars; + +$HIP_BASE_VERSION_MAJOR = "@HIP_BASE_VERSION_MAJOR@"; +$HIP_BASE_VERSION_MINOR = "@HIP_BASE_VERSION_MINOR@"; + +$isWindows = 0; +$HIP_PATH='/usr/lib/hip'; +$ROCM_PATH='/usr'; +$CUDA_PATH='/opt/cuda'; +$HSA_PATH='/usr'; +$HIP_CLANG_PATH='/usr/lib/llvm/roc/bin'; +$HIP_ROCCLR_HOME=$HIP_PATH; +$HIP_PLATFORM='amd'; +$HIP_COMPILER = "clang"; +$HIP_RUNTIME = "rocclr"; +$HIP_VERSION_MAJOR = $HIP_BASE_VERSION_MAJOR; +$HIP_VERSION_MINOR = $HIP_BASE_VERSION_MINOR; +$HIP_VERSION_PATCH = "@HIP_VERSION_PATCH@"; +$HIP_VERSION="$HIP_VERSION_MAJOR.$HIP_VERSION_MINOR.$HIP_VERSION_PATCH"; diff --git a/dev-util/hip/files/rocclr-5.3.3-fix-include.patch b/dev-util/hip/files/rocclr-5.3.3-fix-include.patch new file mode 100644 index 000000000000..e014fe374bec --- /dev/null +++ b/dev-util/hip/files/rocclr-5.3.3-fix-include.patch @@ -0,0 +1,218 @@ +For https://bugs.gentoo.org/893602 +================================== +From 197ea6f76f34e0b3c8ab46d96c2fa5014e467e37 Mon Sep 17 00:00:00 2001 +From: Maneesh Gupta <maneesh.gupta@amd.com> +Date: Fri, 5 Aug 2022 05:42:39 +0000 +Subject: [PATCH] SWDEV-350289 - Fix build warnings due to file re-org + +Change-Id: I0066fa163b9f25fdde4c5b3baed1ef0654390c06 +--- + device/comgrctx.hpp | 2 +- + device/devkernel.hpp | 2 +- + device/devprogram.hpp | 2 +- + device/rocm/pro/prodevice.cpp | 2 +- + device/rocm/pro/prodriver.hpp | 2 +- + device/rocm/roccounters.hpp | 2 +- + device/rocm/rocdevice.hpp | 8 ++++---- + device/rocm/rocglinterop.hpp | 2 +- + device/rocm/rockernel.cpp | 2 +- + device/rocm/rocprogram.cpp | 2 +- + device/rocm/rocsignal.hpp | 4 ++-- + device/rocm/rocvirtual.cpp | 4 ++-- + device/rocm/rocvirtual.hpp | 8 ++++---- + 13 files changed, 21 insertions(+), 21 deletions(-) + +diff --git a/device/comgrctx.hpp b/device/comgrctx.hpp +index d69506e2..31ee24e1 100644 +--- a/device/comgrctx.hpp ++++ b/device/comgrctx.hpp +@@ -23,7 +23,7 @@ + #include <mutex> + #if defined(USE_COMGR_LIBRARY) + #include "top.hpp" +-#include "amd_comgr.h" ++#include "amd_comgr/amd_comgr.h" + + namespace amd { + typedef void (*t_amd_comgr_get_version)(size_t *major, size_t *minor); +diff --git a/device/devkernel.hpp b/device/devkernel.hpp +index 19b3212d..b256abf3 100644 +--- a/device/devkernel.hpp ++++ b/device/devkernel.hpp +@@ -105,7 +105,7 @@ struct RuntimeHandle { + uint32_t group_segment_size; //!< From GROUP_SEGMENT_FIXED_SIZE + }; + +-#include "amd_comgr.h" ++#include "amd_comgr/amd_comgr.h" + + // for Code Object V3 + enum class ArgField : uint8_t { +diff --git a/device/devprogram.hpp b/device/devprogram.hpp +index 099d6a37..741d81b0 100644 +--- a/device/devprogram.hpp ++++ b/device/devprogram.hpp +@@ -29,7 +29,7 @@ + #include "devwavelimiter.hpp" + + #if defined(USE_COMGR_LIBRARY) +-#include "amd_comgr.h" ++#include "amd_comgr/amd_comgr.h" + #endif // defined(USE_COMGR_LIBRARY) + + namespace amd { +diff --git a/device/rocm/pro/prodevice.cpp b/device/rocm/pro/prodevice.cpp +index a0e49461..1e366cd2 100644 +--- a/device/rocm/pro/prodevice.cpp ++++ b/device/rocm/pro/prodevice.cpp +@@ -20,7 +20,7 @@ + + #ifndef WITHOUT_HSA_BACKEND + +-#include "hsa_ext_amd.h" ++#include "hsa/hsa_ext_amd.h" + #include "lnxheaders.h" + #include "prodevice.hpp" + #include "amdgpu_drm.h" +diff --git a/device/rocm/pro/prodriver.hpp b/device/rocm/pro/prodriver.hpp +index bc420697..819ade27 100644 +--- a/device/rocm/pro/prodriver.hpp ++++ b/device/rocm/pro/prodriver.hpp +@@ -23,7 +23,7 @@ + #ifndef WITHOUT_HSA_BACKEND + + #include "top.hpp" +-#include "hsa.h" ++#include "hsa/hsa.h" + + /*! \addtogroup HSA + * @{ +diff --git a/device/rocm/roccounters.hpp b/device/rocm/roccounters.hpp +index ffc9fad0..45ebbe66 100644 +--- a/device/rocm/roccounters.hpp ++++ b/device/rocm/roccounters.hpp +@@ -24,7 +24,7 @@ + #include "top.hpp" + #include "device/device.hpp" + #include "device/rocm/rocdevice.hpp" +-#include "hsa_ven_amd_aqlprofile.h" ++#include "hsa/hsa_ven_amd_aqlprofile.h" + + namespace roc { + +diff --git a/device/rocm/rocdevice.hpp b/device/rocm/rocdevice.hpp +index d8cb4c6c..44339bb9 100644 +--- a/device/rocm/rocdevice.hpp ++++ b/device/rocm/rocdevice.hpp +@@ -40,10 +40,10 @@ + #include "device/rocm/rocprintf.hpp" + #include "device/rocm/rocglinterop.hpp" + +-#include "hsa.h" +-#include "hsa_ext_image.h" +-#include "hsa_ext_amd.h" +-#include "hsa_ven_amd_loader.h" ++#include "hsa/hsa.h" ++#include "hsa/hsa_ext_image.h" ++#include "hsa/hsa_ext_amd.h" ++#include "hsa/hsa_ven_amd_loader.h" + + #include <atomic> + #include <iostream> +diff --git a/device/rocm/rocglinterop.hpp b/device/rocm/rocglinterop.hpp +index a539cc6f..588d8a6f 100644 +--- a/device/rocm/rocglinterop.hpp ++++ b/device/rocm/rocglinterop.hpp +@@ -34,7 +34,7 @@ typedef __GLXcontextRec* GLXContext; + + #include "device/rocm/mesa_glinterop.h" + #include "device/rocm/rocregisters.hpp" +-#include "hsa_ext_amd.h" ++#include "hsa/hsa_ext_amd.h" + + namespace roc { + +diff --git a/device/rocm/rockernel.cpp b/device/rocm/rockernel.cpp +index 76ab76ad..5624c877 100644 +--- a/device/rocm/rockernel.cpp ++++ b/device/rocm/rockernel.cpp +@@ -19,7 +19,7 @@ + THE SOFTWARE. */ + + #include "rockernel.hpp" +-#include "amd_hsa_kernel_code.h" ++#include "hsa/amd_hsa_kernel_code.h" + + #include <algorithm> + +diff --git a/device/rocm/rocprogram.cpp b/device/rocm/rocprogram.cpp +index e4559645..4f77026d 100644 +--- a/device/rocm/rocprogram.cpp ++++ b/device/rocm/rocprogram.cpp +@@ -25,7 +25,7 @@ + #include "utils/options.hpp" + #include "rockernel.hpp" + +-#include "amd_hsa_kernel_code.h" ++#include "hsa/amd_hsa_kernel_code.h" + + #include <string> + #include <vector> +diff --git a/device/rocm/rocsignal.hpp b/device/rocm/rocsignal.hpp +index 3e8c1e6e..fff310d5 100644 +--- a/device/rocm/rocsignal.hpp ++++ b/device/rocm/rocsignal.hpp +@@ -22,7 +22,7 @@ + + #include "device/devsignal.hpp" + +-#include <hsa.h> ++#include "hsa/hsa.h" + + namespace roc { + +@@ -44,4 +44,4 @@ public: + } + }; + +-}; +\ No newline at end of file ++}; +diff --git a/device/rocm/rocvirtual.cpp b/device/rocm/rocvirtual.cpp +index 63b96378..1b6287e9 100644 +--- a/device/rocm/rocvirtual.cpp ++++ b/device/rocm/rocvirtual.cpp +@@ -33,8 +33,8 @@ + #include "platform/sampler.hpp" + #include "utils/debug.hpp" + #include "os/os.hpp" +-#include "amd_hsa_kernel_code.h" +-#include "amd_hsa_queue.h" ++#include "hsa/amd_hsa_kernel_code.h" ++#include "hsa/amd_hsa_queue.h" + + #include <fstream> + #include <limits> +diff --git a/device/rocm/rocvirtual.hpp b/device/rocm/rocvirtual.hpp +index 6c738776..1bb0868c 100644 +--- a/device/rocm/rocvirtual.hpp ++++ b/device/rocm/rocvirtual.hpp +@@ -24,11 +24,11 @@ + #include "rocdefs.hpp" + #include "rocdevice.hpp" + #include "utils/util.hpp" +-#include "hsa.h" +-#include "hsa_ext_image.h" +-#include "hsa_ext_amd.h" ++#include "hsa/hsa.h" ++#include "hsa/hsa_ext_image.h" ++#include "hsa/hsa_ext_amd.h" + #include "rocprintf.hpp" +-#include "hsa_ven_amd_aqlprofile.h" ++#include "hsa/hsa_ven_amd_aqlprofile.h" + #include "rocsched.hpp" + + namespace roc { +-- +2.39.1 + diff --git a/dev-util/hip/files/rocclr-5.3.3-gcc13.patch b/dev-util/hip/files/rocclr-5.3.3-gcc13.patch new file mode 100644 index 000000000000..09e8a95d585b --- /dev/null +++ b/dev-util/hip/files/rocclr-5.3.3-gcc13.patch @@ -0,0 +1,27 @@ +For https://bugs.gentoo.org/895396 +================================== +From ca70cd7c3d63b1036e604116f3b269ca123e7904 Mon Sep 17 00:00:00 2001 +From: Jeremy Newton <Jeremy.Newton@amd.com> +Date: Wed, 8 Feb 2023 14:03:58 -0500 +Subject: [PATCH] SWDEV-1 - device: Add missing include + +Newer GCC's seem to require this. + +Change-Id: I85926d4fa552b772f2eb9f8ede7863a546c47f54 +Signed-off-by: Jeremy Newton <Jeremy.Newton@amd.com> +--- + device/devhcprintf.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/device/devhcprintf.cpp b/device/devhcprintf.cpp +index b36f7758..a5aba4a4 100644 +--- a/device/devhcprintf.cpp ++++ b/device/devhcprintf.cpp +@@ -23,6 +23,7 @@ + + #include <assert.h> + #include <cstdarg> ++#include <cstdint> + #include <cstdio> + #include <cstring> + #include <string> diff --git a/dev-util/hip/hip-5.1.3-r4.ebuild b/dev-util/hip/hip-5.1.3-r4.ebuild new file mode 100644 index 000000000000..a8654a3e0568 --- /dev/null +++ b/dev-util/hip/hip-5.1.3-r4.ebuild @@ -0,0 +1,177 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" + +inherit cmake docs llvm prefix python-any-r1 + +LLVM_MAX_SLOT=15 + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/hipamd/archive/rocm-${PV}.tar.gz -> rocm-hipamd-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-${PV}.tar.gz -> rocm-hip-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz + https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz + profile? ( https://github.com/ROCm-Developer-Tools/roctracer/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-tracer-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/hipamd/files/8991181/hip_prof_str_diff.gz -> ${P}-update-header.patch.gz + )" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +IUSE="debug profile" + +DEPEND=" + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" +BDEPEND="profile? ( $(python_gen_any_dep ' + dev-python/CppHeaderParser[${PYTHON_USEDEP}] + ') ) +" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.1-DisableTest.patch" + "${FILESDIR}/${PN}-4.2.0-config-cmake-in.patch" + "${FILESDIR}/${PN}-5.0.1-hip_vector_types.patch" + "${FILESDIR}/${PN}-4.2.0-cancel-hcc-header-removal.patch" + "${FILESDIR}/${PN}-5.0.2-set-build-id.patch" + "${FILESDIR}/${PN}-5.1.3-fix-hip_prof_gen.patch" + "${FILESDIR}/${PN}-5.1.3-correct-sample-install-location.patch" + "${FILESDIR}/${PN}-5.1.3-remove-cmake-doxygen-commands.patch" + "${FILESDIR}/0001-SWDEV-316128-HIP-surface-API-support.patch" + "${FILESDIR}/${PN}-5.1.3-llvm-15-noinline-keyword.patch" +) + +python_check_deps() { + if use profile; then + python_has_version "dev-python/CppHeaderParser[${PYTHON_USEDEP}]" + fi +} + +S="${WORKDIR}/hipamd-rocm-${PV}" +HIP_S="${WORKDIR}"/HIP-rocm-${PV} +OCL_S="${WORKDIR}"/ROCm-OpenCL-Runtime-rocm-${PV} +CLR_S="${WORKDIR}"/ROCclr-rocm-${PV} +RTC_S="${WORKDIR}"/roctracer-rocm-${PV} +DOCS_DIR="${HIP_S}"/docs/doxygen-input +DOCS_CONFIG_NAME=doxy.cfg + +src_prepare() { + cmake_src_prepare + use profile && eapply "${WORKDIR}/${P}-update-header.patch" + + eapply_user + + # Use Gentoo slot number, otherwise git hash is attempted in vain. + sed -e "/set (HIP_LIB_VERSION_STRING/cset (HIP_LIB_VERSION_STRING ${SLOT#*/})" -i CMakeLists.txt || die + + # disable PCH, because it results in a build error in ROCm 4.0.0 + sed -e "s:option(__HIP_ENABLE_PCH:#option(__HIP_ENABLE_PCH:" -i CMakeLists.txt || die + + # correctly find HIP_CLANG_INCLUDE_PATH using cmake + local LLVM_PREFIX="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + local CLANG_RESOURCE_DIR=$("${LLVM_PREFIX}/bin/clang" -print-resource-dir) + sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":${LLVM_PREFIX}:" -i hip-config.cmake.in || die + + # correct libs and cmake install dir + sed -e "/LIB_INSTALL_DIR/s:PREFIX}/lib:PREFIX}/$(get_libdir):" \ + -e "/\${HIP_COMMON_DIR}/s:cmake DESTINATION .):cmake/ DESTINATION share/cmake/Modules):" -i CMakeLists.txt || die + sed -e "/LIBRARY DESTINATION/s:lib:$(get_libdir):" -i src/CMakeLists.txt || die + + sed -e "/\.hip/d" \ + -e "s,DESTINATION lib,DESTINATION $(get_libdir),g" \ + -e "/cmake DESTINATION/d" \ + -e "/CPACK_RESOURCE_FILE_LICENSE/d" -i packaging/CMakeLists.txt || die + + pushd ${HIP_S} || die + eapply "${FILESDIR}/${PN}-5.1.3-clang-include-path.patch" + eapply "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" + eapply "${FILESDIR}/${PN}-5.0.2-correct-ldflag.patch" + eapply "${FILESDIR}/${PN}-5.1.3-fno-stack-protector.patch" + # Setting HSA_PATH to "/usr" results in setting "-isystem /usr/include" + # which makes "stdlib.h" not found when using "#include_next" in header files; + sed -e "/FLAGS .= \" -isystem \$HSA_PATH/d" \ + -e "/HIP.*FLAGS.*isystem.*HIP_INCLUDE_PATH/d" \ + -e "s:\$ENV{'DEVICE_LIB_PATH'}:'${EPREFIX}/usr/lib/amdgcn/bitcode':" \ + -e "s:\$ENV{'HIP_LIB_PATH'}:'${EPREFIX}/usr/$(get_libdir)':" \ + -e "/rpath/s,--rpath=[^ ]*,," \ + -e "s,\$HIP_CLANG_PATH/../lib/clang/\$HIP_CLANG_VERSION/,${CLANG_RESOURCE_DIR}/,g" \ + -i bin/hipcc.pl || die + + # change --hip-device-lib-path to "/usr/lib/amdgcn/bitcode", must align with "dev-libs/rocm-device-libs" + sed -e "s:\${AMD_DEVICE_LIBS_PREFIX}/lib:${EPREFIX}/usr/lib/amdgcn/bitcode:" \ + -i "${S}/hip-config.cmake.in" || die + + einfo "prefixing hipcc and its utils..." + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hip-config.cmake.in" "/usr" "${S}") + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hipcc.pl" "/usr" "${HIP_S}") + + cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.1.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm" + sed -e "s,@HIP_BASE_VERSION_MAJOR@,$(ver_cut 1)," -e "s,@HIP_BASE_VERSION_MINOR@,$(ver_cut 2)," \ + -e "s,@HIP_VERSION_PATCH@,$(ver_cut 3)," \ + -e "s,@CLANG_INCLUDE_PATH@,${CLANG_RESOURCE_DIR}/include," \ + -e "s,@CLANG_PATH@,${LLVM_PREFIX}/bin," -i bin/hipvars.pm || die + + sed -e "/HIP_CLANG_INCLUDE_SEARCH_PATHS/s,\${_IMPORT_PREFIX}.*/include,${CLANG_RESOURCE_DIR}/include," -i hip-lang-config.cmake.in || die + popd || die + sed -e "/HIP_CLANG_INCLUDE_SEARCH_PATHS/s,\${HIP_CLANG_ROOT}.*/include,${CLANG_RESOURCE_DIR}/include," -i hip-config.cmake.in || die + + pushd ${CLR_S} || die + eapply "${FILESDIR}/rocclr-5.3.3-fix-include.patch" +} + +src_configure() { + use debug && CMAKE_BUILD_TYPE="Debug" + + # TODO: Currently a GENTOO configuration is build, + # this is also used in the cmake configuration files + # which will be installed to find HIP; + # Other ROCm packages expect a "RELEASE" configuration, + # see "hipBLAS" + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMPILER=clang + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=$(usex profile 1 0) + -DROCCLR_PATH=${CLR_S} + -DHIP_COMMON_DIR=${HIP_S} + -DAMD_OPENCL_PATH=${OCL_S} + ) + + use profile && mycmakeargs+=( -DPROF_API_HEADER_PATH="${RTC_S}"/inc/ext ) + + cmake_src_configure +} + +src_compile() { + HIP_PATH=${HIP_S} docs_compile + cmake_src_compile +} + +src_install() { + + cmake_src_install + + rm "${ED}/usr/include/hip/hcc_detail" || die + + # Don't install .hipInfo and .hipVersion to bin/lib + rm "${ED}/usr/lib/.hipInfo" "${ED}/usr/bin/.hipVersion" || die +} diff --git a/dev-util/hip/hip-5.3.3-r3.ebuild b/dev-util/hip/hip-5.3.3-r3.ebuild new file mode 100644 index 000000000000..c03da0d6effc --- /dev/null +++ b/dev-util/hip/hip-5.3.3-r3.ebuild @@ -0,0 +1,152 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" + +inherit cmake docs llvm prefix + +LLVM_MAX_SLOT=15 + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/hipamd/archive/rocm-${PV}.tar.gz -> rocm-hipamd-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-${PV}.tar.gz -> rocm-hip-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz + https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +IUSE="debug" + +DEPEND=" + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.1-DisableTest.patch" + "${FILESDIR}/${PN}-5.0.1-hip_vector_types.patch" + "${FILESDIR}/${PN}-5.0.2-set-build-id.patch" + "${FILESDIR}/${PN}-5.3.3-remove-cmake-doxygen-commands.patch" + "${FILESDIR}/${PN}-5.3.3-disable-Werror.patch" + "${FILESDIR}/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch" +) + +S="${WORKDIR}/hipamd-rocm-${PV}" +HIP_S="${WORKDIR}"/HIP-rocm-${PV} +OCL_S="${WORKDIR}"/ROCm-OpenCL-Runtime-rocm-${PV} +CLR_S="${WORKDIR}"/ROCclr-rocm-${PV} +RTC_S="${WORKDIR}"/roctracer-rocm-${PV} +DOCS_DIR="${HIP_S}"/docs/doxygen-input +DOCS_CONFIG_NAME=doxy.cfg + +pkg_setup() { + # Ignore QA FLAGS check for library compiled from assembly sources + QA_FLAGS_IGNORED="/usr/$(get_libdir)/libhiprtc-builtins.so.$(ver_cut 1-2)" +} + +src_prepare() { + cmake_src_prepare + + eapply_user + + # Use Gentoo slot number, otherwise git hash is attempted in vain. + sed -e "/set (HIP_LIB_VERSION_STRING/cset (HIP_LIB_VERSION_STRING ${SLOT#*/})" -i CMakeLists.txt || die + + # correctly find HIP_CLANG_INCLUDE_PATH using cmake + local LLVM_PREFIX="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":${LLVM_PREFIX}:" -i hip-config.cmake.in || die + + # correct libs and cmake install dir + sed -e "/\${HIP_COMMON_DIR}/s:cmake DESTINATION .):cmake/ DESTINATION share/cmake/Modules):" -i CMakeLists.txt || die + + sed -e "/\.hip/d" \ + -e "/CPACK_RESOURCE_FILE_LICENSE/d" -i packaging/CMakeLists.txt || die + + pushd ${HIP_S} || die + eapply "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" + eapply "${FILESDIR}/${PN}-5.1.3-fno-stack-protector.patch" + eapply "${FILESDIR}/${PN}-5.3.3-correct-ldflag.patch" + eapply "${FILESDIR}/0001-SWDEV-344620-hipcc-fails-to-parse-version-of-clang-i.patch" + eapply "${FILESDIR}/0002-SWDEV-355608-Remove-clang-include-path-2996.patch" + eapply "${FILESDIR}/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch" + eapply "${FILESDIR}/${PN}-5.4.3-fix-HIP_CLANG_PATH-detection.patch" + # Setting HSA_PATH to "/usr" results in setting "-isystem /usr/include" + # which makes "stdlib.h" not found when using "#include_next" in header files; + sed -e "/FLAGS .= \" -isystem \$HSA_PATH/d" \ + -e "/HIP.*FLAGS.*isystem.*HIP_INCLUDE_PATH/d" \ + -e "s:\$ENV{'DEVICE_LIB_PATH'}:'${EPREFIX}/usr/lib/amdgcn/bitcode':" \ + -e "s:\$ENV{'HIP_LIB_PATH'}:'${EPREFIX}/usr/$(get_libdir)':" \ + -e "/rpath/s,--rpath=[^ ]*,," -i bin/hipcc.pl || die + + # change --hip-device-lib-path to "/usr/lib/amdgcn/bitcode", must align with "dev-libs/rocm-device-libs" + sed -e "s:\${AMD_DEVICE_LIBS_PREFIX}/lib:${EPREFIX}/usr/lib/amdgcn/bitcode:" \ + -i "${S}/hip-config.cmake.in" || die + + einfo "prefixing hipcc and its utils..." + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hip-config.cmake.in" "/usr" "${S}") + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hipcc.pl" "/usr" "${HIP_S}") + + cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.3.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm" + sed -e "s,@HIP_BASE_VERSION_MAJOR@,$(ver_cut 1)," -e "s,@HIP_BASE_VERSION_MINOR@,$(ver_cut 2)," \ + -e "s,@HIP_VERSION_PATCH@,$(ver_cut 3)," \ + -e "s,@CLANG_PATH@,${LLVM_PREFIX}/bin," -i bin/hipvars.pm || die + popd || die + + pushd ${CLR_S} || die + eapply "${FILESDIR}/rocclr-${PV}-fix-include.patch" + eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" +} + +src_configure() { + use debug && CMAKE_BUILD_TYPE="Debug" + + # TODO: Currently a GENTOO configuration is build, + # this is also used in the cmake configuration files + # which will be installed to find HIP; + # Other ROCm packages expect a "RELEASE" configuration, + # see "hipBLAS" + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMPILER=clang + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=0 + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DROCCLR_PATH=${CLR_S} + -DHIP_COMMON_DIR=${HIP_S} + -DAMD_OPENCL_PATH=${OCL_S} + ) + + cmake_src_configure +} + +src_compile() { + HIP_PATH=${HIP_S} docs_compile + cmake_src_compile +} + +src_install() { + + cmake_src_install + + rm "${ED}/usr/include/hip/hcc_detail" || die + + # Don't install .hipInfo and .hipVersion to bin/lib + rm "${ED}/usr/bin/.hipVersion" || die +} diff --git a/dev-util/hip/hip-5.4.3.ebuild b/dev-util/hip/hip-5.4.3.ebuild new file mode 100644 index 000000000000..7798aab3e444 --- /dev/null +++ b/dev-util/hip/hip-5.4.3.ebuild @@ -0,0 +1,152 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" + +inherit cmake docs llvm prefix + +LLVM_MAX_SLOT=15 + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/hipamd/archive/rocm-${PV}.tar.gz -> rocm-hipamd-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-${PV}.tar.gz -> rocm-hip-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz + https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +IUSE="debug" + +DEPEND=" + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.1-DisableTest.patch" + "${FILESDIR}/${PN}-5.0.1-hip_vector_types.patch" + "${FILESDIR}/${PN}-5.0.2-set-build-id.patch" + "${FILESDIR}/${PN}-5.3.3-remove-cmake-doxygen-commands.patch" + "${FILESDIR}/${PN}-5.3.3-disable-Werror.patch" + "${FILESDIR}/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch" +) + +S="${WORKDIR}/hipamd-rocm-${PV}" +HIP_S="${WORKDIR}"/HIP-rocm-${PV} +OCL_S="${WORKDIR}"/ROCm-OpenCL-Runtime-rocm-${PV} +CLR_S="${WORKDIR}"/ROCclr-rocm-${PV} +RTC_S="${WORKDIR}"/roctracer-rocm-${PV} +DOCS_DIR="${HIP_S}"/docs/doxygen-input +DOCS_CONFIG_NAME=doxy.cfg + +pkg_setup() { + # Ignore QA FLAGS check for library compiled from assembly sources + QA_FLAGS_IGNORED="/usr/$(get_libdir)/libhiprtc-builtins.so.$(ver_cut 1-2)" +} + +src_prepare() { + cmake_src_prepare + + eapply_user + + # Use Gentoo slot number, otherwise git hash is attempted in vain. + sed -e "/set (HIP_LIB_VERSION_STRING/cset (HIP_LIB_VERSION_STRING ${SLOT#*/})" -i CMakeLists.txt || die + + # correctly find HIP_CLANG_INCLUDE_PATH using cmake + local LLVM_PREFIX="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":${LLVM_PREFIX}:" -i hip-config.cmake.in || die + + # correct libs and cmake install dir + sed -e "/\${HIP_COMMON_DIR}/s:cmake DESTINATION .):cmake/ DESTINATION share/cmake/Modules):" -i CMakeLists.txt || die + + sed -e "/\.hip/d" \ + -e "/CPACK_RESOURCE_FILE_LICENSE/d" -i packaging/CMakeLists.txt || die + + pushd ${HIP_S} || die + eapply "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" + eapply "${FILESDIR}/${PN}-5.1.3-fno-stack-protector.patch" + eapply "${FILESDIR}/${PN}-5.4.3-correct-ldflag.patch" + eapply "${FILESDIR}/${PN}-5.4.3-clang-version.patch" + eapply "${FILESDIR}/${PN}-5.4.3-clang-include.patch" + eapply "${FILESDIR}/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch" + eapply "${FILESDIR}/${PN}-5.4.3-fix-HIP_CLANG_PATH-detection.patch" + + # Setting HSA_PATH to "/usr" results in setting "-isystem /usr/include" + # which makes "stdlib.h" not found when using "#include_next" in header files; + sed -e "/FLAGS .= \" -isystem \$HSA_PATH/d" \ + -e "/HIP.*FLAGS.*isystem.*HIP_INCLUDE_PATH/d" \ + -e "s:\$ENV{'DEVICE_LIB_PATH'}:'${EPREFIX}/usr/lib/amdgcn/bitcode':" \ + -e "s:\$ENV{'HIP_LIB_PATH'}:'${EPREFIX}/usr/$(get_libdir)':" \ + -e "/rpath/s,--rpath=[^ ]*,," -i bin/hipcc.pl || die + + # change --hip-device-lib-path to "/usr/lib/amdgcn/bitcode", must align with "dev-libs/rocm-device-libs" + sed -e "s:\${AMD_DEVICE_LIBS_PREFIX}/lib:${EPREFIX}/usr/lib/amdgcn/bitcode:" \ + -i "${S}/hip-config.cmake.in" || die + + einfo "prefixing hipcc and its utils..." + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hip-config.cmake.in" "/usr" "${S}") + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hipcc.pl" "/usr" "${HIP_S}") + + cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.3.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm" + sed -e "s,@HIP_BASE_VERSION_MAJOR@,$(ver_cut 1)," -e "s,@HIP_BASE_VERSION_MINOR@,$(ver_cut 2)," \ + -e "s,@HIP_VERSION_PATCH@,$(ver_cut 3)," \ + -e "s,@CLANG_PATH@,${LLVM_PREFIX}/bin," -i bin/hipvars.pm || die + popd || die + + pushd ${CLR_S} || die + eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" +} + +src_configure() { + use debug && CMAKE_BUILD_TYPE="Debug" + + # TODO: Currently a GENTOO configuration is build, + # this is also used in the cmake configuration files + # which will be installed to find HIP; + # Other ROCm packages expect a "RELEASE" configuration, + # see "hipBLAS" + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMPILER=clang + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=0 + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DROCCLR_PATH=${CLR_S} + -DHIP_COMMON_DIR=${HIP_S} + -DAMD_OPENCL_PATH=${OCL_S} + ) + + cmake_src_configure +} + +src_compile() { + HIP_PATH=${HIP_S} docs_compile + cmake_src_compile +} + +src_install() { + + cmake_src_install + + rm "${ED}/usr/include/hip/hcc_detail" || die + + # Don't install .hipInfo and .hipVersion to bin/lib + rm "${ED}/usr/bin/.hipVersion" || die +} diff --git a/dev-util/hip/hip-5.5.1.ebuild b/dev-util/hip/hip-5.5.1.ebuild new file mode 100644 index 000000000000..276e8628ad9c --- /dev/null +++ b/dev-util/hip/hip-5.5.1.ebuild @@ -0,0 +1,152 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" + +inherit cmake docs llvm prefix + +LLVM_MAX_SLOT=16 + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/hipamd/archive/rocm-${PV}.tar.gz -> rocm-hipamd-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/rocm-${PV}.tar.gz -> rocm-hip-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/ROCclr/archive/rocm-${PV}.tar.gz -> rocclr-${PV}.tar.gz + https://github.com/RadeonOpenCompute/ROCm-OpenCL-Runtime/archive/rocm-${PV}.tar.gz -> rocm-opencl-runtime-${PV}.tar.gz" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +IUSE="debug" + +DEPEND=" + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" + +PATCHES=( + "${FILESDIR}/${PN}-5.0.1-DisableTest.patch" + "${FILESDIR}/${PN}-5.0.1-hip_vector_types.patch" + "${FILESDIR}/${PN}-5.0.2-set-build-id.patch" + "${FILESDIR}/${PN}-5.3.3-remove-cmake-doxygen-commands.patch" + "${FILESDIR}/${PN}-5.5.1-disable-Werror.patch" + #"${FILESDIR}/0001-SWDEV-352878-LLVM-pkg-search-directly-using-find_dep.patch" +) + +S="${WORKDIR}/hipamd-rocm-${PV}" +HIP_S="${WORKDIR}"/HIP-rocm-${PV} +OCL_S="${WORKDIR}"/ROCm-OpenCL-Runtime-rocm-${PV} +CLR_S="${WORKDIR}"/ROCclr-rocm-${PV} +RTC_S="${WORKDIR}"/roctracer-rocm-${PV} +DOCS_DIR="${HIP_S}"/docs/doxygen-input +DOCS_CONFIG_NAME=doxy.cfg + +pkg_setup() { + # Ignore QA FLAGS check for library compiled from assembly sources + QA_FLAGS_IGNORED="/usr/$(get_libdir)/libhiprtc-builtins.so.$(ver_cut 1-2)" +} + +src_prepare() { + cmake_src_prepare + + eapply_user + + # Use Gentoo slot number, otherwise git hash is attempted in vain. + sed -e "/set (HIP_LIB_VERSION_STRING/cset (HIP_LIB_VERSION_STRING ${SLOT#*/})" -i CMakeLists.txt || die + + # correctly find HIP_CLANG_INCLUDE_PATH using cmake + local LLVM_PREFIX="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + sed -e "/set(HIP_CLANG_ROOT/s:\"\${ROCM_PATH}/llvm\":${LLVM_PREFIX}:" -i hip-config.cmake.in || die + + # correct libs and cmake install dir + sed -e "/\${HIP_COMMON_DIR}/s:cmake DESTINATION .):cmake/ DESTINATION share/cmake/Modules):" -i CMakeLists.txt || die + + sed -e "/\.hip/d" \ + -e "/CPACK_RESOURCE_FILE_LICENSE/d" -i packaging/CMakeLists.txt || die + + pushd ${HIP_S} || die + eapply "${FILESDIR}/${PN}-5.1.3-rocm-path.patch" + eapply "${FILESDIR}/${PN}-5.1.3-fno-stack-protector.patch" + #eapply "${FILESDIR}/${PN}-5.4.3-correct-ldflag.patch" + #eapply "${FILESDIR}/${PN}-5.4.3-clang-version.patch" + #eapply "${FILESDIR}/${PN}-5.4.3-clang-include.patch" + #eapply "${FILESDIR}/0003-SWDEV-352878-Removed-relative-path-based-CLANG-inclu.patch" + eapply "${FILESDIR}/${PN}-5.4.3-fix-HIP_CLANG_PATH-detection.patch" + + # Setting HSA_PATH to "/usr" results in setting "-isystem /usr/include" + # which makes "stdlib.h" not found when using "#include_next" in header files; + sed -e "/FLAGS .= \" -isystem \$HSA_PATH/d" \ + -e "/HIP.*FLAGS.*isystem.*HIP_INCLUDE_PATH/d" \ + -e "s:\$ENV{'DEVICE_LIB_PATH'}:'${EPREFIX}/usr/lib/amdgcn/bitcode':" \ + -e "s:\$ENV{'HIP_LIB_PATH'}:'${EPREFIX}/usr/$(get_libdir)':" \ + -e "/rpath/s,--rpath=[^ ]*,," -i bin/hipcc.pl || die + + # change --hip-device-lib-path to "/usr/lib/amdgcn/bitcode", must align with "dev-libs/rocm-device-libs" + sed -e "s:\${AMD_DEVICE_LIBS_PREFIX}/lib:${EPREFIX}/usr/lib/amdgcn/bitcode:" \ + -i "${S}/hip-config.cmake.in" || die + + einfo "prefixing hipcc and its utils..." + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hip-config.cmake.in" "/usr" "${S}") + hprefixify $(grep -rl --exclude-dir=build/ --exclude="hipcc.pl" "/usr" "${HIP_S}") + + cp "$(prefixify_ro "${FILESDIR}"/hipvars-5.3.3.pm)" bin/hipvars.pm || die "failed to replace hipvars.pm" + sed -e "s,@HIP_BASE_VERSION_MAJOR@,$(ver_cut 1)," -e "s,@HIP_BASE_VERSION_MINOR@,$(ver_cut 2)," \ + -e "s,@HIP_VERSION_PATCH@,$(ver_cut 3)," \ + -e "s,@CLANG_PATH@,${LLVM_PREFIX}/bin," -i bin/hipvars.pm || die + popd || die + + pushd ${CLR_S} || die + eapply "${FILESDIR}/rocclr-5.3.3-gcc13.patch" +} + +src_configure() { + use debug && CMAKE_BUILD_TYPE="Debug" + + # TODO: Currently a GENTOO configuration is build, + # this is also used in the cmake configuration files + # which will be installed to find HIP; + # Other ROCm packages expect a "RELEASE" configuration, + # see "hipBLAS" + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr" + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMPILER=clang + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=0 + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DROCCLR_PATH=${CLR_S} + -DHIP_COMMON_DIR=${HIP_S} + -DAMD_OPENCL_PATH=${OCL_S} + ) + + cmake_src_configure +} + +src_compile() { + HIP_PATH=${HIP_S} docs_compile + cmake_src_compile +} + +src_install() { + + cmake_src_install + + rm "${ED}/usr/include/hip/hcc_detail" || die + + # Don't install .hipInfo and .hipVersion to bin/lib + rm "${ED}/usr/bin/.hipVersion" || die +} diff --git a/dev-util/hip/hip-5.7.1-r2.ebuild b/dev-util/hip/hip-5.7.1-r2.ebuild new file mode 100644 index 000000000000..c6c7376c0297 --- /dev/null +++ b/dev-util/hip/hip-5.7.1-r2.ebuild @@ -0,0 +1,176 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" +ROCM_SKIP_GLOBALS=1 + +inherit cmake docs llvm rocm flag-o-matic + +LLVM_MAX_SLOT=17 + +TEST_PV=5.7.0 # No hip-test-5.7.1 release + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-${PV}.tar.gz -> hip-${PV}.tar.gz + test? ( https://github.com/ROCm-Developer-Tools/hip-tests/archive/refs/tags/rocm-${TEST_PV}.tar.gz )" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +RESTRICT="!test? ( test )" +IUSE="debug test" + +DEPEND=" + dev-util/hipcc + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + >=dev-libs/rocr-runtime-5.6 + x11-base/xorg-proto + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" + +PATCHES=( + "${FILESDIR}/${PN}-5.7.0-install.patch" + "${FILESDIR}/${PN}-5.7.1-fix-unaligned-access.patch" + "${FILESDIR}/${PN}-5.7.1-exec-stack.patch" + "${FILESDIR}/${PN}-5.7.1-disable-stack-protector.patch" + "${FILESDIR}/${PN}-5.7.1-no_asan_doc.patch" + "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch" + "${FILESDIR}/${PN}-5.7.1-fix-mmap-oom-check.patch" +) + +S="${WORKDIR}/clr-rocm-${PV}/" + +hip_test_wrapper() { + local S="${WORKDIR}/hip-tests-rocm-${TEST_PV}/catch" + local CMAKE_USE_DIR="${S}" + local BUILD_DIR="${S}_build" + cd "${S}" || die + $@ +} + +src_prepare() { + # Set HIP and HIP Clang paths directly, don't search using heuristics + sed -e "s:# Search for HIP installation:set(HIP_ROOT_DIR \"${EPREFIX}/usr\"):" \ + -e "s:#Set HIP_CLANG_PATH:set(HIP_CLANG_PATH \"$(get_llvm_prefix -d ${LLVM_MAX_SLOT})/bin\"):" \ + -i "${WORKDIR}"/HIP-rocm-${PV}/cmake/FindHIP.cmake || die + + # https://github.com/ROCm-Developer-Tools/HIP/commit/405d029422ba8bb6be5a233d5eebedd2ad2e8bd3 + # https://github.com/ROCm-Developer-Tools/clr/commit/ab6d34ae773f4d151e04170c0f4e46c1135ddf3e + # Migrated to hip-test, but somehow the change is not applied to the tarball. + rm -rf "${WORKDIR}"/HIP-rocm-${PV}/tests || die + sed -e '/tests.*cmake/d' -i hipamd/CMakeLists.txt || die + + cmake_src_prepare + + if use test; then + PATCHES=${FILESDIR}/hip-test-5.7.0-rocm_agent_enumerator-location.patch \ + hip_test_wrapper cmake_src_prepare + fi +} + +src_configure() { + # -Werror=strict-aliasing + # https://bugs.gentoo.org/858383 + # https://github.com/ROCm/clr/issues/64 + # + # Do not trust it for LTO either + append-flags -fno-strict-aliasing + filter-lto + + # Workaround for bug #923986 + append-ldflags $(test-flags-CCLD -Wl,--undefined-version) + + use debug && CMAKE_BUILD_TYPE="Debug" + + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMMON_DIR="${WORKDIR}/HIP-rocm-${PV}" + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=0 + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DCLR_BUILD_HIP=ON + -DHIPCC_BIN_DIR="${EPREFIX}/usr/bin" + -DOpenGL_GL_PREFERENCE="GLVND" + ) + + cmake_src_configure + + if use test; then + local mycmakeargs=( + -DROCM_PATH="${BUILD_DIR}"/hipamd + -DHIP_PLATFORM=amd + ) + hip_test_wrapper cmake_src_configure + fi +} + +src_compile() { + cmake_src_compile + + if use test; then + HIP_PATH="${BUILD_DIR}"/hipamd \ + hip_test_wrapper cmake_src_compile build_tests + fi +} + +src_test() { + check_amdgpu + export LD_LIBRARY_PATH="${BUILD_DIR}/hipamd/lib" + + # TODO: research how to test Vulkan-related features. + local CMAKE_SKIP_TESTS=( + Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Positive_Read_Write + Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Negative_Parameters + Unit_hipImportExternalMemory_Vulkan_Negative_Parameters + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Negative_Parameters + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Negative_Parameters + Unit_hipImportExternalSemaphore_Vulkan_Negative_Parameters + Unit_hipDestroyExternalSemaphore_Vulkan_Negative_Parameters + ) + + MAKEOPTS="-j1" hip_test_wrapper cmake_src_test +} + +src_install() { + cmake_src_install + + # add version file that is required by some libraries + mkdir "${ED}"/usr/include/rocm-core || die + cat <<EOF > "${ED}"/usr/include/rocm-core/rocm_version.h || die +#pragma once +#define ROCM_VERSION_MAJOR $(ver_cut 1) +#define ROCM_VERSION_MINOR $(ver_cut 2) +#define ROCM_VERSION_PATCH $(ver_cut 3) +#define ROCM_BUILD_INFO "$(ver_cut 1-3).0-9999-unknown" +EOF + dosym -r /usr/include/rocm-core/rocm_version.h /usr/include/rocm_version.h + + rm "${ED}/usr/include/hip/hcc_detail" || die + + # files already installed by hipcc, which is a build dep + rm "${ED}/usr/bin/hipconfig.pl" || die + rm "${ED}/usr/bin/hipcc.pl" || die + rm "${ED}/usr/bin/hipcc" || die + rm "${ED}/usr/bin/hipconfig" || die + rm "${ED}/usr/bin/hipvars.pm" || die +} diff --git a/dev-util/hip/hip-6.0.0.ebuild b/dev-util/hip/hip-6.0.0.ebuild new file mode 100644 index 000000000000..ff53e07dc49a --- /dev/null +++ b/dev-util/hip/hip-6.0.0.ebuild @@ -0,0 +1,164 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DOCS_BUILDER="doxygen" +DOCS_DEPEND="media-gfx/graphviz" +ROCM_SKIP_GLOBALS=1 + +inherit cmake docs flag-o-matic llvm rocm + +LLVM_MAX_SLOT=17 + +TEST_PV=5.7.0 # No hip-test-5.7.1 release + +DESCRIPTION="C++ Heterogeneous-Compute Interface for Portability" +HOMEPAGE="https://github.com/ROCm-Developer-Tools/hipamd" +SRC_URI="https://github.com/ROCm-Developer-Tools/clr/archive/refs/tags/rocm-${PV}.tar.gz -> rocm-clr-${PV}.tar.gz + https://github.com/ROCm-Developer-Tools/HIP/archive/refs/tags/rocm-${PV}.tar.gz -> hip-${PV}.tar.gz + test? ( https://github.com/ROCm-Developer-Tools/hip-tests/archive/refs/tags/rocm-${TEST_PV}.tar.gz )" + +KEYWORDS="~amd64" +LICENSE="MIT" +SLOT="0/$(ver_cut 1-2)" + +RESTRICT="!test? ( test )" +IUSE="debug test" + +DEPEND=" + dev-util/hipcc + >=dev-util/rocminfo-5 + sys-devel/clang:${LLVM_MAX_SLOT} + dev-libs/rocm-comgr:${SLOT} + >=dev-libs/rocr-runtime-5.6 + x11-base/xorg-proto + virtual/opengl +" +RDEPEND="${DEPEND} + dev-perl/URI-Encode + sys-devel/clang-runtime:= + >=dev-libs/roct-thunk-interface-5" + +PATCHES=( + "${FILESDIR}/${PN}-5.7.0-install.patch" + "${FILESDIR}/${PN}-5.7.1-fix-unaligned-access.patch" + "${FILESDIR}/${PN}-5.7.1-exec-stack.patch" + "${FILESDIR}/${PN}-5.7.1-disable-stack-protector.patch" + "${FILESDIR}/${PN}-5.7.1-no_asan_doc.patch" + "${FILESDIR}/${PN}-5.7.1-extend-isa-compatibility-check.patch" +) + +S="${WORKDIR}/clr-rocm-${PV}/" + +hip_test_wrapper() { + local S="${WORKDIR}/hip-tests-rocm-${TEST_PV}/catch" + local CMAKE_USE_DIR="${S}" + local BUILD_DIR="${S}_build" + cd "${S}" || die + $@ +} + +src_prepare() { + # hipamd is itself built by cmake, and should never provide a + # FindHIP.cmake module. + rm -r "${WORKDIR}"/HIP-rocm-${PV}/cmake/FindHIP* || die + + # https://github.com/ROCm-Developer-Tools/HIP/commit/405d029422ba8bb6be5a233d5eebedd2ad2e8bd3 + # https://github.com/ROCm-Developer-Tools/clr/commit/ab6d34ae773f4d151e04170c0f4e46c1135ddf3e + # Migrated to hip-test, but somehow the change is not applied to the tarball. + rm -rf "${WORKDIR}"/HIP-rocm-${PV}/tests || die + sed -e '/tests.*cmake/d' -i hipamd/CMakeLists.txt || die + + cmake_src_prepare + + if use test; then + PATCHES=${FILESDIR}/hip-test-5.7.0-rocm_agent_enumerator-location.patch \ + hip_test_wrapper cmake_src_prepare + fi +} + +src_configure() { + # -Werror=strict-aliasing + # https://bugs.gentoo.org/858383 + # https://github.com/ROCm/clr/issues/64 + # + # Do not trust it for LTO either + append-flags -fno-strict-aliasing + filter-lto + + use debug && CMAKE_BUILD_TYPE="Debug" + + # Fix ld.lld linker error: https://github.com/ROCm/HIP/issues/3382 + # See also: https://github.com/gentoo/gentoo/pull/29097 + append-ldflags $(tc-flags-CCLD -Wl,--undefined-version) + + local mycmakeargs=( + -DCMAKE_PREFIX_PATH="$(get_llvm_prefix "${LLVM_MAX_SLOT}")" + -DCMAKE_BUILD_TYPE=${buildtype} + -DCMAKE_SKIP_RPATH=ON + -DBUILD_HIPIFY_CLANG=OFF + -DHIP_PLATFORM=amd + -DHIP_COMMON_DIR="${WORKDIR}/HIP-rocm-${PV}" + -DROCM_PATH="${EPREFIX}/usr" + -DUSE_PROF_API=0 + -DFILE_REORG_BACKWARD_COMPATIBILITY=OFF + -DCLR_BUILD_HIP=ON + -DHIPCC_BIN_DIR="${EPREFIX}/usr/bin" + -DOpenGL_GL_PREFERENCE="GLVND" + ) + + cmake_src_configure + + if use test; then + local mycmakeargs=( + -DROCM_PATH="${BUILD_DIR}"/hipamd + -DHIP_PLATFORM=amd + ) + hip_test_wrapper cmake_src_configure + fi +} + +src_compile() { + cmake_src_compile + + if use test; then + HIP_PATH="${BUILD_DIR}"/hipamd \ + hip_test_wrapper cmake_src_compile build_tests + fi +} + +src_test() { + check_amdgpu + export LD_LIBRARY_PATH="${BUILD_DIR}/hipamd/lib" + + # TODO: research how to test Vulkan-related features. + local CMAKE_SKIP_TESTS=( + Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Positive_Read_Write + Unit_hipExternalMemoryGetMappedBuffer_Vulkan_Negative_Parameters + Unit_hipImportExternalMemory_Vulkan_Negative_Parameters + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores + Unit_hipWaitExternalSemaphoresAsync_Vulkan_Negative_Parameters + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Binary_Semaphore + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Positive_Multiple_Semaphores + Unit_hipSignalExternalSemaphoresAsync_Vulkan_Negative_Parameters + Unit_hipImportExternalSemaphore_Vulkan_Negative_Parameters + Unit_hipDestroyExternalSemaphore_Vulkan_Negative_Parameters + ) + + MAKEOPTS="-j1" hip_test_wrapper cmake_src_test +} + +src_install() { + cmake_src_install + + # files already installed by hipcc, which is a build dep + rm "${ED}/usr/bin/hipconfig.pl" || die + rm "${ED}/usr/bin/hipcc.pl" || die + rm "${ED}/usr/bin/hipcc" || die + rm "${ED}/usr/bin/hipcc.bin" || die + rm "${ED}/usr/bin/hipconfig" || die + rm "${ED}/usr/bin/hipconfig.bin" || die + rm "${ED}/usr/bin/hipvars.pm" || die +} diff --git a/dev-util/hip/metadata.xml b/dev-util/hip/metadata.xml new file mode 100644 index 000000000000..21b0e03f6a41 --- /dev/null +++ b/dev-util/hip/metadata.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>sci@gentoo.org</email> + <name>Gentoo Science Project</name> + </maintainer> + <maintainer type="person"> + <email>candrews@gentoo.org</email> + <name>Craig Andrews</name> + </maintainer> + <maintainer type="person" proxied="yes"> + <email>xgreenlandforwyy@gmail.com</email> + <name>Yiyang Wu</name> + </maintainer> + <maintainer type="person" proxied="yes"> + <email>gentoo@holzke.net</email> + <name>Wilfried Holzke</name> + </maintainer> + <upstream> + <remote-id type="github">ROCm-Developer-Tools/HIP</remote-id> + </upstream> +</pkgmetadata> |