added sycl to mkl and oneDNN

This commit is contained in:
TheK0tYaRa 2025-11-30 21:14:57 +02:00
parent bcb25880b7
commit 9430b868b4
11 changed files with 295 additions and 12 deletions

View file

@ -30,7 +30,7 @@ end
function update_urls
for package_dir in $package_dirs
set -g package_set (cat $package_dir/_names)
set -g package_set (cat $package_dir/deb_names)
set -g deb_urls (get_deb)
@ -43,12 +43,35 @@ function update_urls
echo '"' >> /tmp/$_uuid
# replace the block
sed '/^SRC_URI="/,/^"/c\\'"$(cat /tmp/$_uuid)" -i "$package_dir/$(echo $package_dir | string split '/')[-1]-9999.ebuild"
rm /tmp/$_uuid
set ebuild_file "$package_dir/$(echo $package_dir | string split '/')[-1]-9999.ebuild"
if ! test -f "$FILE"
echo "Can't update missing file:"
echo "$ebuild_file"
echo "#======="
sed -e 's/\\\n/\n/g' /tmp/$_uuid | string replace '\\' ''
echo "#======="
break
end
# update manifests
cd $package_dirs
pkgdev manifest
local overwrite="n"
echo "Overwrite SRC_URI in $ebuild_file ?"
echo "[y/n]"
while true
read -f overwrite
[[ "$overwrite" == y* || "$overwrite" == n* ]] && echo "$overwrite" && break || echo "unrecognized input"
end
echo $overwrite
if [[ "$overwrite" == y* ]]
break
sed '/^SRC_URI="/,/^"/c\\'"$(cat /tmp/$_uuid)" -i "$ebuild_file"
rm /tmp/$_uuid
# update manifests
cd $package_dirs
pkgdev manifest
else
echo "fuck"
end
end
end
@ -58,10 +81,10 @@ end
set -l DIR (cd (dirname (status -f)); and pwd)
# folders to process
set -g package_dirs (find $DIR -name '_names' | string replace '/_names' '')
set -g package_dirs (find $DIR -name 'deb_names' | string replace '/deb_names' '')
set -g url_base "https://apt.repos.intel.com/oneapi"
set -g versions (wget -qO- $url_base/dists/all/main/binary-amd64/Packages.gz | gzip -d | grep "^Filename:" | cut -d' ' -f2 | sort -u | grep -e '-[0-9]' | string split ' ')
set -g versions (wget -qO- $url_base/dists/all/main/binary-amd64/Packages.gz | gzip -d | grep "^Filename:" | cut -d' ' -f2 | sort -u | grep -e '-[0-9]*.[0-9]-[0-9]*.[0-9].[0-9]*' | string split ' ')
switch $argv[1]
case 'update'

View file

@ -0,0 +1,12 @@
BDEPEND=virtual/pkgconfig
DEFINED_PHASES=-
DEPEND=
DESCRIPTION=Intel staging area for llvm.org contribution. Home for Intel LLVM-based projects
EAPI=8
HOMEPAGE=https://github.com/intel/llvm
KEYWORDS=~amd64
LICENSE=Apache2.0
RDEPEND=
SLOT=0
SRC_URI=https://github.com/intel/llvm/releases/download/v6.2.1/sycl_linux.tar.gz -> intel-llvm-6.2.1.tar.gz
_md5_=ee01798aaacc61c420cb43dfccb5c2dd

View file

