diff options
| author | Nicolas Graves <ngraves@ngraves.fr> | 2025-08-10 00:31:02 +0200 |
|---|---|---|
| committer | Sharlatan Hellseher <sharlatanus@gmail.com> | 2025-08-20 13:05:51 +0100 |
| commit | 32795f39a4cfc314dbc1bb26449ef34583a5c637 (patch) | |
| tree | c84bc9e81e6ca19af3920689f3f8c825218d3ab9 /gnu | |
| parent | 1b7c7ed8ef662760b500fb65ec5e838977977518 (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.scm | 66 |
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 |
