diff options
Diffstat (limited to 'dev-cpp')
-rw-r--r-- | dev-cpp/Manifest.gz | bin | 17674 -> 17668 bytes | |||
-rw-r--r-- | dev-cpp/kokkos/Manifest | 3 | ||||
-rw-r--r-- | dev-cpp/kokkos/kokkos-4.6.2-r2.ebuild | 114 | ||||
-rw-r--r-- | dev-cpp/kokkos/kokkos-9999.ebuild | 61 |
4 files changed, 173 insertions, 5 deletions
diff --git a/dev-cpp/Manifest.gz b/dev-cpp/Manifest.gz Binary files differindex 05fffa61240cd..e7b3bdc09f215 100644 --- a/dev-cpp/Manifest.gz +++ b/dev-cpp/Manifest.gz diff --git a/dev-cpp/kokkos/Manifest b/dev-cpp/kokkos/Manifest index 4735e99003e66..a0dbdedf1b69b 100644 --- a/dev-cpp/kokkos/Manifest +++ b/dev-cpp/kokkos/Manifest @@ -4,5 +4,6 @@ DIST kokkos-4.6.2.tar.gz 2477557 BLAKE2B 3d8a93ca8e27bc0a3a5542680b0a2daf7ca8628 EBUILD kokkos-4.0.1-r1.ebuild 1313 BLAKE2B 2523019a9efdfe5be7f2f11762895aae40bb73eb71d8047d93157d64093bb863e6ce112e0a216cdc14fee6272b8000038605c969104797b26e84ff3286e81376 SHA512 d64ead4a5fa36450817fb6c6e14008a80c9858cc3b12175403fe09f77a931dbe1089512acf3ab489842ac38bb833cd126a2add134fdb922638854d724dee3285 EBUILD kokkos-4.3.1-r1.ebuild 1313 BLAKE2B 2523019a9efdfe5be7f2f11762895aae40bb73eb71d8047d93157d64093bb863e6ce112e0a216cdc14fee6272b8000038605c969104797b26e84ff3286e81376 SHA512 d64ead4a5fa36450817fb6c6e14008a80c9858cc3b12175403fe09f77a931dbe1089512acf3ab489842ac38bb833cd126a2add134fdb922638854d724dee3285 EBUILD kokkos-4.6.2-r1.ebuild 1426 BLAKE2B 3efb58660203637bd4326471dba215d2fd405e7cf552b983c92ea46f2b3d8be1da09cd36498e726a39c0ce75ed2d1a0beb983fd1a0329f7f33bf8c0d3989905d SHA512 40a8a75edbdc56086cfd5f9f6fa4aabbba661adc972492761bb71f4f9f2ec1785c23f55191ffad93924068ea9c333c094d716494d91df4d1483a97ca7a890836 -EBUILD kokkos-9999.ebuild 1426 BLAKE2B 3efb58660203637bd4326471dba215d2fd405e7cf552b983c92ea46f2b3d8be1da09cd36498e726a39c0ce75ed2d1a0beb983fd1a0329f7f33bf8c0d3989905d SHA512 40a8a75edbdc56086cfd5f9f6fa4aabbba661adc972492761bb71f4f9f2ec1785c23f55191ffad93924068ea9c333c094d716494d91df4d1483a97ca7a890836 +EBUILD kokkos-4.6.2-r2.ebuild 3105 BLAKE2B 99ad2fca14b86ea36e6a23c2ace5758e8c5f01a9bdac5f17f1da72c1f73088dbde363a180eb5850aff9d0c616b17972c52d6a40981e0e3de693acc0c1f4a90cc SHA512 19cc79b098d8b64265a84831611791376f884f4d402c27c9e02e26c30ccef7e4e77b48b39431570664790805e368adbacc73276d6c953ef31ae978896be9d110 +EBUILD kokkos-9999.ebuild 3105 BLAKE2B 99ad2fca14b86ea36e6a23c2ace5758e8c5f01a9bdac5f17f1da72c1f73088dbde363a180eb5850aff9d0c616b17972c52d6a40981e0e3de693acc0c1f4a90cc SHA512 19cc79b098d8b64265a84831611791376f884f4d402c27c9e02e26c30ccef7e4e77b48b39431570664790805e368adbacc73276d6c953ef31ae978896be9d110 MISC metadata.xml 440 BLAKE2B ac3497ce481935eaef7f87c9f1c2ff7360b75a7d1f5f9bfc018726784fe3d1573ca16177e0ed956b494371def35bd592878bac27ec3862904b21714c556f937d SHA512 748c3608ee175243a8c02912d18a9297708c1369ac79af913e05a9d2155805fc9b6b366625223d977e378584a69e6bac749e5d3ee0a874d72385427d6149e5c5 diff --git a/dev-cpp/kokkos/kokkos-4.6.2-r2.ebuild b/dev-cpp/kokkos/kokkos-4.6.2-r2.ebuild new file mode 100644 index 0000000000000..401c5258f64eb --- /dev/null +++ b/dev-cpp/kokkos/kokkos-4.6.2-r2.ebuild @@ -0,0 +1,114 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake cuda toolchain-funcs + +DESCRIPTION="C++ Performance Portability Programming EcoSystem" +HOMEPAGE="https://github.com/kokkos" + +if [[ ${PV} = *9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/kokkos/kokkos.git" +else + MY_PV="$(ver_cut 1-2).0$(ver_cut 3)" + SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/${MY_PV}.tar.gz -> ${P}.tar.gz" + S="${WORKDIR}/${PN}-${MY_PV}" + KEYWORDS="~amd64 ~x86" +fi + +LICENSE="BSD" +SLOT="0/${PV}" +IUSE="cuda +openmp test" +RESTRICT="!test? ( test )" + +DEPEND="sys-apps/hwloc:=" +RDEPEND="${DEPEND}" + +# +# Try to translate the "${CUDAARCHS}" number coming from __nvcc_device_query +# into an option string that Kokkos' CMake configuration understands: +# +kokkos_arch_option() { + case "${1}" in + 3[0257]) echo "-DKokkos_ARCH_KEPLER${1}=ON" ;; + 5[023]) echo "-DKokkos_ARCH_MAXWELL${1}=ON" ;; + 6[01]) echo "-DKokkos_ARCH_PASCAL${1}=ON" ;; + 7[02]) echo "-DKokkos_ARCH_VOLTA${1}=ON" ;; + 75) echo "-DKokkos_ARCH_TURING${1}=ON" ;; + 8[06]) echo "-DKokkos_ARCH_AMPERE${1}=ON" ;; + 89) echo "-DKokkos_ARCH_ADA${1}=ON" ;; + 90) echo "-DKokkos_ARCH_HOPPER${1}=ON" ;; + 1[02]0) echo "-DKokkos_ARCH_BLACKWELL${1}=ON" ;; + *) die "Unknown CUDA architecture »${1}«" ;; + esac +} + +pkg_pretend() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +pkg_setup() { + [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp +} + +src_prepare() { + cmake_src_prepare +} + +src_configure() { + local mycmakeargs=( + -DCMAKE_INSTALL_INCLUDEDIR=include/kokkos + -DKokkos_ENABLE_TESTS="$(usex test)" + -DKokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON + -DKokkos_ENABLE_SERIAL=ON + -DKokkos_ENABLE_HWLOC=ON + -DKokkos_ENABLE_CUDA="$(usex cuda)" + -DKokkos_ENABLE_CUDA_CONSTEXPR="$(usex cuda)" + -DKokkos_HWLOC_DIR="${EPREFIX}/usr" + -DKokkos_ENABLE_OPENMP="$(usex openmp)" + -DBUILD_SHARED_LIBS=ON + ) + + if use cuda; then + cuda_add_sandbox -w + + if [[ ! -n "${CUDAARCHS}" ]]; then + if ! SANDBOX_WRITE=/dev/nvidiactl test -w /dev/nvidiactl ; then + eerror + eerror "Can not access the GPU at /dev/nvidiactl." + eerror "User $(id -nu) is not in the group \"video\"." + eerror + ewarn + ewarn "Can not query the native device. You will need to set one of the" + ewarn "supported Kokkos_ARCH_{..} CMake variables, or the CUDAARCHS" + ewarn "environment variable to the appropriate architecture by hand..." + ewarn + else + local CUDAARCHS + CUDAARCHS="$(__nvcc_device_query || eerror "failed to query the native device")" + fi + fi + + if [[ -n "${CUDAARCHS}" ]]; then + einfo "Building with CUDAARCHS=${CUDAARCHS}" + mycmakeargs+=( + $(kokkos_arch_option "${CUDAARCHS}") + ) + fi + fi + + cmake_src_configure +} + +src_test() { + local myctestargs=( + # Contains "death tests" which are known/expected(?) to fail + # https://github.com/kokkos/kokkos/issues/3033 + # bug #791514 + -E "(KokkosCore_UnitTest_OpenMP|KokkosCore_UnitTest_Serial)" + ) + + cmake_src_test +} diff --git a/dev-cpp/kokkos/kokkos-9999.ebuild b/dev-cpp/kokkos/kokkos-9999.ebuild index ee6ccf7fff8bd..401c5258f64eb 100644 --- a/dev-cpp/kokkos/kokkos-9999.ebuild +++ b/dev-cpp/kokkos/kokkos-9999.ebuild @@ -3,7 +3,7 @@ EAPI=8 -inherit cmake toolchain-funcs +inherit cmake cuda toolchain-funcs DESCRIPTION="C++ Performance Portability Programming EcoSystem" HOMEPAGE="https://github.com/kokkos" @@ -20,12 +20,31 @@ fi LICENSE="BSD" SLOT="0/${PV}" -IUSE="+openmp test" +IUSE="cuda +openmp test" RESTRICT="!test? ( test )" DEPEND="sys-apps/hwloc:=" RDEPEND="${DEPEND}" +# +# Try to translate the "${CUDAARCHS}" number coming from __nvcc_device_query +# into an option string that Kokkos' CMake configuration understands: +# +kokkos_arch_option() { + case "${1}" in + 3[0257]) echo "-DKokkos_ARCH_KEPLER${1}=ON" ;; + 5[023]) echo "-DKokkos_ARCH_MAXWELL${1}=ON" ;; + 6[01]) echo "-DKokkos_ARCH_PASCAL${1}=ON" ;; + 7[02]) echo "-DKokkos_ARCH_VOLTA${1}=ON" ;; + 75) echo "-DKokkos_ARCH_TURING${1}=ON" ;; + 8[06]) echo "-DKokkos_ARCH_AMPERE${1}=ON" ;; + 89) echo "-DKokkos_ARCH_ADA${1}=ON" ;; + 90) echo "-DKokkos_ARCH_HOPPER${1}=ON" ;; + 1[02]0) echo "-DKokkos_ARCH_BLACKWELL${1}=ON" ;; + *) die "Unknown CUDA architecture »${1}«" ;; + esac +} + pkg_pretend() { [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp } @@ -34,18 +53,52 @@ pkg_setup() { [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp } +src_prepare() { + cmake_src_prepare +} + src_configure() { local mycmakeargs=( -DCMAKE_INSTALL_INCLUDEDIR=include/kokkos - -DKokkos_ENABLE_TESTS=$(usex test) + -DKokkos_ENABLE_TESTS="$(usex test)" -DKokkos_ENABLE_AGGRESSIVE_VECTORIZATION=ON -DKokkos_ENABLE_SERIAL=ON -DKokkos_ENABLE_HWLOC=ON + -DKokkos_ENABLE_CUDA="$(usex cuda)" + -DKokkos_ENABLE_CUDA_CONSTEXPR="$(usex cuda)" -DKokkos_HWLOC_DIR="${EPREFIX}/usr" - -DKokkos_ENABLE_OPENMP=$(usex openmp) + -DKokkos_ENABLE_OPENMP="$(usex openmp)" -DBUILD_SHARED_LIBS=ON ) + if use cuda; then + cuda_add_sandbox -w + + if [[ ! -n "${CUDAARCHS}" ]]; then + if ! SANDBOX_WRITE=/dev/nvidiactl test -w /dev/nvidiactl ; then + eerror + eerror "Can not access the GPU at /dev/nvidiactl." + eerror "User $(id -nu) is not in the group \"video\"." + eerror + ewarn + ewarn "Can not query the native device. You will need to set one of the" + ewarn "supported Kokkos_ARCH_{..} CMake variables, or the CUDAARCHS" + ewarn "environment variable to the appropriate architecture by hand..." + ewarn + else + local CUDAARCHS + CUDAARCHS="$(__nvcc_device_query || eerror "failed to query the native device")" + fi + fi + + if [[ -n "${CUDAARCHS}" ]]; then + einfo "Building with CUDAARCHS=${CUDAARCHS}" + mycmakeargs+=( + $(kokkos_arch_option "${CUDAARCHS}") + ) + fi + fi + cmake_src_configure } |