mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-01-06 02:17:34 -08:00
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>
96 lines
2.4 KiB
Bash
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
|
|
}
|