aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2021-12-03 23:27:47 +0100
committerLudovic Courtès <ludo@gnu.org>2022-01-01 15:23:53 +0100
commit182b97dac00d57f917e87d7f03e22f56bc7927d0 (patch)
tree0867c96f39ce5309834ba1a38a3ed358ed53a901
parentf5873949f36e7a6b8c045e01c724c1307a9217df (diff)
downloadguix-182b97dac00d57f917e87d7f03e22f56bc7927d0.tar
guix-182b97dac00d57f917e87d7f03e22f56bc7927d0.tar.gz
gnu: Add xtensor-benchmark.
* gnu/packages/algebra.scm (xtensor-benchmark): New variable.
-rw-r--r--gnu/packages/algebra.scm39
1 files changed, 39 insertions, 0 deletions
diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index e92ef4bf3f..c129e0f4e0 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1169,6 +1169,45 @@ xtensor provides:
@end itemize")
(license license:bsd-3)))
+(define-public xtensor-benchmark
+ (package
+ (inherit xtensor)
+ (name "xtensor-benchmark")
+ (arguments
+ `(#:configure-flags (list "-DBUILD_BENCHMARK=ON"
+ "-DDOWNLOAD_GBENCHMARK=OFF")
+ #:tests? #f
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'remove-march=native
+ (lambda _
+ (substitute* "benchmark/CMakeLists.txt"
+ (("-march=native") ""))))
+ (add-after 'unpack 'link-with-googlebenchmark
+ (lambda _
+ (substitute* "benchmark/CMakeLists.txt"
+ (("find_package\\(benchmark.*" all)
+ (string-append
+ all "\n"
+ "set(GBENCHMARK_LIBRARIES benchmark)\n")))))
+ (replace 'build
+ (lambda _
+ (invoke "make" "benchmark_xtensor" "-j"
+ (number->string (parallel-job-count)))))
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Install nothing but the executable.
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "benchmark/benchmark_xtensor"
+ (string-append out "/bin"))))))))
+ (synopsis "Benchmarks of the xtensor library")
+ (native-inputs '())
+ (inputs
+ (modify-inputs (package-native-inputs xtensor)
+ (prepend googlebenchmark xsimd)))
+
+ ;; Mark as tunable to take advantage of SIMD code in xsimd/xtensor.
+ (properties '((tunable? . #t)))))
+
(define-public gap
(package
(name "gap")