summaryrefslogtreecommitdiff
path: root/sci-libs
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-08-09 11:04:53 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-08-09 11:04:53 +0100
commit43297a4ed0a3760bbdd0b8c286b779f174ca5368 (patch)
tree15b92efd455b5d5eb0ef8a4af4f5f24572c4b46b /sci-libs
parent14866757225815b9374acfc8453518951e0f910d (diff)
gentoo auto-resync : 09:08:2024 - 11:04:52
Diffstat (limited to 'sci-libs')
-rw-r--r--sci-libs/Manifest.gzbin42998 -> 42988 bytes
-rw-r--r--sci-libs/caffe2/Manifest7
-rw-r--r--sci-libs/caffe2/caffe2-2.4.0.ebuild289
-rw-r--r--sci-libs/caffe2/files/caffe2-2.4.0-exclude-aotriton.patch65
-rw-r--r--sci-libs/caffe2/files/caffe2-2.4.0-fix-openmp-link.patch14
-rw-r--r--sci-libs/caffe2/files/caffe2-2.4.0-gentoo.patch211
-rw-r--r--sci-libs/caffe2/files/caffe2-2.4.0-install-dirs.patch70
-rw-r--r--sci-libs/caffe2/files/caffe2-2.4.0-rocm-fix-std-cpp17.patch50
-rw-r--r--sci-libs/kineto/Manifest2
-rw-r--r--sci-libs/kineto/kineto-0.4.0_p20240525.ebuild51
-rw-r--r--sci-libs/pytorch/Manifest5
-rw-r--r--sci-libs/pytorch/files/pytorch-2.4.0-dontbuildagain.patch17
-rw-r--r--sci-libs/pytorch/files/pytorch-2.4.0-global-dlopen.patch20
-rw-r--r--sci-libs/pytorch/files/pytorch-2.4.0-torch_shm_manager.patch11
-rw-r--r--sci-libs/pytorch/pytorch-2.4.0.ebuild66
15 files changed, 878 insertions, 0 deletions
diff --git a/sci-libs/Manifest.gz b/sci-libs/Manifest.gz
index bf21af175448..f9de58feb5ff 100644
--- a/sci-libs/Manifest.gz
+++ b/sci-libs/Manifest.gz
Binary files differ
diff --git a/sci-libs/caffe2/Manifest b/sci-libs/caffe2/Manifest
index 22ad33c0966d..cee0d49092c1 100644
--- a/sci-libs/caffe2/Manifest
+++ b/sci-libs/caffe2/Manifest
@@ -16,10 +16,17 @@ AUX caffe2-2.3.0-fix-libcpp.patch 1281 BLAKE2B 67943ec6e79327c854ebcd3538f68dd28
AUX caffe2-2.3.0-fix-rocm-gcc14-clamp.patch 1009 BLAKE2B ad27422dfc7be2720b972e1bbc417874a1060d2cbd5edb0acf166a7437963702b830766950db33381d6f32c6f95a001d8424ece73f70603fae8bf5f50b2ba255 SHA512 67f26127632cfca91389fdc60cea4d31a9b259e5547ccd6778bfc98a19bdd7b632ec17abbe888842ff613430c49aac37e18aca441335a947f973fd9d978ac3fe
AUX caffe2-2.3.0-optional-hipblaslt.patch 10001 BLAKE2B a73913a9d82acfb780ad95fc1aabef1dfbd20243a8caef7136dbdad72a120c8778348d82e25d9171453e159580caf1ec5fdaa9bdbef4a09981721579e50f6b21 SHA512 222d33a3253d35c64dc151d12a42a9a0d4edca7fe60e1bb9b0c43df07292a9a061b2259a5696b4d568db265b0df4f065b3ee54672481c788ce1e2b0ae01b8488
AUX caffe2-2.3.0-rocm-fix-std-cpp17.patch 3378 BLAKE2B 9e88fa1bf68c397c8122ea5b3504a22b3f6ef92c77dad8bd84ee03b4f75792b0e1281d8b1aa981ad1bf65060179fa08ef14e776e82abdec9147dfbb3bf37a7ae SHA512 7797a140abf736f2a4628cd727cf0c58ed39c9764b9ce3b67d17fc0c9b9965e647266c815e5322f96f807680120e25ccdbbc66b66c7c6cf84edb811330ad452c
+AUX caffe2-2.4.0-exclude-aotriton.patch 2832 BLAKE2B 319e9516b2b5e9d4fba622d7b618085528103f15c1db87185a2c1cae61ec4636cb69e0e1792dca549c42dd55527c46079be34b28c8b74ec1407ef7b5010e51cd SHA512 26612e973085e225f391c125dc265a45e8b4fe556a1b041d9b687fdc7354a07e89dc29c5e243881acb22027e1ba93b4520e7d809d74f83dea2c1d07fd15eb804
+AUX caffe2-2.4.0-fix-openmp-link.patch 633 BLAKE2B 067d970b062e9e5b67925b0f592368869c02a76395e8b36453835c45ab34911823936ce5810a2e15d050915a191cca5f415314189053be8ccae0a5749bf70f94 SHA512 1354a30f45c6cf0238c98dc7aaea734af680cdfa7cfefb2f09f7053ff8acded2c936a6ef24ac6e369715ebc197d5a3cd8e3b8fc30dc3ea092f403cbd019cb00e
+AUX caffe2-2.4.0-gentoo.patch 8283 BLAKE2B c74bb8b2e5c6ff9f9e5fbf23acc6554c0163017a25ec3aa2657007099d6cec64869cbaf0e5a43ad1e0fc9b09a5940e289133ac8824244fda9d86211aa4a55df2 SHA512 792f9cbb6ed13ef3b0e7b3f869489ec2c9d21fb6364feb27e57c23722df6a54bf307e631d0c955221cc5ea6081f7132c1d44f541d34c8791d1792da9820d35c9
+AUX caffe2-2.4.0-install-dirs.patch 2908 BLAKE2B 64bc9adcf377e13c2289ea034bceaa8b370b32ad0024c16ccde0c6adb7ba2b7c929d6b04d26c4c77c502127d9ab8e74305ab661b500b4c862c7673ec3422467d SHA512 c02f2e62b68a59a8948ee55ab170c0d5a89ca2cc7afccc77ece5e0539c050d45d5b0fb14ea4954f85a138c004bfcad580b76b357a1b2595916e13d79387b15e0
+AUX caffe2-2.4.0-rocm-fix-std-cpp17.patch 2431 BLAKE2B 649ff824f454a7b6fe2e95e487c09b51dbc882f23e2910598741a4f3b4c7a5d55257a0ba188bc386a81bf676f7872e60e71657ae82197772ed44cc236ec2d2f4 SHA512 b2e96f0d039a7e29063829b7efb49fbc7ebc04428ee0f8d4197f6048cf7166f04e3c980791cecabe685f280f9ae5b94ce388ee5fc00d6aec19ae1d1a32a43331
DIST pytorch-2.2.2.tar.gz 116367503 BLAKE2B 0be22f2ec4b9aac6f5e976664cae01facf07929a32565cd57d7cc5b2d9888e9ae71ca301853752fe8f31d174d04c9974eb9ed2f3d452360a50ccf024f200726a SHA512 7990e0f9484038c3458c0bda2c863bf2b19e56edab81fc5938c6e0f08b17558287f853bb67350e8cca8f42bec0f1d4ba0e94e50a145db8da44bdd4bd703d91d0
DIST pytorch-2.3.0.tar.gz 117029829 BLAKE2B 8f9c0d71ee0a9219b495eddccdcc65107f7ad537c43c68100b229f3d27b0e6c01ccb1659c7fffc356a48d80f2adc0a10361305dc8f1df20446de837d380f89f6 SHA512 67f7e9a096c3ffb952206ebf9105bedebb68c24ad82456083adf1d1d210437fcaa9dd52b68484cfc97d408c9eebc9541c76868c34a7c9982494dc3f424cfb07c
DIST pytorch-2.3.1.tar.gz 117035696 BLAKE2B d419d7fa1342f1fb317ffce09ec9dc1447414627cc83d36578fe60f68c283c620b2b4d49f414cd206d537b90b16432a06cd1941662720db05d5e2b6c493325f5 SHA512 e1bcae44f9939fc7ccb1360a9b1970d92426f25e5de73e36964df3dd15ad5d8d9f5bd2f9a7dda6b8f64e2bba3674005bd869f542489cc442ad0125a02676f587
+DIST pytorch-2.4.0.tar.gz 115031093 BLAKE2B d206477963977011627df284efa01482fbf57e9fcb5f58f51d679c742b8e5dde6aa6affd8745ab817fcd09477d129a81e74e07be576b5d3585eaca1c735b8e01 SHA512 804d25944035f33de6591fd942fbda44d3de037717a4397d38a97474b01775d30eaf93d16dd708a832c0119050d24d73b90990fd3e3773be79d26ada25244d22
EBUILD caffe2-2.2.2-r1.ebuild 7452 BLAKE2B 31ef525960d7c3866580985f9ba9736e5419f17c2a63251b8c4fe961a6789a33dee746b14b12fa331c8c20a6c821565b92dd2cb7c6cdd61678bba7ddf5fc7400 SHA512 f232d901c08e3fefd0d6260d07915786747df8f83269c3980c16112c968114c3cdb7daccd8132a6a3850a266a04b38f6df6d2b1f1bc35f473fb9a58d5fff3452
EBUILD caffe2-2.3.0-r3.ebuild 8441 BLAKE2B 7b7c44a04e072fbf4bcc4fabf470b5256b85b36bb5035a56ceef65843dcaa1eec1eb3cdf9246cf3c672b6d3f4885816a037ef875f77bbf38f9d5a0fafda7981c SHA512 34306a2af160fef5ad902d116da044e96d4eaafd46b8ea511f7b04ef590ccdace7deabeb8905a5b69d9e1a21fc58ab038356d4542dd378c21078a75d08c188ca
EBUILD caffe2-2.3.1.ebuild 8462 BLAKE2B 1c079bd3119ad0acd224a99cc029ba1e8d557065bbd2cfa30670f6f3720072520a072d0abed1e21f41781581f0b6711e809581fe01e363b613e2b82e38635d94 SHA512 591bee9c3a6beaa9f1687881381692bd7de32a6203d924d36ab89c2fc7de754fd7a5a4056e0e19f293aa836975d1d9321ee5997939270ff10df41fd31e5c9157
+EBUILD caffe2-2.4.0.ebuild 8158 BLAKE2B ae881185ee8e4e317316c4f0bfc9282685a1632aede2907213f4b7e063b55f4bf90886b741183c30aa30b5936e2d14dded4bb57de3ade8f87dd19e3a47403a6e SHA512 f660100f1d8ba8f6ecb9acff1c419457c5b879a005a08773ebd73fc3d14a516e0005a605f9b318254e268bab4456345fbbd6cc7b6993a73b291e509b3c9fa2d7
MISC metadata.xml 1225 BLAKE2B ab7fb0bf8b2d37ddaa1a9ecc815eb094e85465d20d3a30af081b42e0b60ade9858d0053b101ba0e7750a90cb48b5b79db9bdc2729bf66d0420732489da62fe54 SHA512 dfb58597fb4bcdd7df0fcc3f2514518e118e8fc9b1cd24868aab60c32a62ff419b8b72a7c294925eff4c8871cc8df606af7fa60bfa99901091d8195101ee1153
diff --git a/sci-libs/caffe2/caffe2-2.4.0.ebuild b/sci-libs/caffe2/caffe2-2.4.0.ebuild
new file mode 100644
index 000000000000..b4384eb7df11
--- /dev/null
+++ b/sci-libs/caffe2/caffe2-2.4.0.ebuild
@@ -0,0 +1,289 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+ROCM_VERSION=6.1
+inherit python-single-r1 cmake cuda flag-o-matic prefix rocm toolchain-funcs
+
+MYPN=pytorch
+MYP=${MYPN}-${PV}
+
+DESCRIPTION="A deep learning framework"
+HOMEPAGE="https://pytorch.org/"
+SRC_URI="https://github.com/pytorch/${MYPN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${MYP}.tar.gz"
+
+S="${WORKDIR}"/${MYP}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="cuda distributed fbgemm flash gloo mkl mpi nnpack +numpy onednn openblas opencl openmp qnnpack rocm xnnpack"
+RESTRICT="test"
+REQUIRED_USE="
+ ${PYTHON_REQUIRED_USE}
+ mpi? ( distributed )
+ gloo? ( distributed )
+ ?? ( cuda rocm )
+ rocm? (
+ || ( ${ROCM_REQUIRED_USE} )
+ !flash
+ )
+"
+
+# CUDA 12 not supported yet: https://github.com/pytorch/pytorch/issues/91122
+RDEPEND="
+ ${PYTHON_DEPS}
+ dev-cpp/gflags:=
+ >=dev-cpp/glog-0.5.0
+ dev-libs/cpuinfo
+ dev-libs/libfmt
+ dev-cpp/opentelemetry-cpp
+ dev-libs/protobuf:=
+ dev-libs/pthreadpool
+ dev-libs/sleef
+ virtual/lapack
+ sci-libs/onnx
+ sci-libs/foxi
+ cuda? (
+ dev-libs/cudnn
+ >=dev-libs/cudnn-frontend-1.0.3:0/8
+ <dev-util/nvidia-cuda-toolkit-12.4.0:=[profiler]
+ )
+ fbgemm? ( >=dev-libs/FBGEMM-2023.12.01 )
+ gloo? ( sci-libs/gloo[cuda?] )
+ mpi? ( virtual/mpi )
+ nnpack? ( sci-libs/NNPACK )
+ numpy? ( $(python_gen_cond_dep '
+ dev-python/numpy[${PYTHON_USEDEP}]
+ ') )
+ onednn? ( dev-libs/oneDNN )
+ opencl? ( virtual/opencl )
+ qnnpack? (
+ !sci-libs/QNNPACK
+ dev-cpp/gemmlowp
+ )
+ rocm? (
+ =dev-util/hip-6.1*
+ =dev-libs/rccl-6.1*[${ROCM_USEDEP}]
+ =sci-libs/rocThrust-6.1*[${ROCM_USEDEP}]
+ =sci-libs/rocPRIM-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipBLAS-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipFFT-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipSPARSE-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipRAND-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipCUB-6.1*[${ROCM_USEDEP}]
+ =sci-libs/hipSOLVER-6.1*[${ROCM_USEDEP}]
+ =sci-libs/miopen-6.1*[${ROCM_USEDEP}]
+ =dev-util/roctracer-6.1*[${ROCM_USEDEP}]
+
+ =sci-libs/hipBLASLt-6.1*
+ amdgpu_targets_gfx90a? ( =sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx90a] )
+ amdgpu_targets_gfx940? ( =sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx940] )
+ amdgpu_targets_gfx941? ( =sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx941] )
+ amdgpu_targets_gfx942? ( =sci-libs/hipBLASLt-6.1*[amdgpu_targets_gfx942] )
+ )
+ distributed? ( sci-libs/tensorpipe[cuda?] )
+ xnnpack? ( >=sci-libs/XNNPACK-2024.02.29 )
+ mkl? ( sci-libs/mkl )
+ openblas? ( sci-libs/openblas )
+"
+DEPEND="
+ ${RDEPEND}
+ cuda? ( >=dev-libs/cutlass-3.4.1 )
+ onednn? ( sci-libs/ideep )
+ dev-libs/psimd
+ dev-libs/FP16
+ dev-libs/FXdiv
+ dev-libs/pocketfft
+ dev-libs/flatbuffers
+ >=sci-libs/kineto-0.4.0_p20240525
+ $(python_gen_cond_dep '
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/pybind11[${PYTHON_USEDEP}]
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ ')
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-2.4.0-gentoo.patch
+ "${FILESDIR}"/${PN}-2.4.0-install-dirs.patch
+ "${FILESDIR}"/${PN}-1.12.0-glog-0.6.0.patch
+ "${FILESDIR}"/${PN}-1.13.1-tensorpipe.patch
+ "${FILESDIR}"/${PN}-2.3.0-cudnn_include_fix.patch
+ "${FILESDIR}"/${PN}-2.1.2-fix-rpath.patch
+ "${FILESDIR}"/${PN}-2.4.0-fix-openmp-link.patch
+ "${FILESDIR}"/${PN}-2.4.0-rocm-fix-std-cpp17.patch
+ "${FILESDIR}"/${PN}-2.2.2-musl.patch
+ "${FILESDIR}"/${PN}-2.4.0-exclude-aotriton.patch
+ "${FILESDIR}"/${PN}-2.3.0-fix-rocm-gcc14-clamp.patch
+ "${FILESDIR}"/${PN}-2.3.0-fix-libcpp.patch
+)
+
+src_prepare() {
+ filter-lto #bug 862672
+ sed -i \
+ -e "/third_party\/gloo/d" \
+ cmake/Dependencies.cmake \
+ || die
+ cmake_src_prepare
+ pushd torch/csrc/jit/serialization || die
+ flatc --cpp --gen-mutable --scoped-enums mobile_bytecode.fbs || die
+ popd
+ # prefixify the hardcoded paths, after all patches are applied
+ hprefixify \
+ aten/CMakeLists.txt \
+ caffe2/CMakeLists.txt \
+ cmake/Metal.cmake \
+ cmake/Modules/*.cmake \
+ cmake/Modules_CUDA_fix/FindCUDNN.cmake \
+ cmake/Modules_CUDA_fix/upstream/FindCUDA/make2cmake.cmake \
+ cmake/Modules_CUDA_fix/upstream/FindPackageHandleStandardArgs.cmake \
+ cmake/public/LoadHIP.cmake \
+ cmake/public/cuda.cmake \
+ cmake/Dependencies.cmake \
+ torch/CMakeLists.txt \
+ CMakeLists.txt
+
+ if use rocm; then
+ sed -e "s:/opt/rocm:/usr:" \
+ -e "s:lib/cmake:$(get_libdir)/cmake:g" \
+ -e "s/HIP 1.0/HIP 1.0 REQUIRED/" \
+ -i cmake/public/LoadHIP.cmake || die
+
+ ebegin "HIPifying cuda sources"
+ ${EPYTHON} tools/amd_build/build_amd.py || die
+ eend $?
+ fi
+}
+
+src_configure() {
+ if use cuda && [[ -z ${TORCH_CUDA_ARCH_LIST} ]]; then
+ ewarn "WARNING: caffe2 is being built with its default CUDA compute capabilities: 3.5 and 7.0."
+ ewarn "These may not be optimal for your GPU."
+ ewarn ""
+ ewarn "To configure caffe2 with the CUDA compute capability that is optimal for your GPU,"
+ ewarn "set TORCH_CUDA_ARCH_LIST in your make.conf, and re-emerge caffe2."
+ ewarn "For example, to use CUDA capability 7.5 & 3.5, add: TORCH_CUDA_ARCH_LIST=7.5 3.5"
+ ewarn "For a Maxwell model GPU, an example value would be: TORCH_CUDA_ARCH_LIST=Maxwell"
+ ewarn ""
+ ewarn "You can look up your GPU's CUDA compute capability at https://developer.nvidia.com/cuda-gpus"
+ ewarn "or by running /opt/cuda/extras/demo_suite/deviceQuery | grep 'CUDA Capability'"
+ fi
+
+ local mycmakeargs=(
+ -DBUILD_CUSTOM_PROTOBUF=OFF
+ -DBUILD_SHARED_LIBS=ON
+
+ -DUSE_CCACHE=OFF
+ -DUSE_CUDA=$(usex cuda)
+ -DUSE_DISTRIBUTED=$(usex distributed)
+ -DUSE_MPI=$(usex mpi)
+ -DUSE_FAKELOWP=OFF
+ -DUSE_FBGEMM=$(usex fbgemm)
+ -DUSE_FLASH_ATTENTION=$(usex flash)
+ -DUSE_MEM_EFF_ATTENTION=OFF
+ -DUSE_GFLAGS=ON
+ -DUSE_GLOG=ON
+ -DUSE_GLOO=$(usex gloo)
+ -DUSE_KINETO=OFF # TODO
+ -DUSE_MAGMA=OFF # TODO: In GURU as sci-libs/magma
+ -DUSE_MKLDNN=$(usex onednn)
+ -DUSE_NNPACK=$(usex nnpack)
+ -DUSE_XNNPACK=$(usex xnnpack)
+ -DUSE_SYSTEM_XNNPACK=$(usex xnnpack)
+ -DUSE_TENSORPIPE=$(usex distributed)
+ -DUSE_PYTORCH_QNNPACK=$(usex qnnpack)
+ -DUSE_NUMPY=$(usex numpy)
+ -DUSE_OPENCL=$(usex opencl)
+ -DUSE_OPENMP=$(usex openmp)
+ -DUSE_ROCM=$(usex rocm)
+ -DUSE_SYSTEM_CPUINFO=ON
+ -DUSE_SYSTEM_PYBIND11=ON
+ -DUSE_UCC=OFF
+ -DUSE_VALGRIND=OFF
+ -DPython_EXECUTABLE="${PYTHON}"
+ -DUSE_ITT=OFF
+ -DUSE_SYSTEM_PTHREADPOOL=ON
+ -DUSE_SYSTEM_PSIMD=ON
+ -DUSE_SYSTEM_FXDIV=ON
+ -DUSE_SYSTEM_FP16=ON
+ -DUSE_SYSTEM_GLOO=ON
+ -DUSE_SYSTEM_ONNX=ON
+ -DUSE_SYSTEM_SLEEF=ON
+ -DUSE_PYTORCH_METAL=OFF
+ -DUSE_XPU=OFF
+
+ -Wno-dev
+ -DTORCH_INSTALL_LIB_DIR="${EPREFIX}"/usr/$(get_libdir)
+ -DLIBSHM_INSTALL_LIB_SUBDIR="${EPREFIX}"/usr/$(get_libdir)
+ )
+
+ if use mkl; then
+ mycmakeargs+=(-DBLAS=MKL)
+ elif use openblas; then
+ mycmakeargs+=(-DBLAS=OpenBLAS)
+ else
+ mycmakeargs+=(-DBLAS=Generic -DBLAS_LIBRARIES=)
+ fi
+
+ if use cuda; then
+ addpredict "/dev/nvidiactl" # bug 867706
+ addpredict "/dev/char"
+ addpredict "/proc/self/task" # bug 926116
+
+ mycmakeargs+=(
+ -DUSE_CUDNN=ON
+ -DTORCH_CUDA_ARCH_LIST="${TORCH_CUDA_ARCH_LIST:-3.5 7.0}"
+ -DUSE_NCCL=OFF # TODO: NVIDIA Collective Communication Library
+ -DCMAKE_CUDA_FLAGS="$(cuda_gccdir -f | tr -d \")"
+ )
+ elif use rocm; then
+ export PYTORCH_ROCM_ARCH="$(get_amdgpu_flags)"
+
+ mycmakeargs+=(
+ -DUSE_NCCL=ON
+ -DUSE_SYSTEM_NCCL=ON
+ )
+
+ # ROCm libraries produce too much warnings
+ append-cxxflags -Wno-deprecated-declarations -Wno-unused-result
+
+ if tc-is-clang; then
+ # fix mangling in LLVM: https://github.com/llvm/llvm-project/issues/85656
+ append-cxxflags -fclang-abi-compat=17
+ fi
+ fi
+
+ if use onednn; then
+ mycmakeargs+=(
+ -DUSE_MKLDNN=ON
+ -DMKLDNN_FOUND=ON
+ -DMKLDNN_LIBRARIES=dnnl
+ -DMKLDNN_INCLUDE_DIR="${ESYSROOT}/usr/include/oneapi/dnnl"
+ )
+ fi
+
+ cmake_src_configure
+
+ # do not rerun cmake and the build process in src_install
+ sed '/RERUN/,+1d' -i "${BUILD_DIR}"/build.ninja || die
+}
+
+src_install() {
+ cmake_src_install
+
+ insinto "/var/lib/${PN}"
+ doins "${BUILD_DIR}"/CMakeCache.txt
+
+ rm -rf python
+ mkdir -p python/torch/include || die
+ mv "${ED}"/usr/lib/python*/site-packages/caffe2 python/ || die
+ cp torch/version.py python/torch/ || die
+ python_domodule python/caffe2
+ python_domodule python/torch
+ ln -s ../../../../../include/torch \
+ "${D}$(python_get_sitedir)"/torch/include/torch || die # bug 923269
+}
diff --git a/sci-libs/caffe2/files/caffe2-2.4.0-exclude-aotriton.patch b/sci-libs/caffe2/files/caffe2-2.4.0-exclude-aotriton.patch
new file mode 100644
index 000000000000..72ab792b2278
--- /dev/null
+++ b/sci-libs/caffe2/files/caffe2-2.4.0-exclude-aotriton.patch
@@ -0,0 +1,65 @@
+Disables aotriton download when both USE_FLASH_ATTENTION and USE_MEM_EFF_ATTENTION cmake flags are OFF
+Backports upstream PR to 2.3.0: https://github.com/pytorch/pytorch/pull/130197
+--- a/aten/src/ATen/native/transformers/cuda/sdp_utils.cpp
++++ b/aten/src/ATen/native/transformers/cuda/sdp_utils.cpp
+@@ -24,7 +24,7 @@
+ #include <c10/core/SymInt.h>
+ #include <c10/util/string_view.h>
+
+-#if USE_ROCM
++#if defined(USE_ROCM) && (defined(USE_MEM_EFF_ATTENTION) || defined(USE_FLASH_ATTENTION))
+ #include <aotriton/flash.h>
+ #endif
+
+@@ -207,7 +207,7 @@ bool check_flash_attention_hardware_support(sdp_params const& params, bool debug
+ // Check that the gpu is capable of running flash attention
+ using sm80 = SMVersion<8, 0>;
+ using sm90 = SMVersion<9, 0>;
+-#if USE_ROCM
++#if defined(USE_ROCM) && defined(USE_FLASH_ATTENTION)
+ auto stream = at::cuda::getCurrentCUDAStream().stream();
+ if (hipSuccess != aotriton::v2::flash::check_gpu(stream)) {
+ auto dprops = at::cuda::getCurrentDeviceProperties();
+@@ -238,7 +238,7 @@ bool check_mem_efficient_hardware_support(sdp_params const& params, bool debug)
+ // Mem Efficient attention supports hardware in the range [sm_50, sm_90]
+ using sm50 = SMVersion<5, 0>;
+ using sm90 = SMVersion<9, 0>;
+-#if USE_ROCM
++#if defined(USE_ROCM) && defined(USE_MEM_EFF_ATTENTION)
+ auto stream = at::cuda::getCurrentCUDAStream().stream();
+ if (hipSuccess != aotriton::v2::flash::check_gpu(stream)) {
+ auto dprops = at::cuda::getCurrentDeviceProperties();
+@@ -623,7 +623,7 @@ bool can_use_mem_efficient_attention(sdp_params const& params, bool debug) {
+ array_of<at::ScalarType>(at::kHalf, at::kFloat, at::kBFloat16);
+ constexpr auto less_than_sm80_mem_efficient_dtypes =
+ array_of<at::ScalarType>(at::kHalf, at::kFloat);
+-#ifdef USE_ROCM
++#if defined(USE_ROCM) && defined(USE_MEM_EFF_ATTENTION)
+ constexpr auto aotriton_mem_efficient_dtypes =
+ array_of<at::ScalarType>(at::kHalf, at::kFloat, at::kBFloat16);
+ #endif
+@@ -668,7 +668,7 @@ bool can_use_mem_efficient_attention(sdp_params const& params, bool debug) {
+ }
+ }
+
+-#ifdef USE_ROCM
++#if defined(USE_ROCM) && defined(USE_MEM_EFF_ATTENTION)
+ return check_tensor_dtype(params, aotriton_mem_efficient_dtypes, debug);
+ #else
+ auto dprop = at::cuda::getCurrentDeviceProperties();
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -1095,10 +1095,12 @@ if(USE_ROCM)
+ message(STATUS "Disabling Kernel Assert for ROCm")
+ endif()
+
+- include(${CMAKE_CURRENT_LIST_DIR}/External/aotriton.cmake)
+ if(USE_CUDA)
+ caffe2_update_option(USE_MEM_EFF_ATTENTION OFF)
+ endif()
++ if(USE_FLASH_ATTENTION OR USE_MEM_EFF_ATTENTION)
++ include(${CMAKE_CURRENT_LIST_DIR}/External/aotriton.cmake)
++ endif()
+ else()
+ caffe2_update_option(USE_ROCM OFF)
+ endif()
diff --git a/sci-libs/caffe2/files/caffe2-2.4.0-fix-openmp-link.patch b/sci-libs/caffe2/files/caffe2-2.4.0-fix-openmp-link.patch
new file mode 100644
index 000000000000..9b0fe0b97c0f
--- /dev/null
+++ b/sci-libs/caffe2/files/caffe2-2.4.0-fix-openmp-link.patch
@@ -0,0 +1,14 @@
+Fix "undefined symbol: omp_get_max_active_levels" in mkl + <nothing else> builds
+https://github.com/pytorch/pytorch/issues/116576
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -1643,6 +1643,9 @@ if(BUILD_SHARED_LIBS)
+ if(CAFFE2_USE_MKL)
+ target_link_libraries(torch_global_deps caffe2::mkl)
+ endif()
++ if(USE_OPENMP)
++ target_link_libraries(torch_global_deps OpenMP::OpenMP_CXX)
++ endif()
+ # The CUDA libraries are linked here for a different reason: in some
+ # cases we load these libraries with ctypes, and if they weren't opened
+ # with RTLD_GLOBAL, we'll do the "normal" search process again (and
diff --git a/sci-libs/caffe2/files/caffe2-2.4.0-gentoo.patch b/sci-libs/caffe2/files/caffe2-2.4.0-gentoo.patch
new file mode 100644
index 000000000000..d592a346386b
--- /dev/null
+++ b/sci-libs/caffe2/files/caffe2-2.4.0-gentoo.patch
@@ -0,0 +1,211 @@
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -966,12 +966,11 @@ endif()
+ # third_party/FBGEMM
+ include(cmake/public/utils.cmake)
+ if(NOT MSVC)
+- string(APPEND CMAKE_CXX_FLAGS " -O2 -fPIC")
++ string(APPEND CMAKE_CXX_FLAGS " -O2")
+ # Eigen fails to build with some versions, so convert this to a warning
+ # Details at http://eigen.tuxfamily.org/bz/show_bug.cgi?id=1459
+ string(APPEND CMAKE_CXX_FLAGS " -Wall")
+ string(APPEND CMAKE_CXX_FLAGS " -Wextra")
+- append_cxx_flag_if_supported("-Werror=return-type" CMAKE_CXX_FLAGS)
+ append_cxx_flag_if_supported("-Werror=non-virtual-dtor" CMAKE_CXX_FLAGS)
+ append_cxx_flag_if_supported("-Werror=braced-scalar-init" CMAKE_CXX_FLAGS)
+ append_cxx_flag_if_supported("-Werror=range-loop-construct" CMAKE_CXX_FLAGS)
+@@ -1074,7 +1073,6 @@ if(NOT MSVC)
+ string(APPEND CMAKE_LINKER_FLAGS_DEBUG " -fno-omit-frame-pointer -O0")
+ append_cxx_flag_if_supported("-fno-math-errno" CMAKE_CXX_FLAGS)
+ append_cxx_flag_if_supported("-fno-trapping-math" CMAKE_CXX_FLAGS)
+- append_cxx_flag_if_supported("-Werror=format" CMAKE_CXX_FLAGS)
+ else()
+ # skip unwanted includes from windows.h
+ add_compile_definitions(WIN32_LEAN_AND_MEAN)
+--- a/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt
++++ b/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt
+@@ -324,16 +324,8 @@ set_target_properties(pytorch_qnnpack PROPERTIES PUBLIC_HEADER include/pytorch_q
+ set_target_properties(pytorch_qnnpack PROPERTIES PUBLIC_HEADER include/qnnpack_func.h)
+
+ # ---[ Configure clog
+-if(NOT TARGET clog)
+- set(CLOG_BUILD_TESTS OFF CACHE BOOL "")
+- set(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "")
+- add_subdirectory(
+- "${CLOG_SOURCE_DIR}"
+- "${CONFU_DEPENDENCIES_BINARY_DIR}/clog")
+- # We build static version of clog but a dynamic library may indirectly depend on it
+- set_property(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON)
+-endif()
+-target_link_libraries(pytorch_qnnpack PUBLIC clog)
++find_library(CLOG_LIBRARY NAMES clog REQUIRED)
++target_link_libraries(pytorch_qnnpack PUBLIC ${CLOG_LIBRARY})
+
+ # ---[ Configure cpuinfo
+ if(NOT TARGET cpuinfo AND USE_SYSTEM_CPUINFO)
+--- a/c10/CMakeLists.txt
++++ b/c10/CMakeLists.txt
+@@ -94,7 +94,7 @@ if(NOT BUILD_LIBTORCHLESS)
+ if(C10_USE_GLOG)
+ target_link_libraries(c10 PUBLIC glog::glog)
+ endif()
+- target_link_libraries(c10 PRIVATE fmt::fmt-header-only)
++ target_link_libraries(c10 PRIVATE fmt)
+
+ if(C10_USE_NUMA)
+ message(STATUS "NUMA paths:")
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -87,7 +87,7 @@ endif()
+ # Note: the folders that are being commented out have not been properly
+ # addressed yet.
+
+-if(NOT MSVC AND USE_XNNPACK)
++if(FALSE)
+ if(NOT TARGET fxdiv)
+ set(FXDIV_BUILD_TESTS OFF CACHE BOOL "")
+ set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "")
+@@ -1075,7 +1075,6 @@ if(USE_XPU)
+ endif()
+
+ if(NOT MSVC AND USE_XNNPACK)
+- TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv)
+ endif()
+
+ # ==========================================================
+@@ -1178,8 +1177,7 @@ target_include_directories(torch_cpu PRIVATE
+ target_include_directories(torch_cpu PRIVATE
+ ${TORCH_ROOT}/third_party/miniz-2.1.0)
+
+-target_include_directories(torch_cpu PRIVATE
+- ${TORCH_ROOT}/third_party/kineto/libkineto/include)
++target_include_directories(torch_cpu PRIVATE /usr/include/kineto)
+
+ if(USE_KINETO)
+ target_include_directories(torch_cpu PRIVATE
+--- a/cmake/Codegen.cmake
++++ b/cmake/Codegen.cmake
+@@ -57,7 +57,7 @@ if(INTERN_BUILD_ATEN_OPS)
+ if(MSVC)
+ set(OPT_FLAG "/fp:strict ")
+ else(MSVC)
+- set(OPT_FLAG "-O3 ")
++ set(OPT_FLAG " ")
+ if("${CMAKE_BUILD_TYPE}" MATCHES "Debug")
+ set(OPT_FLAG " ")
+ endif()
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -466,7 +466,9 @@ if(USE_PYTORCH_QNNPACK)
+ set_property(TARGET pytorch_qnnpack PROPERTY POSITION_INDEPENDENT_CODE ON)
+ set_property(TARGET cpuinfo PROPERTY POSITION_INDEPENDENT_CODE ON)
+ # QNNPACK depends on gemmlowp headers
+- target_include_directories(pytorch_qnnpack PRIVATE "${CAFFE2_THIRD_PARTY_ROOT}/gemmlowp")
++ find_package(gemmlowp REQUIRED)
++ get_target_property(GEMMLOWP_INCLUDE_DIRS gemmlowp::gemmlowp INTERFACE_INCLUDE_DIRECTORIES)
++ target_include_directories(pytorch_qnnpack PRIVATE ${GEMMLOWP_INCLUDE_DIRS})
+
+ if(PYTORCH_QNNPACK_CUSTOM_THREADPOOL)
+ target_compile_definitions(
+@@ -705,7 +707,7 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST)
+ endif()
+
+ # ---[ FBGEMM
+-if(USE_FBGEMM)
++if(FALSE)
+ set(CAFFE2_THIRD_PARTY_ROOT "${PROJECT_SOURCE_DIR}/third_party")
+ if(NOT DEFINED FBGEMM_SOURCE_DIR)
+ set(FBGEMM_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/fbgemm" CACHE STRING "FBGEMM source directory")
+@@ -753,6 +755,7 @@ if(USE_FBGEMM)
+ endif()
+
+ if(USE_FBGEMM)
++ list(APPEND Caffe2_DEPENDENCY_LIBS fbgemm)
+ caffe2_update_option(USE_FBGEMM ON)
+ else()
+ caffe2_update_option(USE_FBGEMM OFF)
+@@ -1288,7 +1291,6 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX)
+ set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17)
+ endif()
+ endif()
+- add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL)
+
+ add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE})
+ if(NOT USE_SYSTEM_ONNX)
+@@ -1530,7 +1532,6 @@ endif()
+ #
+ set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS})
+ set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE)
+-add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+
+ # Disable compiler feature checks for `fmt`.
+ #
+@@ -1539,9 +1540,7 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt)
+ # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know
+ # `fmt` is compatible with a superset of the compilers that PyTorch is, it
+ # shouldn't be too bad to just disable the checks.
+-set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "")
+
+-list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only)
+ set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE)
+
+ # ---[ Kineto
+--- a/cmake/External/nnpack.cmake
++++ b/cmake/External/nnpack.cmake
+@@ -56,7 +56,7 @@ if(ANDROID OR IOS OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_SYSTEM_NAM
+ set(PTHREADPOOL_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/pthreadpool" CACHE STRING "pthreadpool source directory")
+ set(GOOGLETEST_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/googletest" CACHE STRING "Google Test source directory")
+
+- if(NOT TARGET nnpack)
++ if(FALSE)
+ if(NOT USE_SYSTEM_PTHREADPOOL AND USE_INTERNAL_PTHREADPOOL_IMPL)
+ set(NNPACK_CUSTOM_THREADPOOL ON CACHE BOOL "")
+ endif()
+--- a/cmake/public/utils.cmake
++++ b/cmake/public/utils.cmake
+@@ -483,8 +483,6 @@ function(torch_compile_options libname)
+ endif()
+
+ # Use -O2 for release builds (-O3 doesn't improve perf, and -Os results in perf regression)
+- target_compile_options(${libname} PRIVATE
+- $<$<AND:$<COMPILE_LANGUAGE:CXX>,$<OR:$<CONFIG:Release>,$<CONFIG:RelWithDebInfo>>>:-O2>)
+
+ endfunction()
+
+--- a/functorch/CMakeLists.txt
++++ b/functorch/CMakeLists.txt
+@@ -42,4 +42,4 @@ endif()
+ if(NOT ${TORCH_PYTHON_LINK_FLAGS} STREQUAL "")
+ set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS ${TORCH_PYTHON_LINK_FLAGS})
+ endif()
+-install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}")
++install(TARGETS ${PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+--- a/torch/CMakeLists.txt
++++ b/torch/CMakeLists.txt
+@@ -59,16 +59,8 @@ set(TORCH_PYTHON_INCLUDE_DIRECTORIES
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/aten/src
+ ${CMAKE_BINARY_DIR}/caffe2/aten/src
+- ${CMAKE_BINARY_DIR}/third_party
+- ${CMAKE_BINARY_DIR}/third_party/onnx
+-
+- ${TORCH_ROOT}/third_party/valgrind-headers
+-
+- ${TORCH_ROOT}/third_party/gloo
+- ${TORCH_ROOT}/third_party/onnx
+- ${TORCH_ROOT}/third_party/flatbuffers/include
+- ${TORCH_ROOT}/third_party/kineto/libkineto/include
+- ${TORCH_ROOT}/third_party/cpp-httplib
++
++ /usr/include/kineto
+
+ ${TORCH_SRC_DIR}/csrc
+ ${TORCH_SRC_DIR}/csrc/api/include
+@@ -83,7 +75,6 @@ set(TORCH_PYTHON_LINK_LIBRARIES
+ opentelemetry::api
+ httplib
+ shm
+- fmt::fmt-header-only
+ ATEN_CPU_FILES_GEN_LIB)
+
+ if(USE_ASAN AND TARGET Sanitizer::address)
diff --git a/sci-libs/caffe2/files/caffe2-2.4.0-install-dirs.patch b/sci-libs/caffe2/files/caffe2-2.4.0-install-dirs.patch
new file mode 100644
index 000000000000..ee6e8fb91562
--- /dev/null
+++ b/sci-libs/caffe2/files/caffe2-2.4.0-install-dirs.patch
@@ -0,0 +1,70 @@
+--- a/c10/CMakeLists.txt
++++ b/c10/CMakeLists.txt
+@@ -157,7 +157,7 @@ if(NOT BUILD_LIBTORCHLESS)
+ # Note: for now, we will put all export path into one single Caffe2Targets group
+ # to deal with the cmake deployment need. Inside the Caffe2Targets set, the
+ # individual libraries like libc10.so and libcaffe2.so are still self-contained.
+- install(TARGETS c10 EXPORT Caffe2Targets DESTINATION lib)
++ install(TARGETS c10 EXPORT Caffe2Targets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
+
+ install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
+--- a/c10/cuda/CMakeLists.txt
++++ b/c10/cuda/CMakeLists.txt
+@@ -82,7 +82,7 @@ if(NOT BUILD_LIBTORCHLESS)
+ # Note: for now, we will put all export path into one single Caffe2Targets group
+ # to deal with the cmake deployment need. Inside the Caffe2Targets set, the
+ # individual libraries like libc10.so and libcaffe2.so are still self-contained.
+-install(TARGETS c10_cuda EXPORT Caffe2Targets DESTINATION lib)
++install(TARGETS c10_cuda EXPORT Caffe2Targets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+
+ endif()
+
+--- a/c10/hip/CMakeLists.txt
++++ b/c10/hip/CMakeLists.txt
+@@ -57,7 +57,7 @@ if(NOT BUILD_LIBTORCHLESS)
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../..>
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
+ $<INSTALL_INTERFACE:include>)
+- install(TARGETS c10_hip EXPORT Caffe2Targets DESTINATION lib)
++ install(TARGETS c10_hip EXPORT Caffe2Targets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ set(C10_HIP_LIB c10_hip)
+ endif()
+
+--- a/c10/xpu/CMakeLists.txt
++++ b/c10/xpu/CMakeLists.txt
+@@ -45,7 +45,7 @@ target_include_directories(
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
+ $<INSTALL_INTERFACE:include>
+ )
+- install(TARGETS c10_xpu EXPORT Caffe2Targets DESTINATION lib)
++ install(TARGETS c10_xpu EXPORT Caffe2Targets DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ set(C10_XPU_LIB c10_xpu)
+ add_subdirectory(test)
+ endif()
+--- a/test/cpp/c10d/CMakeLists.txt
++++ b/test/cpp/c10d/CMakeLists.txt
+@@ -64,7 +64,7 @@ if(USE_CUDA)
+ torch_cpu c10d_cuda_test gtest_main __caffe2_ucc)
+ if(INSTALL_TEST)
+ install(TARGETS ProcessGroupUCCTest DESTINATION bin)
+- install(TARGETS c10d_cuda_test DESTINATION lib)
++ install(TARGETS c10d_cuda_test DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
+ endif()
+ else()
+--- a/test/cpp/jit/CMakeLists.txt
++++ b/test/cpp/jit/CMakeLists.txt
+@@ -32,9 +32,9 @@ endif()
+ target_link_libraries(backend_with_compiler torch)
+
+ if(INSTALL_TEST)
+- install(TARGETS torchbind_test DESTINATION lib)
+- install(TARGETS jitbackend_test DESTINATION lib)
+- install(TARGETS backend_with_compiler DESTINATION lib)
++ install(TARGETS torchbind_test DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ install(TARGETS jitbackend_test DESTINATION ${CMAKE_INSTALL_LIBDIR})
++ install(TARGETS backend_with_compiler DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif()
+
+ # Build the cpp gtest binary containing the cpp-only tests.
diff --git a/sci-libs/caffe2/files/caffe2-2.4.0-rocm-fix-std-cpp17.patch b/sci-libs/caffe2/files/caffe2-2.4.0-rocm-fix-std-cpp17.patch
new file mode 100644
index 000000000000..3612c3db1a0b
--- /dev/null
+++ b/sci-libs/caffe2/files/caffe2-2.4.0-rocm-fix-std-cpp17.patch
@@ -0,0 +1,50 @@
+Fix for error: invalid argument '-std=c++17' not allowed with 'C'
+https://github.com/pytorch/pytorch/issues/103222
+--- a/c10/hip/CMakeLists.txt
++++ b/c10/hip/CMakeLists.txt
+@@ -36,6 +36,7 @@ if(NOT BUILD_LIBTORCHLESS)
+
+ # Propagate HIP_CXX_FLAGS that were set from Dependencies.cmake
+ target_compile_options(c10_hip PRIVATE ${HIP_CXX_FLAGS})
++ set_target_properties(c10_hip PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF)
+
+ # caffe2_hip adds a bunch of dependencies like rocsparse, but c10/hip is supposed to be
+ # minimal. I'm not sure if we need hip_hcc or not; for now leave it out
+--- a/caffe2/CMakeLists.txt
++++ b/caffe2/CMakeLists.txt
+@@ -1670,6 +1670,7 @@ if(USE_ROCM)
+
+ # Since PyTorch files contain HIP headers, these flags are required for the necessary definitions to be added.
+ target_compile_options(torch_hip PUBLIC ${HIP_CXX_FLAGS}) # experiment
++ set_target_properties(torch_hip PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF)
+
+ target_link_libraries(torch_hip PUBLIC c10_hip)
+
+@@ -1867,6 +1868,7 @@ if(BUILD_TEST)
+ target_include_directories(${test_name} PRIVATE $<INSTALL_INTERFACE:include>)
+ target_include_directories(${test_name} PRIVATE ${Caffe2_CPU_INCLUDE} ${Caffe2_HIP_INCLUDE})
+ target_compile_options(${test_name} PRIVATE ${HIP_CXX_FLAGS})
++ set_target_properties(${test_name} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF)
+ add_test(NAME ${test_name} COMMAND $<TARGET_FILE:${test_name}>)
+ if(INSTALL_TEST)
+ install(TARGETS ${test_name} DESTINATION test)
+--- a/cmake/Dependencies.cmake
++++ b/cmake/Dependencies.cmake
+@@ -1050,7 +1050,6 @@ if(USE_ROCM)
+ list(APPEND HIP_CXX_FLAGS -Wno-duplicate-decl-specifier)
+ list(APPEND HIP_CXX_FLAGS -DCAFFE2_USE_MIOPEN)
+ list(APPEND HIP_CXX_FLAGS -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_HIP)
+- list(APPEND HIP_CXX_FLAGS -std=c++17)
+ list(APPEND HIP_CXX_FLAGS -DHIPBLAS_V2)
+ if(HIP_NEW_TYPE_ENUMS)
+ list(APPEND HIP_CXX_FLAGS -DHIP_NEW_TYPE_ENUMS)
+--- a/cmake/public/utils.cmake
++++ b/cmake/public/utils.cmake
+@@ -332,6 +332,7 @@ function(caffe2_hip_binary_target target_name_or_src)
+ caffe2_binary_target(${target_name_or_src})
+
+ target_compile_options(${__target} PRIVATE ${HIP_CXX_FLAGS})
++ set_target_properties(${__target} PROPERTIES CXX_STANDARD 17 CXX_EXTENSIONS OFF)
+ target_include_directories(${__target} PRIVATE ${Caffe2_HIP_INCLUDE})
+ endfunction()
+
diff --git a/sci-libs/kineto/Manifest b/sci-libs/kineto/Manifest
index ed449c6a5e27..f43113ef3944 100644
--- a/sci-libs/kineto/Manifest
+++ b/sci-libs/kineto/Manifest
@@ -1,5 +1,7 @@
AUX kineto-0.4.0-gcc13.patch 255 BLAKE2B 5633abeae41fd306a6d66d4e0f72040abbcc27b052a9802c94235c4afcff5ed99f3ac0df9ed712c6d4a57345d666442ea89bcc84f9f7d333d2ec77be9246a1d5 SHA512 db55567e22355f7ca98959f6a385b103474b2aeed0684f48e0c2e043754defc888fbd6ae997c3e5909329777d662b2e4e1b85520192da7fcae32845798c4565d
AUX kineto-0.4.0_p20231031-gentoo.patch 2997 BLAKE2B 123603ac81512b12800a0ef82fd0f573891c4170a16156f87afbdb7004608cf2593eccd23541aa2f042137762dc5d4a1d4013e9fa42303fb8e60066f96529030 SHA512 e7f4d0c7418cb3d4b00cd231b03692dd6b0fd3c29d54f6db557bb87d4ab000e5020d03fffec1583b7c2df8b0431e7f263a4c892eadc16e04ce8af2c9032b47fe
DIST kineto-0.4.0_p20231127.tar.gz 8234629 BLAKE2B ac6e13340817eb283e387e699e70e5113571b258ee3ebf72f2d4a54a6349be22d84701ddec67fbc72d12be3fb0c321a71c8dd64a7f8a6d679522c49f21304fbc SHA512 316db3db624ae36720c0fcabb81f70c31b94ea64f18bc103aeadb75a25e06e113a774a3ec0c769881960ad61f3c2210172ccde1c451df653e7c430fbe89e4d9a
+DIST kineto-0.4.0_p20240525.tar.gz 8243259 BLAKE2B 677529d327254c26000271a6c845356604598fb05ba57befd0e5cbd0f112f6776d2851ea1e2a7671a38ee6cb06df45db68ff0435fcddbf69496db43f5ec1e7ee SHA512 41a08c7da9eea7d12402f80a5550c9d4df79798719cc52b12a507828c8c896ba28a37c35d8adf809ca72589e1d84965d5ef6dd01f3f8dc1c803c5ed67b03a43a
EBUILD kineto-0.4.0_p20231127.ebuild 957 BLAKE2B a62c333c0089d569a33f62e7618982740a5178dba049e89e9f62933a342612893e439095e7ec1c534efdebd1dd61d3c3bd6b53ba3cfe95ed8692ca19ce2ee813 SHA512 98ab412ff156c0b065e2a517798f0ad03c8d5205d017d246bd9392a6d574cdceb0df056288eb83018eaad406493e80e69e65a0a7d6a0c5465e9c2ebad4d122ac
+EBUILD kineto-0.4.0_p20240525.ebuild 1012 BLAKE2B 047fb6d8bf364b59fa8c9b3c34a24525416c3c051fe612a9a36d7c20910ff7a95403bc518c0953f5d9efd96bedde510b7ba911740e3d5f3ea240318fa4487804 SHA512 320312d83868d35bda4586714a04fb495602190125539a9b1a1e563676c1ec41853c13d4f2340a2e3fd047336aa9126c2d6d9a0202c6af215dcc7c2a5bc12ecb
MISC metadata.xml 327 BLAKE2B f48b87396bdfbc5a12b807941e162b596bbf760252fbfd08dc05ef8aeb9dcd8fc1b0ed3c8d4ec5f531da5a7315a041b8db7b0f6449c86fc52fba4f6d4476beb5 SHA512 9f6906e171f530b6f5de417338af00c26681fe757d823b4ab88cb9749506404c2d9baa96ea3c71c4fe523f6f5877a81e20f2378abe4a2e9895e501829e3fe85d
diff --git a/sci-libs/kineto/kineto-0.4.0_p20240525.ebuild b/sci-libs/kineto/kineto-0.4.0_p20240525.ebuild
new file mode 100644
index 000000000000..ecabcbb39cff
--- /dev/null
+++ b/sci-libs/kineto/kineto-0.4.0_p20240525.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{9..13} )
+inherit python-any-r1 cmake prefix
+
+CommitId=be1317644c68b4bfc4646024a6b221066e430031
+
+DESCRIPTION="part of the PyTorch Profiler"
+HOMEPAGE="https://github.com/pytorch/kineto"
+SRC_URI="https://github.com/pytorch/${PN}/archive/${CommitId}.tar.gz
+ -> ${P}.tar.gz"
+S="${WORKDIR}"/${PN}-${CommitId}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+
+RDEPEND="
+ dev-libs/libfmt
+ dev-libs/dynolog
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ test? ( dev-cpp/gtest )
+ ${PYTHON_DEPS}
+"
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.4.0-gcc13.patch
+)
+
+src_prepare() {
+ cd libkineto
+ cmake_src_prepare
+}
+
+src_configure() {
+ cd libkineto
+ local mycmakeargs=(
+ -DLIBKINETO_THIRDPARTY_DIR="${EPREFIX}"/usr/include/
+ -DKINETO_BUILD_TESTS=OFF # tests require cuda toolkit
+ )
+ eapply $(prefixify_ro "${FILESDIR}"/${PN}-0.4.0_p20231031-gentoo.patch)
+
+ cmake_src_configure
+}
diff --git a/sci-libs/pytorch/Manifest b/sci-libs/pytorch/Manifest
index 2e5fdcf972ac..54c472774d2d 100644
--- a/sci-libs/pytorch/Manifest
+++ b/sci-libs/pytorch/Manifest
@@ -4,10 +4,15 @@ AUX pytorch-1.9.0-Change-library-directory-according-to-CMake-build.patch 1063 B
AUX pytorch-2.0.0-global-dlopen.patch 834 BLAKE2B da3ddd29124ab345e50acd4b42cb310d75d7c9b13005ee41051a1a2b702958b81677fe4f7e76dcd678dd439c89114de2e568f4330380e6e621d2975957293921 SHA512 fa0156229d7cd20e0f3949913750ecf3d8c2f0e872c8dc272cb0144427e079938588c7d4d3fec087b6cfd7846ed6844fbaa3c5510e9be8890be926ba854f7833
AUX pytorch-2.1.1-dontbuildagain.patch 443 BLAKE2B 67cc940ae5be4d3a0a5ef6670a72de4f3419582b59bb7e905d4ee704c928c353f1ef03a446ac97f0718d24e5a88fc656c8e58e26f869c6eeef5d21b918308f36 SHA512 4acf9dfca8e998a5ec1f6eebb7ffd5833f065dd995ef735c50ce34fb2553bbacc974c13eeaf07962d00de0f795fd4366a1866d1bb834ed93098217400db9dc6c
AUX pytorch-2.2.1-emptyso.patch 464 BLAKE2B 8c93245f36218a63a910ddf41e1181c83306485ae788cc47ad191641dfed13b2f0ce8b492c9e377279a2ee8ed83c2aaac25e1ba8b4cad3d5a07c7bbc95d60063 SHA512 1f5cbd5937d20411a74812347a2a02111d80fcc73453717eb136d8e3ffc94f839234713b77c2c89b07f87404a132fd0a1d345666df8d6a3ba01284cc0b752fc2
+AUX pytorch-2.4.0-dontbuildagain.patch 416 BLAKE2B 42d62ba2342a32a7eb0a8062750cd59ca9ebd6085b06f6751ac884c7daaf6d4a36373290403c02da7bd8d96e409cb7f57fc601cab4bace45613b3f7a14892c24 SHA512 a844b68faf11072b6e2b7d23cd17fff21cb96226f72dc6b52ec5d4f98d48beebcb341b3528b70c89e831e6de0aecefd01e3ad3f41c05347114ca8c19bd31c34d
+AUX pytorch-2.4.0-global-dlopen.patch 887 BLAKE2B 044e7708619070f93b1157a0c4e560dadda88b299c32023f4f953711201c308966e07dc6c8a34ed9f56cd6ee4b02d5870fd3637365f83f98444695f5747ca7cb SHA512 091b353b33a5d8496836adcafba7f0c04f2085ddbd33bf1fda8222a4afdf2c5b12bed53c26140f22442a1a77c465b326f603de02837f6d214f16dfae01c56417
+AUX pytorch-2.4.0-torch_shm_manager.patch 367 BLAKE2B f03c002cbd50fb959dfc3ccf89cb8aa9fe6e001ff2cb47bee45cde28cac262e20df1d06f396776ce069f0a9e92cd370c96788db0aa5d1b9d9f3bc1832701502a SHA512 94f095908385b3058863d05a78a0e243f8614bbde406d457e50bdba574a8e1911b77790a0806f705644dc0c0ae235888314ea4a31aed7c0eb8ddfb29ff42636e
DIST pytorch-2.2.2.tar.gz 116367503 BLAKE2B 0be22f2ec4b9aac6f5e976664cae01facf07929a32565cd57d7cc5b2d9888e9ae71ca301853752fe8f31d174d04c9974eb9ed2f3d452360a50ccf024f200726a SHA512 7990e0f9484038c3458c0bda2c863bf2b19e56edab81fc5938c6e0f08b17558287f853bb67350e8cca8f42bec0f1d4ba0e94e50a145db8da44bdd4bd703d91d0
DIST pytorch-2.3.0.tar.gz 117029829 BLAKE2B 8f9c0d71ee0a9219b495eddccdcc65107f7ad537c43c68100b229f3d27b0e6c01ccb1659c7fffc356a48d80f2adc0a10361305dc8f1df20446de837d380f89f6 SHA512 67f7e9a096c3ffb952206ebf9105bedebb68c24ad82456083adf1d1d210437fcaa9dd52b68484cfc97d408c9eebc9541c76868c34a7c9982494dc3f424cfb07c
DIST pytorch-2.3.1.tar.gz 117035696 BLAKE2B d419d7fa1342f1fb317ffce09ec9dc1447414627cc83d36578fe60f68c283c620b2b4d49f414cd206d537b90b16432a06cd1941662720db05d5e2b6c493325f5 SHA512 e1bcae44f9939fc7ccb1360a9b1970d92426f25e5de73e36964df3dd15ad5d8d9f5bd2f9a7dda6b8f64e2bba3674005bd869f542489cc442ad0125a02676f587
+DIST pytorch-2.4.0.tar.gz 115031093 BLAKE2B d206477963977011627df284efa01482fbf57e9fcb5f58f51d679c742b8e5dde6aa6affd8745ab817fcd09477d129a81e74e07be576b5d3585eaca1c735b8e01 SHA512 804d25944035f33de6591fd942fbda44d3de037717a4397d38a97474b01775d30eaf93d16dd708a832c0119050d24d73b90990fd3e3773be79d26ada25244d22
EBUILD pytorch-2.2.2.ebuild 1616 BLAKE2B 3817dd668463c3393fc6227809644cc7409cdcb099b009571dde0760f67bcf0bb36da6d8c24e1d99be57899db9d6fb57c34e07ac63248f471ff780d2f8164b65 SHA512 97530019b0f973fad14bcfc878669f4f8a1de3f4b2d65a8909a53d3ca32b0ba099a7ffccb9317eeb8d7d8e9bae1495d36dec3896f1f54ee260ad6af89796c86c
EBUILD pytorch-2.3.0.ebuild 1616 BLAKE2B 3817dd668463c3393fc6227809644cc7409cdcb099b009571dde0760f67bcf0bb36da6d8c24e1d99be57899db9d6fb57c34e07ac63248f471ff780d2f8164b65 SHA512 97530019b0f973fad14bcfc878669f4f8a1de3f4b2d65a8909a53d3ca32b0ba099a7ffccb9317eeb8d7d8e9bae1495d36dec3896f1f54ee260ad6af89796c86c
EBUILD pytorch-2.3.1.ebuild 1616 BLAKE2B 3817dd668463c3393fc6227809644cc7409cdcb099b009571dde0760f67bcf0bb36da6d8c24e1d99be57899db9d6fb57c34e07ac63248f471ff780d2f8164b65 SHA512 97530019b0f973fad14bcfc878669f4f8a1de3f4b2d65a8909a53d3ca32b0ba099a7ffccb9317eeb8d7d8e9bae1495d36dec3896f1f54ee260ad6af89796c86c
+EBUILD pytorch-2.4.0.ebuild 1616 BLAKE2B 6d2b4012e2ee45eff08e7d38cd6f8177b94ae556337cde21fe5352aca2bbfeecda582159f45bb947d96775468aed2617eaf28cdc4d42e0e0d2cb2c662dbe70ed SHA512 a0ea63813cac1cdc2d23f99982574786417b8f9a829f7166be2b33eb9b2f7dcb20a174ca2a70bc7e887d415efea361a7491c1642b3bbeb68446a8cbee4ed4a1c
MISC metadata.xml 328 BLAKE2B f49c6d62ac88dfffe497ed05b1f727941a94acb87a809611dda8aedbd87508fdfdf94ec0e025cac2a649b0881b600236289943b4be0f6ca44fc105b6d8fbe97c SHA512 16c29d2c1177a89026235191ea3e33870c2e6b63f029b7febd4dbd2e99f598fab4b4fd2fa7a801ffd88393663a00752300e6e2cc847a83690b715bcc481d9dc2
diff --git a/sci-libs/pytorch/files/pytorch-2.4.0-dontbuildagain.patch b/sci-libs/pytorch/files/pytorch-2.4.0-dontbuildagain.patch
new file mode 100644
index 000000000000..4fe5b0bdeb86
--- /dev/null
+++ b/sci-libs/pytorch/files/pytorch-2.4.0-dontbuildagain.patch
@@ -0,0 +1,17 @@
+--- a/setup.py
++++ b/setup.py
+@@ -473,14 +473,6 @@ def build_deps():
+ check_pydep("yaml", "pyyaml")
+ build_python = not BUILD_LIBTORCH_WHL
+
+- build_caffe2(
+- version=version,
+- cmake_python_library=cmake_python_library,
+- build_python=build_python,
+- rerun_cmake=RERUN_CMAKE,
+- cmake_only=CMAKE_ONLY,
+- cmake=cmake,
+- )
+
+ if CMAKE_ONLY:
+ report(
diff --git a/sci-libs/pytorch/files/pytorch-2.4.0-global-dlopen.patch b/sci-libs/pytorch/files/pytorch-2.4.0-global-dlopen.patch
new file mode 100644
index 000000000000..e72ed94e6888
--- /dev/null
+++ b/sci-libs/pytorch/files/pytorch-2.4.0-global-dlopen.patch
@@ -0,0 +1,20 @@
+--- a/torch/__init__.py
++++ b/torch/__init__.py
+@@ -223,7 +223,7 @@ def _load_global_deps() -> None:
+ if library_path:
+ global_deps_lib_path = os.path.join(library_path, 'lib', lib_name)
+ try:
+- ctypes.CDLL(global_deps_lib_path, mode=ctypes.RTLD_GLOBAL)
++ ctypes.CDLL(lib_name, mode=ctypes.RTLD_GLOBAL)
+ except OSError as err:
+ # Can only happen for wheel with cuda libs as PYPI deps
+ # As PyTorch is not purelib, but nvidia-*-cu12 is
+@@ -245,7 +245,7 @@ def _load_global_deps() -> None:
+ raise err
+ for lib_folder, lib_name in cuda_libs.items():
+ _preload_cuda_deps(lib_folder, lib_name)
+- ctypes.CDLL(global_deps_lib_path, mode=ctypes.RTLD_GLOBAL)
++ ctypes.CDLL(lib_name, mode=ctypes.RTLD_GLOBAL)
+
+ if library_path:
+ # loading libtorch_global_deps first due its special logic
diff --git a/sci-libs/pytorch/files/pytorch-2.4.0-torch_shm_manager.patch b/sci-libs/pytorch/files/pytorch-2.4.0-torch_shm_manager.patch
new file mode 100644
index 000000000000..b1303d141dce
--- /dev/null
+++ b/sci-libs/pytorch/files/pytorch-2.4.0-torch_shm_manager.patch
@@ -0,0 +1,11 @@
+--- a/torch/__init__.py
++++ b/torch/__init__.py
+@@ -1691,7 +1691,7 @@ py_float = float
+ py_int = int
+
+ # Shared memory manager needs to know the exact location of manager executable
+-_C._initExtension(_manager_path())
++_C._initExtension(b"/usr/bin/torch_shm_manager")
+ del _manager_path
+
+ # Appease the type checker: it can't deal with direct setting of globals().
diff --git a/sci-libs/pytorch/pytorch-2.4.0.ebuild b/sci-libs/pytorch/pytorch-2.4.0.ebuild
new file mode 100644
index 000000000000..31e3b0439a9d
--- /dev/null
+++ b/sci-libs/pytorch/pytorch-2.4.0.ebuild
@@ -0,0 +1,66 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{10..12} )
+DISTUTILS_SINGLE_IMPL=1
+DISTUTILS_EXT=1
+inherit distutils-r1 prefix
+
+DESCRIPTION="Tensors and Dynamic neural networks in Python"
+HOMEPAGE="https://pytorch.org/"
+SRC_URI="https://github.com/pytorch/${PN}/archive/refs/tags/v${PV}.tar.gz
+ -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+RESTRICT="test"
+
+REQUIRED_USE=${PYTHON_REQUIRED_USE}
+RDEPEND="
+ ${PYTHON_DEPS}
+ ~sci-libs/caffe2-${PV}[${PYTHON_SINGLE_USEDEP}]
+ $(python_gen_cond_dep '
+ dev-python/typing-extensions[${PYTHON_USEDEP}]
+ dev-python/sympy[${PYTHON_USEDEP}]
+ ')
+"
+DEPEND="${RDEPEND}
+ $(python_gen_cond_dep '
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ ')
+"
+
+src_prepare() {
+ eapply \
+ "${FILESDIR}"/${PN}-2.4.0-dontbuildagain.patch \
+ "${FILESDIR}"/pytorch-1.9.0-Change-library-directory-according-to-CMake-build.patch \
+ "${FILESDIR}"/${PN}-2.4.0-global-dlopen.patch \
+ "${FILESDIR}"/pytorch-2.4.0-torch_shm_manager.patch \
+ "${FILESDIR}"/${PN}-1.13.0-setup.patch \
+ "${FILESDIR}"/${PN}-2.2.1-emptyso.patch \
+
+ # Set build dir for pytorch's setup
+ sed -i \
+ -e "/BUILD_DIR/s|build|/var/lib/caffe2/|" \
+ tools/setup_helpers/env.py \
+ || die
+ distutils-r1_src_prepare
+
+ hprefixify tools/setup_helpers/env.py
+}
+
+python_compile() {
+ PYTORCH_BUILD_VERSION=${PV} \
+ PYTORCH_BUILD_NUMBER=0 \
+ USE_SYSTEM_LIBS=ON \
+ CMAKE_BUILD_DIR="${BUILD_DIR}" \
+ distutils-r1_python_compile develop sdist
+}
+
+python_install() {
+ USE_SYSTEM_LIBS=ON distutils-r1_python_install
+}