blob: f83741574b2bb02d85f19a3d9891958097da3bdb (
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
|
# Maintainer: Emiliano Bovetti <emiliano.bovetti@gmail.com>
# Original Maintainer: Ivan Marquesi Lerner <ivanmlerner@protonmail.com>
pkgname=(lc0 lc0-network-sm lc0-network-md lc0-network-lg lc0-network-xl)
pkgver=0.32.1
pkgrel=3
arch=(x86_64)
url="https://lczero.org/"
license=("GPL-3.0-or-later")
makedepends=(meson eigen blas-openblas)
optdepends=("blas-openblas: Backend for use with CPUs"
"cudnn: Backend for use with nvidia GPUs"
"opencl-driver: Backend for use with OpenCL"
"cuda")
# ref: https://github.com/LeelaChessZero/lc0/wiki/Networks
# ref: https://lczero.org/play/networks/bestnets
_url="https://storage.lczero.org/files/networks-contrib"
_sm="t1-256x10-distilled-swa-2432500.pb.gz"
_md="t3-512x15x16h-distill-swa-2767500.pb.gz"
_lg="BT3-768x15x24h-swa-2790000.pb.gz"
_xl="BT4-1024x15x32h-swa-6147500-policytune-332.pb.gz"
_lczero_common_sha="c47d3683972d9ef293b0c0bc7675f7c2c5ce2274"
source=("https://github.com/LeelaChessZero/lc0/archive/refs/tags/v${pkgver}.tar.gz"
"https://github.com/LeelaChessZero/lczero-common/archive/${_lczero_common_sha}.tar.gz"
"${_sm}::${_url}/${_sm}"
"${_md}::${_url}/${_md}"
"${_lg}::${_url}/${_lg}"
"${_xl}::${_url}/${_xl}")
noextract=("${_sm}" "${_md}" "${_lg}" "${_xl}")
sha256sums=('78b17e8e8d29da30492c86fdac69c519816f4a9d9c3b787dc41a6f9e8d20fde3'
'266fc540242ad74dace306e0567ad90fece7879714b4a352fe726a76b6668f65'
'bc27a6cae8ad36f2b9a80a6ad9dabb0d6fda25b1e7f481a79bc359e14f563406'
'78541c4abc0bc81e8145e1f9a4c35a934ebbefff70f11f33215751d55a886352'
'e3067757d1fc2dfc66947b21d15ace0cedf4c54254fc1de83d77c378a3e8b8e1'
'e6ada9d6c4a769bfab3aa0848d82caeb809aa45f83e6c605fc58a31d21bdd618')
prepare() {
local cudnn=false
cp -r \
"${srcdir}/lczero-common-${_lczero_common_sha}/." \
"${srcdir}/lc0-${pkgver}/libs/lczero-common/"
if pacman -Q cudnn > /dev/null 2>&1; then
cudnn=true
fi
meson setup \
"${srcdir}/lc0-${pkgver}/build/release" \
"${srcdir}/lc0-${pkgver}" \
--reconfigure \
-Dcudnn="${cudnn}" \
-Dcpp_args=-I/usr/include/eigen3 \
--buildtype release \
--prefix /usr
}
build() {
meson compile -C "${srcdir}/lc0-${pkgver}/build/release"
}
check() {
"${srcdir}/lc0-${pkgver}/build/release/chessboard_test"
"${srcdir}/lc0-${pkgver}/build/release/encoder_test"
"${srcdir}/lc0-${pkgver}/build/release/hashcat_test"
"${srcdir}/lc0-${pkgver}/build/release/optionsparser_test"
"${srcdir}/lc0-${pkgver}/build/release/position_test"
"${srcdir}/lc0-${pkgver}/build/release/syzygy_test"
}
package_lc0() {
depends=(openblas zlib lc0-network)
pkgdesc="UCI-compliant chess engine designed to play chess via neural network, \
specifically those of the LeelaChessZero project."
install -Dm755 \
"${srcdir}/lc0-${pkgver}/build/release/lc0" \
"${pkgdir}/usr/bin/lc0"
}
package_lc0-network-sm() {
provides=(lc0-network)
pkgdesc="Small network for lc0 chess engine, requires ~1.6 GB of memory, recommended for CPU usage."
install -Dm644 "${srcdir}/${_sm}" "${pkgdir}/usr/share/lc0/${_sm}"
}
package_lc0-network-md() {
provides=(lc0-network)
pkgdesc="Medium network for lc0 chess engine, requires ~1.8 GB of memory, recommended for CPU usage."
install -Dm644 "${srcdir}/${_md}" "${pkgdir}/usr/share/lc0/${_md}"
}
package_lc0-network-lg() {
provides=(lc0-network)
pkgdesc="Large network for lc0 chess engine, requires ~2.6 GB of memory, recommended for GPU usage."
install -Dm644 "${srcdir}/${_lg}" "${pkgdir}/usr/share/lc0/${_lg}"
}
package_lc0-network-xl() {
provides=(lc0-network)
pkgdesc="Large network for lc0 chess engine, requires ~4 GB of memory, recommended for large GPUs. \
This is currently being sent to engine competitions like the TCEC and CCC."
install -Dm644 "${srcdir}/${_xl}" "${pkgdir}/usr/share/lc0/${_xl}"
}
|