@ -4,12 +4,13 @@ DESCRIPTION=Intel Math Kernel Library
EAPI=8
HOMEPAGE=https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl.html
INHERIT=unpacker
IUSE=eselect-ldso examples gnu-openmp llvm-openmp static-libs tbb sycl
IUSE=eselect-ldso examples gnu-openmp llvm-openmp static-libs tbb sycl blas
KEYWORDS=~amd64
LICENSE=ISSL
RDEPEND=eselect-ldso? ( app-eselect/eselect-blas app-eselect/eselect-lapack ) gnu-openmp? ( sys-devel/gcc:*[openmp] ) llvm-openmp? ( llvm-runtimes/openmp ) tbb? ( dev-cpp/tbb )
REQUIRED_USE=blas? ( sycl )
RESTRICT=strip
SLOT=0
SRC_URI=https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-core-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-core-devel-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-classic-include-2025.3-2025.3.0-461_amd64.deb sycl? ( https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-devel-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-include-2025.3-2025.3.0-461_amd64.deb )
SRC_URI=https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-core-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-core-devel-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-classic-include-2025.3-2025.3.0-461_amd64.deb sycl? ( https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-devel-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-include-2025.3-2025.3.0-461_amd64.deb blas? ( https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-blas-2025.3-2025.3.0-461_amd64.deb ) https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-data-fitting-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-dft-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-distributed-dft-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-distributed-dft-devel-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-lapack-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-rng-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-sparse-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-stats-2025.3-2025.3.0-461_amd64.deb https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-vm-2025.3-2025.3.0-461_amd64.deb )
_eclasses_=multiprocessing 1e32df7deee68372153dca65f4a7c21f toolchain-funcs 98d9f464d912ae6b7316fb8a3721f5db unpacker 3b4ee72d1e2e0374fd8cd3eddfa00627
_md5_=b567c39897aea49c7b588a4a3ac2ac1f
_md5_=d90405605ee7b6995b4a3f461716deee

View file

@ -0,0 +1,16 @@
BDEPEND=openmp? ( || ( sys-devel/gcc[openmp] llvm-runtimes/clang-runtime[openmp] ) ) app-alternatives/ninja >=dev-build/cmake-3.28.5 doc? ( app-text/doxygen )
DEFINED_PHASES=compile configure install prepare pretend setup test
DEPEND=mkl? ( sci-libs/mkl ) cblas? ( !mkl? ( virtual/cblas ) )
DESCRIPTION=oneAPI Deep Neural Network Library
EAPI=8
HOMEPAGE=https://github.com/oneapi-src/oneDNN
INHERIT=cmake docs multiprocessing toolchain-funcs
IUSE=test mkl cblas static-libs +openmp doc
KEYWORDS=amd64
LICENSE=Apache-2.0
RDEPEND=mkl? ( sci-libs/mkl ) cblas? ( !mkl? ( virtual/cblas ) )
RESTRICT=test
SLOT=0
SRC_URI=https://github.com/oneapi-src/oneDNN/archive/refs/tags/v3.10.1.tar.gz -> oneDNN-3.10.1.tar.gz
_eclasses_=toolchain-funcs 98d9f464d912ae6b7316fb8a3721f5db flag-o-matic a7afe42e95fb46ce9691605acfb24672 multiprocessing 1e32df7deee68372153dca65f4a7c21f ninja-utils 3a59a39e97af0f7c03f49cf3c22f262b xdg-utils 42869b3c8d86a70ef3cf75165a395e09 cmake 22e4e58d68692975dc74424dc9b12fb7 docs 006125f2158d2f16904ebd9114336058
_md5_=82f3f649538fdc5ce7caeb930b3d9b13

View file

