aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-12-03 23:27:09 +0100
committerLudovic Courtès <ludo@gnu.org>2022-01-01 15:23:25 +0100
commit6542e5713a38229f277021a0884cdb5bc7165575 (patch)
tree87f83511cf6d997fed3a01def28cfbc264f85970 /gnu
parent6756c64a8f1a22f74ea3bcb8bfb00f229ad6f6c5 (diff)
downloadguix-6542e5713a38229f277021a0884cdb5bc7165575.tar.gz
guix-6542e5713a38229f277021a0884cdb5bc7165575.zip
gnu: Add eigen-benchmarks.
* gnu/packages/algebra.scm (eigen-benchmarks): New variable.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/algebra.scm38
1 files changed, 38 insertions, 0 deletions
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index 79785bd463..e92ef4bf3f 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1044,6 +1044,44 @@ features, and more.")
;; See 'COPYING.README' for details.
(license license:mpl2.0)))
+(define-public eigen-benchmarks
+ (package
+ (inherit eigen)
+ (name "eigen-benchmarks")
+ (arguments
+ '(#:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (define (compile file)
+ (format #t "compiling '~a'...~%" file)
+ (let ((target
+ (string-append bin "/"
+ (basename file ".cpp"))))
+ (invoke "c++" "-o" target file
+ "-I" ".." "-O2" "-g"
+ "-lopenblas" "-Wl,--as-needed")))
+
+ (mkdir-p bin)
+ (with-directory-excursion "bench"
+ ;; There are more benchmarks, of varying quality.
+ ;; Here we pick some that appear to be useful.
+ (for-each compile
+ '("benchBlasGemm.cpp"
+ "benchCholesky.cpp"
+ ;;"benchEigenSolver.cpp"
+ "benchFFT.cpp"
+ "benchmark-blocking-sizes.cpp"))))))
+ (delete 'install))))
+ (inputs (list boost openblas))
+
+ ;; Mark as tunable to take advantage of SIMD code in Eigen.
+ (properties '((tunable? . #t)))
+
+ (synopsis "Micro-benchmarks of the Eigen linear algebra library")))
+
(define-public eigen-for-tensorflow
(let ((changeset "fd6845384b86")
(revision "1"))