1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-05-22 00:55:56 +02:00

gnu: Add onednn.

* gnu/packages/oneapi.scm (onednn): New variable.

Change-Id: I10e5446aefea2978134495d25b9df504114a7530
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Cayetano Santos
2025-09-05 10:19:16 +02:00
committed by Ludovic Courtès
parent 7fae1a6950
commit 496ee0c006
+77
View File
@@ -18,6 +18,9 @@
(define-module (gnu packages oneapi)
#:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages cpp)
#:use-module (gnu packages llvm)
#:use-module (gnu packages python)
#:use-module (gnu packages swig)
#:use-module (guix build-system cmake)
@@ -27,6 +30,80 @@
#:use-module (guix packages)
#:use-module (guix utils))
;;; Updates and replaces oneapi-dnnl in (gnu packages machine-learning)
(define-public onednn
;; See doc/build/build.md.
(package
(name "onednn")
(version "3.9.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/uxlfoundation/oneDNN/")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0ybq8zb4dcd2g139gdq4bpv20v9jgws5d7ln3x4s0ydrmbgm2qwj"))
(modules '((guix build utils)
(ice-9 rdelim)))
;; Copyright date used by code generation script
(snippet
'(for-each
(lambda (file)
(with-atomic-file-replacement
file
(lambda (in out)
(let loop ((line (read-line in 'concat)))
(if (string-contains line "Copyright")
(display line out)
(loop (read-line in 'concat)))))))
'("include/oneapi/dnnl/dnnl_debug.h"
"src/common/dnnl_debug_autogenerated.cpp"
"tests/benchdnn/dnnl_debug_autogenerated.cpp"
"tests/benchdnn/dnnl_debug.hpp")))))
(build-system cmake-build-system)
(arguments
(list
#:configure-flags ;see doc/build/build_options.md
#~(list
#$@(if (target-riscv64?)
(list "-DDNNL_CPU_RUNTIME=SEQ")
;; Default; also tbb and sycl.
(list "-DDNNL_CPU_RUNTIME=OMP"))
"-DDNNL_EXPERIMENTAL_UKERNEL=ON" ;Used in PyTorch
"-DONEDNN_BUILD_GRAPH=OFF") ;See scripts/README.md
#:phases
#~(modify-phases %standard-phases
;; This test times out after 3600 seconds.
(add-after 'unpack 'disable-matmul-testing
(lambda _
(substitute* "tests/benchdnn/benchdnn.cpp"
(("matmul::bench.*") ";\n"))))
;; See scripts/README.md.
(add-after 'configure 'codegen
(lambda _
(with-directory-excursion "../source"
;; Generate types.xml.
(invoke "castxml" "--castxml-cc-gnu-c" "clang"
"--castxml-output=1" "-Iinclude" "-I../build/include"
"include/oneapi/dnnl/dnnl_types.h" "-o" "types.xml")
;; Run generate_dnnl_debug.py.
(invoke
"python3" "scripts/generate_dnnl_debug.py" "types.xml")
;; Generating format tags.
;; Modifies include/oneapi/dnnl/dnnl.hpp
(invoke "python3" "scripts/generate_format_tags.py")))))))
(native-inputs
(list castxml clang-17 googletest python-minimal-wrapper))
(home-page "https://uxlfoundation.github.io/oneDNN/")
(synopsis "Deep neural network library")
(description
"@acronym{OneDNN, OneAPI Deep Neural Network Library} is a cross-platform
performance library of basic building blocks for deep learning applications.")
(supported-systems %64bit-supported-systems)
(license license:asl2.0)))
;;; Updates and replaces tbb in (gnu packages tbb)
(define-public onetbb
(package