@ -1,5 +1,16 @@
DIST intel-oneapi-mkl-classic-include-2025.3-2025.3.0-461_amd64.deb 662600 BLAKE2B a3ef4f096561f829c7a8e877c61020ed19772867ea02d4752f5731327ca35c9c43c5d4f7b525f3f7b8eb23c78c51141c6dc87413a3ad3bb005ce3aca323fa112 SHA512 b246b5829e2804a5c61853a198935e625afd1fbbcf7a4135e867c225f0102df28ea99291d35c9dc75a93b5e17d1e1a8c2c8bc7b4e059742341ff9746347be09c
DIST intel-oneapi-mkl-core-2025.3-2025.3.0-461_amd64.deb 110250458 BLAKE2B fd80ca6c6432087fab96ee50a0a2dd3eeb5fa4441a56a172e5efdcca7ad3a480ff4f5fe6b0c627b5134de273a6504eaaf61054892fce4c78dbdd119470cf5fd8 SHA512 a343b9e8055f7fe3c09c6cab1df9300242e56e56396f519a5b3bfb7bc95e31be0243b2cf0a7e165c603569e7fe841955d1282607609043690ea4570baed41786
DIST intel-oneapi-mkl-core-devel-2025.3-2025.3.0-461_amd64.deb 106333914 BLAKE2B c10c0c5e9bf7a39ef745ec0bc952e291d295878b7a590a99ed7816a3802b48e05a8f126e9049350929ef56074be43c1648942f4ea92f8730138f95f2267de713 SHA512 bd56d7f03d5dc1d9b2aa0dc94b6d9c093bb60f99bf2351d48d18db8d311162a22fa9178d48b73394809cd629f57bcb14f718ed5fd4e19a7f7d021f4866a04964
DIST intel-oneapi-mkl-sycl-2025.3-2025.3.0-461_amd64.deb 2676 BLAKE2B 40c2e395ca951b9d4b7f51ccdd463a04d207c72d864de9e0d2dd2cc4ce33a57684efbfdbacebbedb739a5780eb0fa7a6c5ace4e85feded451645fbb815f3d723 SHA512 5cc0db1347dc4b339da75e512a3b22b62343fa17b49f9283efd9352e2e68e1d9bbd2d64f6e256a93db4bc5c3ce000ca50d9acec1e3ebb7b3994549a124eff63f
DIST intel-oneapi-mkl-sycl-blas-2025.3-2025.3.0-461_amd64.deb 13018234 BLAKE2B 13223659e21da1afd32aee6ee90067f4e83db83f7c33c42e53cc0d8e665c3da5cb1881b6717351aade954f0c178c6f350a64ff071c15dca1ee6d9e87d6f2ee13 SHA512 627c43440d37cc18c5a771c1ebbc33dcb47ab2870c0868977b76fff426b0ff908941a3b1ea979c5488c31e2fb1c315424a49bd094d2a682ad0245d012ffeba3a
DIST intel-oneapi-mkl-sycl-data-fitting-2025.3-2025.3.0-461_amd64.deb 1327908 BLAKE2B 82a0e1f968e847ed02a0c8eb3f8a657223909f460028a0521226220c3d70a154c43f2de6b6640c8b4f15b23363c10e110b40dc822bfa2590f4221bd68e3ffcd4 SHA512 ee70a542d7dea2f0eebe6f70851874a97cfa915c8a763f0fd3e51eb041f2e292757b485f65d8a7829c239c501aa16d64c4d3721091d5a501daa95fe2432188d2
DIST intel-oneapi-mkl-sycl-devel-2025.3-2025.3.0-461_amd64.deb 103906754 BLAKE2B 216ee3a7fd99503fd72d70b0f3f9b3cd83161baacceb5793c84a38ab4177994fbbdffa282a8658a1f3b42921084cdc73a1e74a6bd05bcdf982fcbfe6a0fb2b96 SHA512 5c7f76a46cdc533bde0225ac37527cc0b62b728b5600321b301e088b32ffe0ac7694565125b61c629694362267af833fe2bca8f3159f40763ddc1c4c8e5b01c0
DIST intel-oneapi-mkl-sycl-dft-2025.3-2025.3.0-461_amd64.deb 2655128 BLAKE2B 13c8044a1532ded554bd7de601ac936a58d2a5b039b538ff5785eb75452a7214a5d2de45181a4793daf14919f41194376f9bb1deb174ab7004fd385fd52ba749 SHA512 097f75ab394f61fec1f490a07452096aa37aef3c24f11bb7a278ff2689ee90f3aaa79befcac4bc99d6da61327d86a53d980d800431739cca9520429ec9050d90
DIST intel-oneapi-mkl-sycl-distributed-dft-2025.3-2025.3.0-461_amd64.deb 54350 BLAKE2B f7c5f3f33b9264058fe99fff01a8b723ad3397323c716971f36042ef83230b6b5b7712bee2985866c4814e81dff2b9730fe2e7946df9ef0bc19ffeec109e89fe SHA512 0aad0b00179cccfd2d79d023118b8cb4db8bc2bb110e2dda32f328538cafeccb92bfbafbb566f81edd4545e963c47c34f274a4fa1aebc1914a5478d4b7dad422
DIST intel-oneapi-mkl-sycl-distributed-dft-devel-2025.3-2025.3.0-461_amd64.deb 56166 BLAKE2B 4a85071a322832cb579c8814db0fc8b26b8e8356a83ffe60b03cee842589e93454fbf4d53bb13eea970f5d118feea062aa413ef0607b8afa97a9982a2842b428 SHA512 b2520cd95daefe017eb69172c63daee0b4f0e899ea27593deecbf16ae1f0abd5a6bad47d2b40b2529f4f5677ab95fa16ce3bee86e68795618eb8ced20f04c829
DIST intel-oneapi-mkl-sycl-include-2025.3-2025.3.0-461_amd64.deb 130584 BLAKE2B c0482b0ca05581f02c30d8bf310a52faadd50c3ea85a79c01d32a2c2e40b3574dce278cf1aee7ac6c1e79ee4a3eda4b7bb3a20b951d41b43dc44879436fee438 SHA512 a5d1457aebe7e37e32a9a5a373cf79ef189e89c871291dee9b983053e7bced5aee440765a1278b7702ca9bd7d60e569dc86aaa260ee6814fdec60e390ba048be
DIST intel-oneapi-mkl-sycl-lapack-2025.3-2025.3.0-461_amd64.deb 6594236 BLAKE2B 9df5bd86a5618e034673bf61a342c441dc31e9e9008af1420ce2e59971fc09df1ffbb5aa9b3e58b7d80ac8b82de2a2392064bfb90d561bd248b8c957314578d8 SHA512 5e69d4cc1cf69f90c9faf8c11ca36c28a865f52952f755f1c3d5af8553c0d1673c12384d5dd1dcb3122b840a34c89ca8d5e82d7dba5e4530f3c771d76fe422bb
DIST intel-oneapi-mkl-sycl-rng-2025.3-2025.3.0-461_amd64.deb 14999630 BLAKE2B 31672953a13120ad59975b379da8a4bef58b4bb6fc26afe593d1db1e8852918c433c04e15876dcc4fa0d7c77fb06861a238f6585ae0471e3501d2818e27d79d2 SHA512 c33d32bda839b9977195cc2a741afdbcf8727e17101aa352cc0309edd4dd5bbd60dbab0b1892fb062b97c4067ad6f7275be7ae2b981dc8db39e74e6d2767628d
DIST intel-oneapi-mkl-sycl-sparse-2025.3-2025.3.0-461_amd64.deb 15963026 BLAKE2B 2803986c567fbc425b27732dd095e999638dce0911ed7838949f4f3c9785ba7a979574e269003bea36f4cc93ed5247733dd3a4b7fb19450c93681e379a09ff73 SHA512 ccd26fdf0068519d2ab6b8b67d828bf73574f67e4a179ef585e930d18a388a1369f07887b0037bafd132419e657ab10ff149feff307e3c905077d86f5fad40ed
DIST intel-oneapi-mkl-sycl-stats-2025.3-2025.3.0-461_amd64.deb 4616296 BLAKE2B c79ab06b93472a14edcf5660de278280430ea8ff06780c09f4c90aeec43c715dcf42be2363dc3dc4fe18d38bfe15b0f2b2b62452663832a606c43402dd515b0a SHA512 00e89b8654da5459c724b54311080854c9b65a2b33d3a6d0d6b11d0f5c8d85d91647df2956a7962339810404c472c42c5f47a98b8b013cf6a8ee0ffaae41dd1e
DIST intel-oneapi-mkl-sycl-vm-2025.3-2025.3.0-461_amd64.deb 34218074 BLAKE2B 97ce6d8754975216955067e33771759a3f6b4eb4ae0a0f1d102901985e66961f8beb36fb122f7505ec31a6242fe9389011f78a4c2727a46666a31180f4301c0a SHA512 99100bfc4899948f3539ce6d30e679ba07d4e47763fc56334a59160ec45b066be97ebd420436663e16d18fc3e5cb9187f5e81ec07fc4155fa72df9870a1207a9

