bug-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#63986: Julia is very slow


From: Simon Tournier
Subject: bug#63986: Julia is very slow
Date: Thu, 22 Jun 2023 17:52:15 +0200

Hi,

On Thu, 22 Jun 2023 at 15:26, Cayetano Santos via Bug reports for GNU Guix 
<bug-guix@gnu.org> wrote:
>> Are we following all instructions here ?
>>
>>   
>> https://docs.julialang.org/en/v1.8/devdocs/build/distributing/#Notes-on-BLAS-and-LAPACK

[...]

>   Base.USE_BLAS64
>
> gives "true" when running fast. Guix julia gives "false".

When I try USE_BLAS64=1, then I get:

--8<---------------cut here---------------start------------->8---
┌ Error: No loaded BLAS libraries were built with ILP64 support
└ @ LinearAlgebra.BLAS 
/tmp/guix-build-julia-1.8.3.drv-0/julia-1.8.3/usr/share/julia/stdlib/v1.8/LinearAlgebra/src/blas.jl:155
Quitting.
--8<---------------cut here---------------end--------------->8---

And from the documentation above, it reads:

        [...] while on 64-bit architectures, Julia builds OpenBLAS to
        use 64-bit integers (ILP64). It is essential that all Julia
        functions that call BLAS and LAPACK API routines use integers of
        the correct width.

Well using the patch attached, I get:

    6.884 ms (2 allocations: 7.63 MiB)

compared to the previous

    494.345 ms (2 allocations: 7.63 MiB)

WDYT about this patch?

>From 024c92fac091f59dcdbd3a78eb6ea77bb15b2170 Mon Sep 17 00:00:00 2001
Message-Id: 
<024c92fac091f59dcdbd3a78eb6ea77bb15b2170.1687449033.git.zimon.toutoune@gmail.com>
From: Simon Tournier <zimon.toutoune@gmail.com>
Date: Thu, 22 Jun 2023 17:45:50 +0200
Subject: [PATCH] gnu: julia: Use openblas with ILP64 support.

Fixes <https://bugs.gnu.org/63986>.
Reported by Cayetano Santos <csantosb@inventati.org>.

* gnu/packages/julia.scm (julia)[arguments]<#:make-flags>: Use OpenBLAS with
ILP64 support.
[inputs]: Replace openblas by openblas-ilp64.
---
 gnu/packages/julia.scm | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm
index ba54175822..a034cbf543 100644
--- a/gnu/packages/julia.scm
+++ b/gnu/packages/julia.scm
@@ -481,10 +481,10 @@ (define-public julia
 
          ,@(if (target-aarch64?)
              `("USE_BLAS64=0")
-             '())
+             `("USE_BLAS64=1"))
 
-         "LIBBLAS=-lopenblas"
-         "LIBBLASNAME=libopenblas"
+         "LIBBLAS=-lopenblas_ilp64"
+         "LIBBLASNAME=libopenblas_ilp64"
 
          (string-append "UTF8PROC_INC="
                         (assoc-ref %build-inputs "utf8proc")
@@ -513,7 +513,7 @@ (define-public julia
        ("llvm" ,llvm-julia)
        ("mbedtls-apache" ,mbedtls-apache)
        ("mpfr" ,mpfr)
-       ("openblas" ,openblas)
+       ("openblas" ,openblas-ilp64)
        ("openlibm" ,openlibm)
        ("p7zip" ,p7zip)
        ("pcre2" ,pcre2)

base-commit: 37c2e94cec6cb8b5e0e93e7b6c712c3b187ca5db
-- 
2.38.1

Well, I need to do more tests but I guess that’s the good direction. :-)

Cheers,
simon

reply via email to

[Prev in Thread] Current Thread [Next in Thread]