summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorNicolas Graves <ngraves@ngraves.fr>2025-08-10 00:31:02 +0200
committerSharlatan Hellseher <sharlatanus@gmail.com>2025-08-20 13:05:51 +0100
commit32795f39a4cfc314dbc1bb26449ef34583a5c637 (patch)
treec84bc9e81e6ca19af3920689f3f8c825218d3ab9 /gnu
parent1b7c7ed8ef662760b500fb65ec5e838977977518 (diff)
gnu: xnnpack: Improve package.
This rework was done for updating xxnpack-for-r-torch to its next version. The refactor is done to avoid copying the huge snippet and generate-files phase for it. * gnu/packages/machine-learning.scm (xnnpack) [source]<snippet>: Guard against potentially non-existing files in another source. Improve generated files removal. [configure-flags]: Rewrite using gepxs. [arguments]<#:phases>: Handle multilines and guard against potentially non-existing files in phase 'generate-files. Change-Id: If97cadf5ed0b34a68d99fb73bd3ea99411820aaa Reviewed-by: David Elsing <david.elsing@posteo.net> @dtelsing Signed-off-by: Sharlatan Hellseher <sharlatanus@gmail.com>
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/machine-learning.scm66
1 files changed, 35 insertions, 31 deletions
diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm
index 73155e62fdf..015451f4a7f 100644
--- a/gnu/packages/machine-learning.scm
+++ b/gnu/packages/machine-learning.scm
@@ -4514,7 +4514,8 @@ on quantized 8-bit tensors.")
(srfi srfi-26)))
(snippet
'(begin
- (delete-file-recursively "bench/models")
+ (when (directory-exists? "bench/models")
+ (delete-file-recursively "bench/models"))
;; Remove autogenerated files, which contain the string
;; "Auto-generated file"
(for-each
@@ -4528,30 +4529,26 @@ on quantized 8-bit tensors.")
(get-string-all port)
"Auto-generated file")))
(delete-file path))))
- (scandir dir (negate (cut member <> '("." ".." "simd"))))))
+ (or (scandir dir (negate (cut member <> '("." ".." "simd"))))
+ '())))
(cons*
- "test" "bench" "src/enums" "src/xnnpack"
- "gen" "cmake/gen"
- (filter
- identity
- (map
- (lambda (dir)
- (let ((path
- (string-append "src/" dir "/gen")))
- (and (file-exists? path) path)))
- (scandir "src" (negate (cut member <> '("." ".."))))))))))))
+ "test" "bench" "src/enums" "src/xnnpack" "gen" "cmake/gen"
+ (filter file-exists?
+ (map (cut string-append "src/" <> "/gen")
+ (scandir "src")))))))))
(build-system cmake-build-system)
(arguments
(list
#:build-type "Release" ;; Debugging symbols require a lot of disk space
- #:configure-flags ''("-DXNNPACK_USE_SYSTEM_LIBS=YES"
- "-DBUILD_SHARED_LIBS=ON"
- "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
- "-DXNNPACK_LIBRARY_TYPE=shared"
- "-DXNNPACK_BUILD_BENCHMARKS=FALSE"
- ;; Tests fail to build with -DXNNPACK_LIBRARY_TYPE=shared:
- ;; https://github.com/google/XNNPACK/issues/6285
- "-DXNNPACK_BUILD_TESTS=OFF")
+ #:configure-flags
+ #~(list "-DXNNPACK_USE_SYSTEM_LIBS=YES"
+ "-DBUILD_SHARED_LIBS=ON"
+ "-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
+ "-DXNNPACK_LIBRARY_TYPE=shared"
+ "-DXNNPACK_BUILD_BENCHMARKS=FALSE"
+ ;; Tests fail to build with -DXNNPACK_LIBRARY_TYPE=shared:
+ ;; https://github.com/google/XNNPACK/issues/6285
+ "-DXNNPACK_BUILD_TESTS=OFF")
#:tests? #f
#:modules '((ice-9 ftw)
(guix build cmake-build-system)
@@ -4577,14 +4574,18 @@ on quantized 8-bit tensors.")
(string-suffix? ".sh" name))
(let ((file (string-append "scripts/" name)))
(substitute* file
- ;; Turn the commands into targets and remove trailing
- ;; '&' characters
- (("(.*(\\.sh|\\.py|-o |--output)[^&]*)&?[[:space:]]*$" _ command)
+ ;; Turn the commands into targets. Avoid comments and
+ ;; lines starting with - (rest of multilines).
+ (("\
+^[[:space:]]*([^ #-].*/.*(\\.sh|\\.py|-o |--output)[^&]*).*$"
+ _ command)
(begin
(set! counter (+ counter 1))
- (string-append "target" (number->string counter)
+ (string-append "\ntarget" (number->string counter)
":" target-deps
- "\n\t" command "\n")))
+ "\n\t" command)))
+ ;; Remove trailing '&' characters.
+ (("&?[[:space:]]*$") "\n")
(("[[:space:]]*wait[[:space:]]*") "")
;; The commands after this line depend on the
;; previous commands in the file.
@@ -4610,12 +4611,15 @@ on quantized 8-bit tensors.")
(invoke "python3" "tools/generate-lut-norm-test.py"
"--spec" "test/u8-lut32norm.yaml"
"--output" "test/u8-lut32norm.cc")
- (invoke "python3" "tools/generate-gemm-test.py"
- "--spec" "test/qd8-f16-qb4w-gemm-minmax.yaml"
- "--output-test" "test/qd8-f16-qb4w-gemm-minmax.cc")
- (invoke "python3" "tools/generate-gemm-test.py"
- "--spec" "test/qd8-f32-qb4w-gemm-minmax.yaml"
- "--output-test" "test/qd8-f32-qb4w-gemm-minmax.cc"))))))
+ ;; Check existence to avoid doubling the phase for r-torch.
+ (when (file-exists? "test/qd8-f16-qb4w-gemm-minmax.yaml")
+ (invoke "python3" "tools/generate-gemm-test.py"
+ "--spec" "test/qd8-f16-qb4w-gemm-minmax.yaml"
+ "--output-test" "test/qd8-f16-qb4w-gemm-minmax.cc"))
+ (when (file-exists? "test/qd8-f32-qb4w-gemm-minmax.yaml")
+ (invoke "python3" "tools/generate-gemm-test.py"
+ "--spec" "test/qd8-f32-qb4w-gemm-minmax.yaml"
+ "--output-test" "test/qd8-f32-qb4w-gemm-minmax.cc")))))))
(inputs
(list clog
cpuinfo