View file

@ -3,3 +3,4 @@ intel-oneapi-mkl-core-devel
intel-oneapi-mkl-classic-include
intel-oneapi-mkl-sycl-devel
intel-oneapi-mkl-sycl-include
intel-oneapi-mkl-sycl-blas

View file

@ -15,8 +15,20 @@ SRC_URI="
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-core-devel-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-classic-include-${PN_VER}-${MY_PV}_amd64.deb
sycl? (
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-devel-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-include-${PN_VER}-${MY_PV}_amd64.deb
blas? ( https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-blas-${PN_VER}-${MY_PV}_amd64.deb )
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-data-fitting-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-dft-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-distributed-dft-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-distributed-dft-devel-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-lapack-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-rng-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-sparse-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-stats-${PN_VER}-${MY_PV}_amd64.deb
https://apt.repos.intel.com/oneapi/pool/main/intel-oneapi-mkl-sycl-vm-${PN_VER}-${MY_PV}_amd64.deb
)
"
S="${WORKDIR}"
@ -24,7 +36,8 @@ S="${WORKDIR}"
LICENSE="ISSL"
SLOT="0"
KEYWORDS="~amd64"
IUSE="eselect-ldso examples gnu-openmp llvm-openmp static-libs tbb sycl"
IUSE="eselect-ldso examples gnu-openmp llvm-openmp static-libs tbb sycl blas"
REQUIRED_USE="blas? ( sycl )"
RESTRICT="strip"
RDEPEND="

