mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2025-12-09 00:07:57 +03:00
sci-ml/gloo: add support of AMD GPUs (USE=rocm) and fix cuda
There is a chicken-egg build dependency between gloo and pytorch. To build with GLOO_USE_TORCH_DTYPES, few pytorch headers are required. So instead of this: 1) USE=-gloo emerge caffe2 2) emerge gloo 3) USE=gloo emerge caffe2 gloo ebuild now includes some (2.9.0) version of caffe2 just for headers Closes: https://bugs.gentoo.org/965091 Signed-off-by: Sv. Lockal <lockalsash@gmail.com> Part-of: https://github.com/gentoo/gentoo/pull/44550 Signed-off-by: Alfredo Tupone <tupone@gentoo.org>
This commit is contained in:
parent
684d1e5c3b
commit
5eaadaa187
@ -1,2 +1,3 @@
|
||||
DIST gloo-2023.12.03.tar.gz 259857 BLAKE2B b56cbbb0986b70ed327a8d019f140099c5d1d725576120089cd5e640dc42daa6c6bb67de877d540fd2160f5b8d89cf54af7c11a1b81039e62e4de97daa4f63d6 SHA512 597679dd96394e7d0009be34ef9bd6f8446d22e2faa006c0853e055caf0d6d821c7532ff867b4d924197e92ab53c4c7ee9b74f897d6c5a469ee797c11ce0d28d
|
||||
DIST gloo-2025.06.04.tar.gz 272417 BLAKE2B f3cf3326276bb839166f3094d49fcd537e5a446bda65fb34adad5540df4c505bf7f7f56071d78d14cbc49db6d02f190198e45dd25ae307cfbc5d27db4c2c3703 SHA512 87264b940f2a9f50f3054d3853ad3c0aff33c29253e27c4d0e5fc18a674ebb362719a811b01847daaadf0b9a151a51eabd9dae694ac7d1ad300e24842bea1241
|
||||
DIST pytorch-2.9.0.tar.gz 55750268 BLAKE2B 943459ec60a4e1f5e36766defc7018fbf9722fb1564b723c2a7ebcb2a5d8b1735f0b1542dc67a77f788af3e2454ea6261dbdee5beb2bcfa4af2e58ca566edc93 SHA512 2ecdc0eac39ecee68b0f4c98e498424cde00c45bbeeff576c8778046f97119cd02885498b072352dd3cdd9aecd02baf61cdc5554bce8d757b30c673053a0cc80
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/CMakeLists.txt 2022-06-09 08:29:13.172119535 +0200
|
||||
+++ b/CMakeLists.txt 2022-06-09 08:29:27.474929097 +0200
|
||||
@@ -2,6 +2,9 @@
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -2,6 +2,9 @@ cmake_minimum_required(VERSION 3.18 FATAL_ERROR)
|
||||
|
||||
project(gloo CXX C)
|
||||
|
||||
@ -10,27 +10,9 @@
|
||||
set(GLOO_VERSION_MAJOR 0)
|
||||
set(GLOO_VERSION_MINOR 5)
|
||||
set(GLOO_VERSION_PATCH 0)
|
||||
--- a/gloo/CMakeLists.txt 2022-06-09 08:41:09.883773600 +0200
|
||||
+++ b/gloo/CMakeLists.txt 2022-06-09 08:42:39.045637103 +0200
|
||||
@@ -191,7 +191,7 @@
|
||||
# want to statically link with Gloo and not install any artifacts.
|
||||
if(GLOO_INSTALL)
|
||||
install(TARGETS gloo EXPORT GlooTargets
|
||||
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
if(USE_CUDA)
|
||||
install(TARGETS gloo_cuda EXPORT GlooTargets
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
--- a/gloo/test/CMakeLists.txt 2022-06-10 22:17:03.682856314 +0200
|
||||
+++ b/gloo/test/CMakeLists.txt 2022-06-10 22:17:49.671242697 +0200
|
||||
@@ -80,3 +80,4 @@
|
||||
gloo_hip_add_executable(gloo_test_hip ${GLOO_TEST_HIP_SRCS})
|
||||
target_link_libraries(gloo_test_hip gloo_hip gtest OpenSSL::SSL OpenSSL::Crypto)
|
||||
endif()
|
||||
+add_test(NAME gloo_test COMMAND gloo_test)
|
||||
--- a/cmake/Dependencies.cmake 2022-06-11 23:38:57.367089917 +0200
|
||||
+++ b/cmake/Dependencies.cmake 2022-06-11 23:48:57.690866797 +0200
|
||||
@@ -81,7 +81,7 @@
|
||||
--- a/cmake/Dependencies.cmake
|
||||
+++ b/cmake/Dependencies.cmake
|
||||
@@ -81,7 +81,7 @@ if(USE_LIBUV)
|
||||
pkg_search_module(libuv REQUIRED libuv>=1.26)
|
||||
find_file(
|
||||
libuv_LIBRARY
|
||||
@ -39,7 +21,7 @@
|
||||
PATHS ${libuv_LIBDIR}
|
||||
NO_DEFAULT_PATH)
|
||||
if(NOT EXISTS ${libuv_LIBRARY})
|
||||
@@ -90,10 +90,7 @@
|
||||
@@ -90,10 +90,7 @@ if(USE_LIBUV)
|
||||
endif()
|
||||
|
||||
add_library(uv_a INTERFACE IMPORTED)
|
||||
@ -51,19 +33,42 @@
|
||||
endif()
|
||||
endif()
|
||||
|
||||
--- a/gloo/transport/tcp/tls/pair.cc 2022-10-04 21:14:04.099150060 +0200
|
||||
+++ b/gloo/transport/tcp/tls/pair.cc 2022-10-04 21:14:22.330886610 +0200
|
||||
@@ -17,6 +17,7 @@
|
||||
--- a/gloo/CMakeLists.txt
|
||||
+++ b/gloo/CMakeLists.txt
|
||||
@@ -191,14 +191,14 @@ endif()
|
||||
# want to statically link with Gloo and not install any artifacts.
|
||||
if(GLOO_INSTALL)
|
||||
install(TARGETS gloo EXPORT GlooTargets
|
||||
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
if(USE_CUDA)
|
||||
install(TARGETS gloo_cuda EXPORT GlooTargets
|
||||
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
if(USE_ROCM)
|
||||
install(TARGETS gloo_hip EXPORT GlooTargets
|
||||
- DESTINATION ${CMAKE_INSTALL_PREFIX}/lib)
|
||||
+ DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||
endif()
|
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/include/gloo)
|
||||
@@ -215,11 +215,7 @@ if(GLOO_INSTALL)
|
||||
endforeach()
|
||||
endif()
|
||||
if(USE_ROCM)
|
||||
- foreach(HEADER ${GLOO_HIP_HDRS})
|
||||
- string(REGEX MATCH "(.*)[/\\]" DIR ${HEADER})
|
||||
- string(REGEX REPLACE "${CMAKE_CURRENT_SOURCE_DIR}" "gloo" DIR ${DIR})
|
||||
- install(FILES ${HEADER} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/${DIR})
|
||||
- endforeach()
|
||||
+ install(FILES ${GLOO_HIP_HDRS} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/gloo)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#include <poll.h>
|
||||
#include <cstring>
|
||||
+#include <array>
|
||||
|
||||
namespace gloo {
|
||||
namespace transport {
|
||||
--- a/gloo/common/linux.cc 2022-10-04 21:20:21.401691929 +0200
|
||||
+++ b/gloo/common/linux.cc 2022-10-04 21:23:13.924192100 +0200
|
||||
@@ -198,7 +198,7 @@
|
||||
--- a/gloo/common/linux.cc
|
||||
+++ b/gloo/common/linux.cc
|
||||
@@ -198,7 +198,7 @@ static int getInterfaceSpeedGLinkSettings(int sock, struct ifreq* ifr) {
|
||||
} ecmd;
|
||||
int rv;
|
||||
|
||||
@ -72,7 +77,7 @@
|
||||
memset(&ecmd, 0, sizeof(ecmd));
|
||||
ecmd.req.cmd = ETHTOOL_GLINKSETTINGS;
|
||||
|
||||
@@ -226,7 +226,7 @@
|
||||
@@ -226,7 +226,7 @@ static int getInterfaceSpeedGSet(int sock, struct ifreq* ifr) {
|
||||
struct ethtool_cmd edata;
|
||||
int rv;
|
||||
|
||||
@ -81,3 +86,24 @@
|
||||
memset(&edata, 0, sizeof(edata));
|
||||
edata.cmd = ETHTOOL_GSET;
|
||||
|
||||
--- a/gloo/transport/tcp/tls/pair.cc
|
||||
+++ b/gloo/transport/tcp/tls/pair.cc
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include <poll.h>
|
||||
#include <cstring>
|
||||
+#include <array>
|
||||
|
||||
namespace gloo {
|
||||
namespace transport {
|
||||
--- a/cmake/Hip.cmake
|
||||
+++ b/cmake/Hip.cmake
|
||||
@@ -13,7 +13,7 @@ ELSE()
|
||||
ENDIF()
|
||||
|
||||
# Add HIP to the CMAKE Module Path
|
||||
-set(CMAKE_MODULE_PATH ${ROCM_PATH}/lib/cmake/hip ${CMAKE_MODULE_PATH})
|
||||
+set(CMAKE_MODULE_PATH ${ROCM_PATH}/${CMAKE_INSTALL_LIBDIR}/cmake/hip ${CMAKE_MODULE_PATH})
|
||||
|
||||
# Disable Asserts In Code (Can't use asserts on HIP stack.)
|
||||
ADD_DEFINITIONS(-DNDEBUG)
|
||||
|
||||
@ -2,21 +2,31 @@
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
inherit cmake cuda
|
||||
ROCM_VERSION=6.3
|
||||
inherit cmake cuda flag-o-matic rocm
|
||||
|
||||
CommitId=c7b7b022c124d9643957d9bd55f57ac59fce8fa2
|
||||
|
||||
# Need half/bf16 headers from any pytorch
|
||||
PYTORCH_PV=2.9.0
|
||||
PYTORCH_P=pytorch-${PYTORCH_PV}
|
||||
|
||||
DESCRIPTION="library of floating-point neural network inference operators"
|
||||
HOMEPAGE="https://github.com/facebookincubator/gloo/"
|
||||
SRC_URI="https://github.com/facebookincubator/${PN}/archive/${CommitId}.tar.gz
|
||||
-> ${P}.tar.gz"
|
||||
SRC_URI="
|
||||
https://github.com/facebookincubator/${PN}/archive/${CommitId}.tar.gz -> ${P}.tar.gz
|
||||
|
||||
cuda? ( https://github.com/pytorch/pytorch/archive/refs/tags/v${PYTORCH_PV}.tar.gz -> ${PYTORCH_P}.tar.gz )
|
||||
rocm? ( https://github.com/pytorch/pytorch/archive/refs/tags/v${PYTORCH_PV}.tar.gz -> ${PYTORCH_P}.tar.gz )
|
||||
"
|
||||
|
||||
S="${WORKDIR}"/${PN}-${CommitId}
|
||||
PYTORCH_S="${WORKDIR}"/${PYTORCH_P}
|
||||
|
||||
LICENSE="MIT"
|
||||
SLOT="0"
|
||||
KEYWORDS="~amd64"
|
||||
IUSE="cuda libuv mpi redis ssl test"
|
||||
IUSE="cuda libuv mpi redis rocm ssl test"
|
||||
|
||||
RDEPEND="
|
||||
cuda? ( dev-util/nvidia-cuda-toolkit:= )
|
||||
@ -26,6 +36,7 @@ RDEPEND="
|
||||
dev-db/redis
|
||||
dev-libs/hiredis
|
||||
)
|
||||
rocm? ( dev-util/hip:= )
|
||||
ssl? ( dev-libs/openssl:= )
|
||||
"
|
||||
DEPEND="${RDEPEND}
|
||||
@ -37,22 +48,21 @@ RESTRICT="test" # For some test the network is needed
|
||||
|
||||
PATCHES=(
|
||||
"${FILESDIR}"/${P}-gentoo.patch
|
||||
"${FILESDIR}"/${PN}-2023.01.17-cuda.patch
|
||||
"${FILESDIR}"/${P}-ssl3.patch
|
||||
"${FILESDIR}"/${PN}-2023.12.03-gcc15.patch
|
||||
)
|
||||
|
||||
src_prepare() {
|
||||
eapply_user
|
||||
if use cuda || use rocm; then
|
||||
touch "${PYTORCH_S}"/torch/headeronly/macros/cmake_macros.h || die
|
||||
fi
|
||||
cmake_src_prepare
|
||||
use cuda && cuda_add_sandbox
|
||||
}
|
||||
|
||||
src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DGLOO_USE_TORCH_DTYPES=$(usex cuda ON OFF)
|
||||
-DBUILD_TEST=$(usex test ON OFF)
|
||||
-DUSE_CUDA=$(usex cuda ON OFF)
|
||||
-DGLOO_USE_CUDA_TOOLKIT=$(usex cuda ON OFF)
|
||||
-DUSE_LIBUV=$(usex libuv ON OFF)
|
||||
-DUSE_MPI=$(usex mpi ON OFF)
|
||||
@ -64,6 +74,21 @@ src_configure() {
|
||||
|
||||
mycmakeargs+=(
|
||||
-DCMAKE_CUDA_FLAGS="$(cuda_gccdir -f | tr -d \")"
|
||||
-DGLOO_TORCH_DIR="${PYTORCH_S}"
|
||||
-DGLOO_USE_TORCH_DTYPES=ON
|
||||
-DUSE_CUDA=ON
|
||||
)
|
||||
fi
|
||||
if use rocm; then
|
||||
export ROCM_PATH="${EPREFIX}/usr"
|
||||
export GLOO_ROCM_ARCH="$(get_amdgpu_flags)"
|
||||
mycmakeargs+=(
|
||||
-DCMAKE_HIP_ARCHITECTURES="${GLOO_ROCM_ARCH}"
|
||||
-DCMAKE_REQUIRE_FIND_PACKAGE_HIP=$(usex rocm ON OFF)
|
||||
-DGLOO_TORCH_DIR="${PYTORCH_S}"
|
||||
-DHIP_CXX_FLAGS="$(test-flags-HIPCXX ${CXXFLAGS})"
|
||||
-DGLOO_USE_TORCH_DTYPES=ON
|
||||
-DUSE_ROCM=ON
|
||||
)
|
||||
fi
|
||||
cmake_src_configure
|
||||
@ -11,5 +11,6 @@
|
||||
<use>
|
||||
<flag name="libuv">Enable libuv support</flag>
|
||||
<flag name="redis">Enable Redis backend for storage via <pkg>dev-libs/hiredis</pkg></flag>
|
||||
<flag name="rocm">Enable ROCm gpu computing support</flag>
|
||||
</use>
|
||||
</pkgmetadata>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user