blob: 6ce3ea96e786d5b5fd5ad748cc1477c35e558351 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# Copyright 2024 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
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 cpu_flags_x86_avx512f cpu_flags_x86_avx2 cpu_flags_x86_sse4_1 mkl cblas static-libs"
RESTRICT="!test? ( test )"
DEPEND="
mkl? ( sci-libs/mkl )
cblas? ( !mkl? ( virtual/cblas ) )
"
RDEPEND="${DEPEND}"
PATCHES=(
"${FILESDIR}/${PN}-3.3.3-include-cstdint.patch"
)
src_configure() {
local mycmakeargs=(
-DDNNL_LIBRARY_TYPE=$(usex static-libs STATIC SHARED)
-DDNNL_CPU_RUNTIME=OMP
-DDNNL_GPU_RUNTIME=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_GPU_VENDOR=INTEL
-DDNNL_LIBRARY_NAME=dnnl
-DONEDNN_BUILD_GRAPH=ON
-DONEDNN_ENABLE_GRAPH_DUMP=OFF
-DONEDNN_EXPERIMENTAL_GRAPH_COMPILER_BACKEND=OFF
-Wno-dev
)
local isa="ALL"
if use cpu_flags_x86_avx512f ; then
isa="AVX512"
elif use cpu_flags_x86_avx2; then
isa="AVX2"
elif use cpu_flags_x86_sse4_1; then
isa="SSE41"
else
ewarn "WARNING: oneDNN is being built with for all ISA."
ewarn "These may cause runtime issues CPUs that are not supported by oneDNN."
ewarn ""
ewarn "To configure oneDNN with ISA that is optimal for your CPU,"
ewarn "set CPU_FLAGS_X86 in your make.conf, and re-emerge oneDNN."
ewarn ""
ewarn "See the list of supported CPUs at"
ewarn "https://github.com/oneapi-src/oneDNN?tab=readme-ov-file#system-requirements"
ewarn "For CPU_FLAGS_X86 documentation visit https://wiki.gentoo.org/wiki/CPU_FLAGS_*"
fi
mycmakeargs+=( -DDNNL_ENABLE_PRIMITIVE_CPU_ISA="${isa}" -DONEDNN_ENABLE_GEMM_KERNELS_ISA="${isa}" )
if use mkl ; then
source /opt/intel/oneapi/mkl/latest/env/vars.sh
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
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
}
|