1
sci-ml/oneDNN/Manifest Normal file
View file

@ -0,0 +1 @@
DIST oneDNN-3.10.1.tar.gz 13511292 BLAKE2B ad46e800b026c4ea37ad14f87ce46cae34a3c2491db430f725ae1d22446b6c7c2f522742106ee6116c0c93f9c3dfc26af146d00bd8159d0e4e69329a3559bfda SHA512 a20e9cf8c47462ce82e366e8769cbea3733b57e01026c3661d5b3bb306fe2bbb30926b65d6aa143120d3c11416573b2fd7016bfd9f4daa29967fd634c7670eb7

View file

@ -0,0 +1,33 @@
--- a/CMakeLists.txt 2025-04-08 22:04:35.298750813 +0200
+++ b/CMakeLists.txt 2025-04-08 22:04:47.430599644 +0200
@@ -14,7 +14,7 @@
# limitations under the License.
#===============================================================================
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 3.5)
if(POLICY CMP0022)
cmake_policy(SET CMP0022 NEW)
--- a/tests/other/subproject/CMakeLists.txt 2025-06-17 22:07:30.945429962 +0200
+++ b/tests/other/subproject/CMakeLists.txt 2025-06-17 22:07:45.914268746 +0200
@@ -20,7 +20,7 @@
# To test run:
# mkdir -p build && cd build && cmake .. && make -j && ./project_app
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 3.5)
set(PROJECT_NAME "Project")
--- a/examples/CMakeLists.txt.in 2025-06-17 22:08:08.118029611 +0200
+++ b/examples/CMakeLists.txt.in 2025-06-17 22:08:22.668872895 +0200
@@ -14,7 +14,7 @@
# limitations under the License.
#===============================================================================
-cmake_minimum_required(VERSION 2.8.12)
+cmake_minimum_required(VERSION 3.5)
if("${CMAKE_BUILD_TYPE}" STREQUAL "")
message(STATUS "CMAKE_BUILD_TYPE is unset, defaulting to Release")

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>tupone@gentoo.org</email>
<name>Tupone Alfredo</name>
</maintainer>
<maintainer type="person">
<email>lockalsash@gmail.com</email>
<name>Sv. Lockal</name>
</maintainer>
<maintainer type="project" proxied="proxy">
<email>proxy-maint@gentoo.org</email>
<name>Proxy Maintainers</name>
</maintainer>
<upstream>
<bugs-to>https://github.com/oneapi-src/oneDNN/issues</bugs-to>
<remote-id type="github">oneapi-src/oneDNN</remote-id>
</upstream>
<use>
<flag name="mkl">Use sci-libs/mkl for sgemm routines</flag>
<flag name="cblas">Use virtual/cblas for sgemm routines</flag>
</use>
</pkgmetadata>

View file

