HaoZeke / OpenBLAS

OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.
http://www.openblas.net
BSD 3-Clause "New" or "Revised" License
0 stars 0 forks source link

BLD: Add Windows build #26

Closed mtsokol closed 2 months ago

mtsokol commented 3 months ago

Windows setup for OpenBLAS meson build.

mattip commented 3 months ago

The first error when linking is

C:/msys64/ucrt64/lib/gcc/x86_64-w64-mingw32/bin/ld.exe: \
    interface/libsgetf2.a.p/lapack_getf2.c.obj:getf2.c:(.text+0xc1): \
    undefined reference to `sgetf2_k'

Can you build this locally and dumpy the contents of interface/libsgetf2.a.p/lapack_getf2.c.obj? Maybe there is some name mangling going on: _sgetf2_k or so.

mattip commented 3 months ago

The conda-forge recipe uses cmake with conda-forge compilers. I use make at MacPython/openblas-libs with the rtools compilers.

HaoZeke commented 2 months ago

interface/libsgetf2.a.p/lapack_getf2.c.obj

Locally (modulo some standard libquadmath issues which can be fixed by something similar to the PR in scipy-openblas) I get (with rtools44):

 objdump -d interface/libsgetf2.a.p/lapack_getf2.c.obj

interface/libsgetf2.a.p/lapack_getf2.c.obj:     file format pe-x86-64

Disassembly of section .text:

0000000000000000 <sgetf2_>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 81 ec e0 00 00 00    sub    $0xe0,%rsp
   b:   48 89 4d 10             mov    %rcx,0x10(%rbp)
   f:   48 89 55 18             mov    %rdx,0x18(%rbp)
  13:   4c 89 45 20             mov    %r8,0x20(%rbp)
  17:   4c 89 4d 28             mov    %r9,0x28(%rbp)
  1b:   48 8b 45 10             mov    0x10(%rbp),%rax
  1f:   8b 00                   mov    (%rax),%eax
  21:   48 98                   cltq
  23:   48 89 45 90             mov    %rax,-0x70(%rbp)
  27:   48 8b 45 18             mov    0x18(%rbp),%rax
  2b:   8b 00                   mov    (%rax),%eax
  2d:   48 98                   cltq
  2f:   48 89 45 98             mov    %rax,-0x68(%rbp)
  33:   48 8b 45 20             mov    0x20(%rbp),%rax
  37:   48 89 85 60 ff ff ff    mov    %rax,-0xa0(%rbp)
  3e:   48 8b 45 28             mov    0x28(%rbp),%rax
  42:   8b 00                   mov    (%rax),%eax
  44:   48 98                   cltq
  46:   48 89 45 a8             mov    %rax,-0x58(%rbp)
  4a:   48 8b 45 30             mov    0x30(%rbp),%rax
  4e:   48 89 85 70 ff ff ff    mov    %rax,-0x90(%rbp)
  55:   c7 85 5c ff ff ff 00    movl   $0x0,-0xa4(%rbp)
  5c:   00 00 00
  5f:   48 8b 55 a8             mov    -0x58(%rbp),%rdx
  63:   48 8b 45 90             mov    -0x70(%rbp),%rax
  67:   b9 01 00 00 00          mov    $0x1,%ecx
  6c:   48 85 c0                test   %rax,%rax
  6f:   48 0f 4e c1             cmovle %rcx,%rax
  73:   48 39 c2                cmp    %rax,%rdx
  76:   7d 0a                   jge    82 <sgetf2_+0x82>
  78:   c7 85 5c ff ff ff 04    movl   $0x4,-0xa4(%rbp)
  7f:   00 00 00
  82:   48 8b 45 98             mov    -0x68(%rbp),%rax
  86:   48 85 c0                test   %rax,%rax
  89:   79 0a                   jns    95 <sgetf2_+0x95>
  8b:   c7 85 5c ff ff ff 02    movl   $0x2,-0xa4(%rbp)
  92:   00 00 00
  95:   48 8b 45 90             mov    -0x70(%rbp),%rax
  99:   48 85 c0                test   %rax,%rax
  9c:   79 0a                   jns    a8 <sgetf2_+0xa8>
  9e:   c7 85 5c ff ff ff 01    movl   $0x1,-0xa4(%rbp)
  a5:   00 00 00
  a8:   8b 85 5c ff ff ff       mov    -0xa4(%rbp),%eax
  ae:   85 c0                   test   %eax,%eax
  b0:   74 39                   je     eb <sgetf2_+0xeb>
  b2:   48 8d 85 5c ff ff ff    lea    -0xa4(%rbp),%rax
  b9:   41 b8 06 00 00 00       mov    $0x6,%r8d
  bf:   48 89 c2                mov    %rax,%rdx
  c2:   48 8d 05 00 00 00 00    lea    0x0(%rip),%rax        # c9 <sgetf2_+0xc9>
  c9:   48 89 c1                mov    %rax,%rcx
  cc:   e8 00 00 00 00          call   d1 <sgetf2_+0xd1>
  d1:   8b 85 5c ff ff ff       mov    -0xa4(%rbp),%eax
  d7:   f7 d8                   neg    %eax
  d9:   89 c2                   mov    %eax,%edx
  db:   48 8b 45 38             mov    0x38(%rbp),%rax
  df:   89 10                   mov    %edx,(%rax)
  e1:   b8 00 00 00 00          mov    $0x0,%eax
  e6:   e9 9d 00 00 00          jmp    188 <sgetf2_+0x188>
  eb:   48 8b 45 38             mov    0x38(%rbp),%rax
  ef:   c7 00 00 00 00 00       movl   $0x0,(%rax)
  f5:   48 8b 45 90             mov    -0x70(%rbp),%rax
  f9:   48 85 c0                test   %rax,%rax
  fc:   74 09                   je     107 <sgetf2_+0x107>
  fe:   48 8b 45 98             mov    -0x68(%rbp),%rax
 102:   48 85 c0                test   %rax,%rax
 105:   75 07                   jne    10e <sgetf2_+0x10e>
 107:   b8 00 00 00 00          mov    $0x0,%eax
 10c:   eb 7a                   jmp    188 <sgetf2_+0x188>
 10e:   b9 01 00 00 00          mov    $0x1,%ecx
 113:   e8 00 00 00 00          call   118 <sgetf2_+0x118>
 118:   48 89 45 f8             mov    %rax,-0x8(%rbp)
 11c:   48 8b 45 f8             mov    -0x8(%rbp),%rax
 120:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 124:   48 8b 45 f0             mov    -0x10(%rbp),%rax
 128:   48 05 00 40 06 00       add    $0x64000,%rax
 12e:   48 89 45 e8             mov    %rax,-0x18(%rbp)
 132:   48 8b 4d f0             mov    -0x10(%rbp),%rcx
 136:   48 8d 85 60 ff ff ff    lea    -0xa0(%rbp),%rax
 13d:   48 c7 44 24 28 00 00    movq   $0x0,0x28(%rsp)
 144:   00 00
 146:   48 8b 55 e8             mov    -0x18(%rbp),%rdx
 14a:   48 89 54 24 20          mov    %rdx,0x20(%rsp)
 14f:   49 89 c9                mov    %rcx,%r9
 152:   41 b8 00 00 00 00       mov    $0x0,%r8d
 158:   ba 00 00 00 00          mov    $0x0,%edx
 15d:   48 89 c1                mov    %rax,%rcx
 160:   e8 00 00 00 00          call   165 <sgetf2_+0x165>
 165:   89 85 5c ff ff ff       mov    %eax,-0xa4(%rbp)
 16b:   8b 95 5c ff ff ff       mov    -0xa4(%rbp),%edx
 171:   48 8b 45 38             mov    0x38(%rbp),%rax
 175:   89 10                   mov    %edx,(%rax)
 177:   48 8b 45 f8             mov    -0x8(%rbp),%rax
 17b:   48 89 c1                mov    %rax,%rcx
 17e:   e8 00 00 00 00          call   183 <sgetf2_+0x183>
 183:   b8 00 00 00 00          mov    $0x0,%eax
 188:   48 81 c4 e0 00 00 00    add    $0xe0,%rsp
 18f:   5d                      pop    %rbp
 190:   c3                      ret
 191:   90                      nop
 192:   90                      nop
 193:   90                      nop
 194:   90                      nop
 195:   90                      nop
 196:   90                      nop
 197:   90                      nop
 198:   90                      nop
 199:   90                      nop
 19a:   90                      nop
 19b:   90                      nop
 19c:   90                      nop
 19d:   90                      nop
 19e:   90                      nop
 19f:   90                      nop

With a similar error:

[5204/5332] Linking target libopenblas.dll
FAILED: libopenblas.dll 
"gcc"  -o libopenblas.dll  "-LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/lib/gcc" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../../../lib" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/lib" "-L/lib/../lib" "-LC:/lib" "-LC:/rtools44/x86_64-w64-mingw32.static.posix/bin/../lib/gcc/x86_64-w64-mingw32.static.posix/13.2.0/../../.." "-L/lib" "-Wl,--allow-shlib-undefined" "-shared" "-Wl,--start-group" "-Wl,--out-implib=libopenblas.dll.a" "-Wl,--whole-archive" "interface\lib_interface.a" "driver/level2\libl2_driver.a" "driver/level3\libl3_driver.a" "driver/others\lib_interface.a" "kernel\lib_kern.a" "-Wl,--no-whole-archive" "-pthread" "-lkernel32" "-luser32" "-lgdi32" "-lwinspool" "-lshell32" "-lole32" "-loleaut32" "-luuid" "-lcomdlg32" "-ladvapi32" "-lgfortran" "-lm" "-Wl,--end-group"
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: interface\libsgetf2.a.p/lapack_getf2.c.obj: in function `sgetf2_':
C:\Users\Rohit Goswami\Git\Github\Quansight\OpenBLAS\bbdir/../interface/lapack/getf2.c:96:(.text+0x161): undefined reference to `sgetf2_k'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: interface\libdgetf2.a.p/lapack_getf2.c.obj: in function `dgetf2_':
C:\Users\Rohit Goswami\Git\Github\Quansight\OpenBLAS\bbdir/../interface/lapack/getf2.c:96:(.text+0x161): undefined reference to `dgetf2_k'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: interface\libcgetf2.a.p/lapack_zgetf2.c.obj: in function `cgetf2_':
C:\Users\Rohit Goswami\Git\Github\Quansight\OpenBLAS\bbdir/../interface/lapack/zgetf2.c:96:(.text+0x161): undefined reference to `cgetf2_k'
C:\rtools44\x86_64-w64-mingw32.static.posix\bin/ld.exe: interface\libzgetf2.a.p/lapack_zgetf2.c.obj: in function `zgetf2_':
C:\Users\Rohit Goswami\Git\Github\Quansight\OpenBLAS\bbdir/../interface/lapack/zgetf2.c:96:(.text+0x161): undefined reference to `zgetf2_k'

Looking into it more now.

EDIT: It seems (from a make build) that the interface/lapack symbols are simply not built, however there are a few more multiply defined symbol issues.

HaoZeke commented 2 months ago

Almost there; except on windows..

2024-09-02T06:01:57.1527682Z [4408/6837] Compiling C object ctest/xccblat2.exe.p/auxiliary.c.obj
2024-09-02T06:01:57.1594996Z In file included from ../ctest/auxiliary.c:6:
2024-09-02T06:01:57.1745198Z ../ctest/cblas_test.h:18:10: warning: "FAILED" redefined
2024-09-02T06:01:57.1786452Z    18 | #define  FAILED         0
2024-09-02T06:01:57.1802074Z       |          ^~~~~~
2024-09-02T06:01:57.2188817Z In file included from C:/msys64/ucrt64/include/winbase.h:2816,
2024-09-02T06:01:57.3912449Z                  from C:/msys64/ucrt64/include/windows.h:70,
2024-09-02T06:01:57.5006305Z                  from ../common.h:119,
2024-09-02T06:01:57.5786359Z                  from ../ctest/auxiliary.c:5:
2024-09-02T06:01:57.6113983Z C:/msys64/ucrt64/include/winerror.h:3382:9: note: this is the location of the previous definition
2024-09-02T06:01:57.6164328Z  3382 | #define FAILED(hr) ((HRESULT)(hr) < 0)
2024-09-02T06:01:57.7196776Z       |         ^~~~~~
2024-09-02T06:01:57.7974385Z [4409/6837] Compiling C object ctest/xccblat2.exe.p/c_c2chke.c.obj
2024-09-02T06:01:57.8133877Z In file included from ../ctest/c_c2chke.c:4:
2024-09-02T06:01:57.9224244Z ../ctest/cblas_test.h:18:10: warning: "FAILED" redefined
2024-09-02T06:01:57.9497031Z    18 | #define  FAILED         0
2024-09-02T06:01:58.0071135Z       |          ^~~~~~
2024-09-02T06:01:58.1220556Z In file included from C:/msys64/ucrt64/include/winbase.h:2816,
2024-09-02T06:01:58.1258550Z                  from C:/msys64/ucrt64/include/windows.h:70,
2024-09-02T06:01:58.1428301Z                  from ../common.h:119,
2024-09-02T06:01:58.2043864Z                  from ../ctest/c_c2chke.c:3:
2024-09-02T06:01:58.2675978Z C:/msys64/ucrt64/include/winerror.h:3382:9: note: this is the location of the previous definition
2024-09-02T06:01:58.2926571Z  3382 | #define FAILED(hr) ((HRESULT)(hr) < 0)
2024-09-02T06:01:58.2973260Z       |         ^~~~~~
2024-09-02T06:01:58.3165666Z ../ctest/c_c2chke.c: In function 'chkxer':
2024-09-02T06:01:58.3305730Z ../ctest/c_c2chke.c:7:5: warning: unused variable 'link_xerbla' [-Wunused-variable]
2024-09-02T06:01:58.3989183Z     7 | int link_xerbla=TRUE;
2024-09-02T06:01:58.3989719Z       |     ^~~~~~~~~~~
2024-09-02T06:01:58.5009895Z [4410/6837] Compiling C object ctest/xccblat2.exe.p/constant.c.obj
2024-09-02T06:01:58.5165426Z In file included from ../ctest/constant.c:1:
2024-09-02T06:01:58.5323643Z ../ctest/cblas_test.h:18:10: warning: "FAILED" redefined
2024-09-02T06:01:58.7044054Z    18 | #define  FAILED         0
2024-09-02T06:01:58.7554989Z       |          ^~~~~~
2024-09-02T06:01:58.9072089Z In file included from C:/msys64/ucrt64/include/winbase.h:2816,
2024-09-02T06:01:58.9541575Z                  from C:/msys64/ucrt64/include/windows.h:70,
2024-09-02T06:01:59.0145499Z                  from ../common.h:119,
2024-09-02T06:01:59.1338990Z                  from ../cblas.h:5,
2024-09-02T06:01:59.1576484Z                  from ../ctest/cblas_test.h:7:
2024-09-02T06:01:59.3319575Z C:/msys64/ucrt64/include/winerror.h:3382:9: note: this is the location of the previous definition
2024-09-02T06:01:59.3622216Z  3382 | #define FAILED(hr) ((HRESULT)(hr) < 0)
2024-09-02T06:01:59.4074691Z       |         ^~~~~~
2024-09-02T06:01:59.4337577Z [4411/6837] Compiling C object ctest/xccblat2.exe.p/c_cblas2.c.obj
2024-09-02T06:01:59.4362078Z In file included from ../ctest/c_cblas2.c:9:
2024-09-02T06:01:59.4397788Z ../ctest/cblas_test.h:18:10: warning: "FAILED" redefined
2024-09-02T06:01:59.4424548Z    18 | #define  FAILED         0
2024-09-02T06:01:59.4440455Z       |          ^~~~~~
2024-09-02T06:01:59.4442290Z In file included from C:/msys64/ucrt64/include/winbase.h:2816,
2024-09-02T06:01:59.4650515Z                  from C:/msys64/ucrt64/include/windows.h:70,
2024-09-02T06:01:59.4928448Z                  from ../common.h:119,
2024-09-02T06:01:59.4946782Z                  from ../ctest/c_cblas2.c:8:
2024-09-02T06:01:59.4950069Z C:/msys64/ucrt64/include/winerror.h:3382:9: note: this is the location of the previous definition
2024-09-02T06:01:59.4958061Z  3382 | #define FAILED(hr) ((HRESULT)(hr) < 0)
2024-09-02T06:01:59.4958735Z       |         ^~~~~~
2024-09-02T06:01:59.4959418Z [4412/6837] Compiling C object ctest/xccblat2.exe.p/c_xerbla.c.obj
2024-09-02T06:01:59.4960285Z In file included from ../ctest/c_xerbla.c:6:
2024-09-02T06:01:59.4961032Z ../ctest/cblas_test.h:18:10: warning: "FAILED" redefined
2024-09-02T06:01:59.4961775Z    18 | #define  FAILED         0
2024-09-02T06:01:59.4962306Z       |          ^~~~~~
2024-09-02T06:01:59.4963037Z In file included from C:/msys64/ucrt64/include/winbase.h:2816,
2024-09-02T06:01:59.4963942Z                  from C:/msys64/ucrt64/include/windows.h:70,
2024-09-02T06:01:59.4964613Z                  from ../common.h:119,
2024-09-02T06:01:59.4965210Z                  from ../ctest/c_xerbla.c:5:
2024-09-02T06:01:59.4966204Z C:/msys64/ucrt64/include/winerror.h:3382:9: note: this is the location of the previous definition
2024-09-02T06:01:59.4967302Z  3382 | #define FAILED(hr) ((HRESULT)(hr) < 0)
2024-09-02T06:01:59.4967930Z       |         ^~~~~~
2024-09-02T06:01:59.4968623Z [4413/6837] Compiling Fortran object ctest/xccblat2.exe.p/c_cblat2.f.obj
2024-09-02T06:01:59.4969472Z ../ctest/c_cblat2.f:1835:55:

Which (might) explain the test timeouts downstream:

2024-09-02T06:03:43.6836198Z xccblat2 time out (After 30 seconds)
2024-09-02T06:03:43.6836945Z 33/42 xccblat2                           TIMEOUT        30.56s   exit status 1
2024-09-02T06:03:43.6837973Z ------------------------------------- 8< -------------------------------------
2024-09-02T06:03:43.6838697Z  TESTS OF THE COMPLEX          LEVEL 2 BLAS
2024-09-02T06:03:43.6839139Z 
2024-09-02T06:03:43.6839146Z 
2024-09-02T06:03:43.6839152Z 
2024-09-02T06:03:43.6839651Z  THE FOLLOWING PARAMETER VALUES WILL BE USED:
2024-09-02T06:03:43.6840089Z 
2024-09-02T06:03:43.6840325Z    FOR N                   0     1     2     3     5     9    63
2024-09-02T06:03:43.6841072Z 
2024-09-02T06:03:43.6841253Z    FOR K                   0     1     2     4
2024-09-02T06:03:43.6841825Z 
2024-09-02T06:03:43.6842137Z    FOR INCX AND INCY       1     2    -1    -2
2024-09-02T06:03:43.6842549Z 
2024-09-02T06:03:43.6842904Z    FOR ALPHA          ( 0.0, 0.0)  ( 1.0, 0.0)  ( 0.7,-0.9)  
2024-09-02T06:03:43.6843361Z 
2024-09-02T06:03:43.6843706Z    FOR BETA           ( 0.0, 0.0)  ( 1.0, 0.0)  ( 1.3,-1.1)  
2024-09-02T06:03:43.6844158Z 
2024-09-02T06:03:43.6844163Z 
2024-09-02T06:03:43.6844169Z 
2024-09-02T06:03:43.6844565Z  ROUTINES PASS COMPUTATIONAL TESTS IF TEST RATIO IS LESS THAN   16.00
2024-09-02T06:03:43.6845206Z 
2024-09-02T06:03:43.6845213Z 
2024-09-02T06:03:43.6845220Z 
2024-09-02T06:03:43.6845639Z  COLUMN-MAJOR AND ROW-MAJOR DATA LAYOUTS ARE TESTED
2024-09-02T06:03:43.6846161Z 
2024-09-02T06:03:43.6846167Z 
2024-09-02T06:03:43.6846174Z 
2024-09-02T06:03:43.6846515Z  RELATIVE MACHINE PRECISION IS TAKEN TO BE  1.2E-07
2024-09-02T06:03:43.6847039Z 
2024-09-02T06:03:43.6847052Z 
2024-09-02T06:03:43.6847059Z 
2024-09-02T06:03:43.6847434Z  cblas_cgemv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6847877Z 
2024-09-02T06:03:43.6847884Z 
2024-09-02T06:03:43.6848192Z  cblas_cgemv  PASSED THE COMPUTATIONAL TESTS (  4324 CALLS)
2024-09-02T06:03:43.6848745Z 
2024-09-02T06:03:43.6849056Z  cblas_cgemv  PASSED THE COMPUTATIONAL TESTS (  4324 CALLS)
2024-09-02T06:03:43.6849614Z 
2024-09-02T06:03:43.6849621Z 
2024-09-02T06:03:43.6849628Z 
2024-09-02T06:03:43.6849966Z  cblas_cgbmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6850420Z 
2024-09-02T06:03:43.6850427Z 
2024-09-02T06:03:43.6850776Z  cblas_cgbmv  PASSED THE COMPUTATIONAL TESTS ( 17284 CALLS)
2024-09-02T06:03:43.6851355Z 
2024-09-02T06:03:43.6851672Z  cblas_cgbmv  PASSED THE COMPUTATIONAL TESTS ( 17284 CALLS)
2024-09-02T06:03:43.6852242Z 
2024-09-02T06:03:43.6852252Z 
2024-09-02T06:03:43.6852259Z 
2024-09-02T06:03:43.6852602Z  cblas_chemv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6853037Z 
2024-09-02T06:03:43.6853044Z 
2024-09-02T06:03:43.6853370Z  cblas_chemv  PASSED THE COMPUTATIONAL TESTS (  1729 CALLS)
2024-09-02T06:03:43.6853901Z 
2024-09-02T06:03:43.6854227Z  cblas_chemv  PASSED THE COMPUTATIONAL TESTS (  1729 CALLS)
2024-09-02T06:03:43.6854793Z 
2024-09-02T06:03:43.6854800Z 
2024-09-02T06:03:43.6854807Z 
2024-09-02T06:03:43.6855188Z  cblas_chbmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6856160Z 
2024-09-02T06:03:43.6856170Z 
2024-09-02T06:03:43.6856936Z  cblas_chbmv  PASSED THE COMPUTATIONAL TESTS (  6913 CALLS)
2024-09-02T06:03:43.6857550Z 
2024-09-02T06:03:43.6857881Z  cblas_chbmv  PASSED THE COMPUTATIONAL TESTS (  6913 CALLS)
2024-09-02T06:03:43.6858852Z 
2024-09-02T06:03:43.6858860Z 
2024-09-02T06:03:43.6858867Z 
2024-09-02T06:03:43.6859276Z  cblas_chpmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6859755Z 
2024-09-02T06:03:43.6859762Z 
2024-09-02T06:03:43.6860080Z  cblas_chpmv  PASSED THE COMPUTATIONAL TESTS (  1729 CALLS)
2024-09-02T06:03:43.6860661Z 
2024-09-02T06:03:43.6861028Z  cblas_chpmv  PASSED THE COMPUTATIONAL TESTS (  1729 CALLS)
2024-09-02T06:03:43.6861546Z 
2024-09-02T06:03:43.6861552Z 
2024-09-02T06:03:43.6861568Z 
2024-09-02T06:03:43.6862178Z  cblas_ctrmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6862621Z 
2024-09-02T06:03:43.6862627Z 
2024-09-02T06:03:43.6863121Z  cblas_ctrmv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6863668Z 
2024-09-02T06:03:43.6864050Z  cblas_ctrmv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6864563Z 
2024-09-02T06:03:43.6864570Z 
2024-09-02T06:03:43.6864576Z 
2024-09-02T06:03:43.6864945Z  cblas_ctbmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6865389Z 
2024-09-02T06:03:43.6865395Z 
2024-09-02T06:03:43.6865716Z  cblas_ctbmv  PASSED THE COMPUTATIONAL TESTS (  1153 CALLS)
2024-09-02T06:03:43.6866268Z 
2024-09-02T06:03:43.6866598Z  cblas_ctbmv  PASSED THE COMPUTATIONAL TESTS (  1153 CALLS)
2024-09-02T06:03:43.6867142Z 
2024-09-02T06:03:43.6867149Z 
2024-09-02T06:03:43.6867355Z 
2024-09-02T06:03:43.6867738Z  cblas_ctpmv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6868179Z 
2024-09-02T06:03:43.6868186Z 
2024-09-02T06:03:43.6868514Z  cblas_ctpmv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6869064Z 
2024-09-02T06:03:43.6869367Z  cblas_ctpmv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6869951Z 
2024-09-02T06:03:43.6869957Z 
2024-09-02T06:03:43.6869974Z 
2024-09-02T06:03:43.6870394Z  cblas_ctrsv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6870842Z 
2024-09-02T06:03:43.6870849Z 
2024-09-02T06:03:43.6871168Z  cblas_ctrsv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6871698Z 
2024-09-02T06:03:43.6871997Z  cblas_ctrsv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6872535Z 
2024-09-02T06:03:43.6872542Z 
2024-09-02T06:03:43.6872548Z 
2024-09-02T06:03:43.6872911Z  cblas_ctbsv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6873364Z 
2024-09-02T06:03:43.6873383Z 
2024-09-02T06:03:43.6873719Z  cblas_ctbsv  PASSED THE COMPUTATIONAL TESTS (  1153 CALLS)
2024-09-02T06:03:43.6874284Z 
2024-09-02T06:03:43.6874607Z  cblas_ctbsv  PASSED THE COMPUTATIONAL TESTS (  1153 CALLS)
2024-09-02T06:03:43.6875156Z 
2024-09-02T06:03:43.6875163Z 
2024-09-02T06:03:43.6875169Z 
2024-09-02T06:03:43.6875523Z  cblas_ctpsv  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6875961Z 
2024-09-02T06:03:43.6875968Z 
2024-09-02T06:03:43.6876271Z  cblas_ctpsv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6876802Z 
2024-09-02T06:03:43.6877936Z  cblas_ctpsv  PASSED THE COMPUTATIONAL TESTS (   289 CALLS)
2024-09-02T06:03:43.6878524Z 
2024-09-02T06:03:43.6878542Z 
2024-09-02T06:03:43.6878548Z 
2024-09-02T06:03:43.6878944Z  cblas_cgeru  PASSED THE TESTS OF ERROR-EXITS
2024-09-02T06:03:43.6879375Z 
2024-09-02T06:03:43.6879381Z 
2024-09-02T06:03:43.6879704Z  cblas_cgerc  PASSED THE COMPUTATIONAL TESTS (   484 CALLS)
2024-09-02T06:03:43.6880499Z 
2024-09-02T06:03:43.6880938Z ------------------------------------------------------------------------------
2024-09-02T06:03:43.6881448Z 
HaoZeke commented 2 months ago

I think this should be ready to go as is now (feel free to merge after CI passes) unless there are other concerns.

HaoZeke commented 2 months ago

Thanks @mtsokol aed @mattip