gentoo/sci-ml/gloo/gloo-2025.06.04-r2.ebuild
Sv. Lockal 5eaadaa187
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>
2025-11-10 08:37:20 +01:00

96 lines
2.4 KiB
Bash

# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
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
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 rocm ssl test"
RDEPEND="
cuda? ( dev-util/nvidia-cuda-toolkit:= )
libuv? ( dev-libs/libuv )
mpi? ( virtual/mpi )
redis? (
dev-db/redis
dev-libs/hiredis
)
rocm? ( dev-util/hip:= )
ssl? ( dev-libs/openssl:= )
"
DEPEND="${RDEPEND}
cuda? ( sci-ml/caffe2[cuda] )
"
BDEPEND="test? ( dev-cpp/gtest )"
RESTRICT="test" # For some test the network is needed
PATCHES=(
"${FILESDIR}"/${P}-gentoo.patch
"${FILESDIR}"/${P}-ssl3.patch
"${FILESDIR}"/${PN}-2023.12.03-gcc15.patch
)
src_prepare() {
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=(
-DBUILD_TEST=$(usex test ON OFF)
-DGLOO_USE_CUDA_TOOLKIT=$(usex cuda ON OFF)
-DUSE_LIBUV=$(usex libuv ON OFF)
-DUSE_MPI=$(usex mpi ON OFF)
-DUSE_REDIS=$(usex redis ON OFF)
-DUSE_TCP_OPENSSL_LINK=$(usex ssl ON OFF)
)
if use cuda; then
addpredict "/proc/self/task"
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
}