@ -0,0 +1,148 @@
# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DOCS_BUILDER="doxygen"
DOCS_DIR="${WORKDIR}/${P}_build"
# oneDNN has its own FindBLAS.cmake file to find MKL (in a non-standard way).
# Removing of CMake modules is disabled.
CMAKE_REMOVE_MODULES_LIST=( none )
# There is additional sphinx documentation but we are missing dependency doxyrest.
inherit cmake docs multiprocessing toolchain-funcs
DESCRIPTION="oneAPI Deep Neural Network Library"
HOMEPAGE="https://github.com/oneapi-src/oneDNN"
SRC_URI="https://github.com/oneapi-src/oneDNN/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="amd64"
IUSE="test mkl cblas static-libs +openmp sycl"
RESTRICT="test" # Some test are very long to execute
DEPEND="
mkl? ( sci-libs/mkl )
cblas? ( !mkl? ( virtual/cblas ) )
"
RDEPEND="${DEPEND}"
BDEPEND="
openmp? (
|| (
sys-devel/gcc[openmp]
llvm-runtimes/clang-runtime[openmp]
)
)
sycl? ( dev-util/intel-llvm )
"
pkg_pretend() {
use openmp && use sycl && ewarn "SYCL takes priority over OpenMP as both were enabled."
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
pkg_setup() {
[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
}
src_configure() {
if ! use openmp && ! use sycl ; then
ewarn "WARNING: oneDNN is being built with sequential runtime."
ewarn "Proceeding might lead to highly sub-optimal performance."
ewarn "Conside enabling \"openmp\" or \"sycl\" USE flag."
fi
local mycmakeargs=(
-DDNNL_LIBRARY_TYPE=$(usex static-libs STATIC SHARED)
-DDNNL_GPU_RUNTIME=$(usex sycl SYCL NONE)
-DDNNL_BUILD_EXAMPLES=OFF
-DDNNL_BUILD_TESTS="$(usex test)"
-DDNNL_ENABLE_CONCURRENT_EXEC=OFF
-DDNNL_ENABLE_JIT_PROFILING=ON
-DDNNL_ENABLE_ITT_TASKS=ON
-DDNNL_ENABLE_PRIMITIVE_CACHE=ON
-DDNNL_ENABLE_MAX_CPU_ISA=ON
-DDNNL_ENABLE_CPU_ISA_HINTS=ON
-DDNNL_ENABLE_WORKLOAD=TRAINING
-DDNNL_ENABLE_PRIMITIVE=ALL
-DDNNL_ENABLE_PRIMITIVE_GPU_ISA=ALL
-DDNNL_EXPERIMENTAL=OFF
-DDNNL_VERBOSE=ON
-DDNNL_DEV_MODE=OFF
-DDNNL_AARCH64_USE_ACL=OFF
-DDNNL_EXPERIMENTAL_UKERNEL=ON
-DDNNL_GPU_VENDOR=INTEL
-DDNNL_LIBRARY_NAME=dnnl
-DONEDNN_BUILD_GRAPH=ON
-DONEDNN_ENABLE_GRAPH_DUMP=OFF
#-DONEDNN_EXPERIMENTAL_GRAPH_COMPILER_BACKEND=OFF
-DDNNL_ENABLE_PRIMITIVE_CPU_ISA=ALL
-DONEDNN_ENABLE_GEMM_KERNELS_ISA=ALL
-Wno-dev
)
if use mkl ; then
if [ -e "${EPREFIX}"/opt/intel/oneapi/mkl/latest/env/vars.sh ]; then
source "${EPREFIX}"/opt/intel/oneapi/mkl/latest/env/vars.sh || die
else
# bug 923109: sci-libs/mkl-2020.4.304 has no vars.sh, configure it manually
export CPATH="${EPREFIX}"/usr/include/mkl
export MKLROOT="${EPREFIX}"/usr
fi
mycmakeargs+=( -DDNNL_BLAS_VENDOR=MKL )
elif use cblas; then
mycmakeargs+=( -DDNNL_BLAS_VENDOR=ANY -DBLA_VENDOR=Generic -DBLAS_LIBRARIES=-lcblas )
else
mycmakeargs+=( -DDNNL_BLAS_VENDOR=NONE )
fi
if use sycl ; then
mycmakeargs+=( -DDNNL_CPU_RUNTIME=SYCL )
elif use openmp ; then
mycmakeargs+=( -DDNNL_CPU_RUNTIME=OMP )
fi
if use sycl ; then
mycmakeargs+=(
-DDNNL_WITH_SYCL=1
)
CC="icx" CXX="icpx"
[[ $FEATURES == *ccache* ]] && CC="ccache $CC" CXX="ccache $CXX"
export CC CXX
fi
cmake_src_configure
}
src_compile() {
cmake_src_compile
docs_compile
}
src_install() {
cmake_src_install
# Correct docdir
mv "${ED}/usr/share/doc/dnnl"* "${ED}/usr/share/doc/${PF}" || die
}
src_test() {
local CMAKE_SKIP_TESTS=(
# Crashes in sandbox (see #922886 and #923013);
# waits for sys-apps/sandbox-2.39 release and stabilization.
test_graph_unit_interface
test_graph_unit_dnnl_layout_propagator
test_graph_unit_dnnl_op_executable
test_graph_unit_utils
)
if use openmp ; then
# Don't run tests in parallel, each test is already parallelized
OMP_NUM_THREADS=$(makeopts_jobs) cmake_src_test -j1
else
cmake_src_test
fi
}