blob: 78b43962e8b8a6f01b14f7281a00e15227738d1e (
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ROCM_VERSION=7.2
inherit cuda cmake rocm toolchain-funcs flag-o-matic
DESCRIPTION="Tensor library for machine learning"
HOMEPAGE="https://ggml.ai/"
SRC_URI="https://github.com/ggml-org/${PN}/archive/refs/tags/v${PV}.tar.gz
-> ${P}.tar.gz"
LICENSE="MIT"
SLOT="0/${PV}"
KEYWORDS="~amd64 ~arm64"
X86_CPU_FLAGS=(
amx_bf16
amx_int8
amx_tile
avx
avx_vnni
avx2
avx512_bf16
avx512bw
avx512f
avx512vbmi
avx512_vnni
bmi2
fma3
f16c
sse4_2
)
CPU_FLAGS=( "${X86_CPU_FLAGS[@]/#/cpu_flags_x86_}" )
IUSE="${CPU_FLAGS[*]} cuda openmp rocm test vulkan"
REQUIRED_USE="rocm? ( ${ROCM_REQUIRED_USE} )"
RESTRICT="!test? ( test )"
# Should be >=sci-libs/hipBLAS-${ROCM_VERSION}[${ROCM_USEDEP}]
# But pkgcheck can't elaborate that
RDEPEND="
cuda? (
dev-util/nvidia-cuda-toolkit:=
)
vulkan? ( media-libs/vulkan-loader )
rocm? (
>=dev-util/hip-${ROCM_VERSION}
>=sci-libs/hipBLAS-${ROCM_VERSION}
)
"
DEPEND="${RDEPEND}
vulkan? ( dev-util/vulkan-headers )
"
BDEPEND="vulkan? ( media-libs/shaderc )"
PATCHES=(
"${FILESDIR}"/hedronfire-const-fp16-loads.patch
"${FILESDIR}"/${P}-llvm-23.patch
)
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
if use cuda; then
cuda_src_prepare
filter-lto #bug 983121
fi
}
src_configure() {
local mycmakeargs=(
-DGGML_BACKEND_DL=OFF
-DGGML_BUILD_EXAMPLES=OFF
-DGGML_NATIVE=OFF
-DGGML_HIP_MMQ_MFMA=OFF
# CPU Flags
-DGGML_AMX_BF16=$(usex cpu_flags_x86_amx_bf16)
-DGGML_AMX_INT8=$(usex cpu_flags_x86_amx_int8)
-DGGML_AMX_TILE=$(usex cpu_flags_x86_amx_tile)
-DGGML_AVX=$(usex cpu_flags_x86_avx)
-DGGML_AVX_VNNI=$(usex cpu_flags_x86_avx_vnni)
-DGGML_AVX2=$(usex cpu_flags_x86_avx2)
-DGGML_AVX512_BF16=$(usex cpu_flags_x86_avx512_bf16)
-DGGML_AVX512_VBMI=$(usex cpu_flags_x86_avx512vbmi)
-DGGML_AVX512_VNNI=$(usex cpu_flags_x86_avx512_vnni)
-DGGML_BMI2=$(usex cpu_flags_x86_bmi2)
-DGGML_FMA=$(usex cpu_flags_x86_fma3)
-DGGML_F16C=$(usex cpu_flags_x86_f16c)
-DGGML_SSE42=$(usex cpu_flags_x86_sse4_2)
-DGGML_CUDA=$(usex cuda)
-DGGML_OPENMP=$(usex openmp)
-DGGML_HIP=$(usex rocm)
-DGGML_VULKAN=$(usex vulkan)
-DGGML_BUILD_TESTS=$(usex test)
)
# Enable AVX512 if ANY of the avx512 flags are present
if use cpu_flags_x86_avx512f || use cpu_flags_x86_avx512bw; then
mycmakeargs+=( -DGGML_AVX512=ON )
else
mycmakeargs+=( -DGGML_AVX512=OFF )
fi
if use cuda; then
cuda_add_sandbox -w
addpredict "/dev/char/"
cuda_sanitize
mycmakeargs+=(
-DCMAKE_CUDA_FLAGS="${NVCCFLAGS}"
)
fi
if use rocm; then
mycmakeargs+=(
-DGPU_TARGETS=$(get_amdgpu_flags)
)
fi
cmake_src_configure
}
|