Closed
Description
dtbmv
in libopenblas_haswellp-r0.2.18.dylib
on macOS Sierra (10.12.3) may fail on large scale as the following code.
// clang -L/usr/local/opt/openblas/lib -I/usr/local/opt/openblas/include -lopenblas openblas_dtbmv.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cblas.h>
int main(int argc, char **argv)
{
// if n <= 2097136 then dtbmv work almost surely...
int n = 2097136 + 1;
double *p = calloc(n, sizeof(double));
p[0] = 4.0;
p[1] = 2.0;
p[2] = 1.0;
printf("p@%p = (%g, %g, %g, %g, ...)\n", p, p[0], p[1], p[2], p[3]);
cblas_dtbmv(CblasColMajor, CblasUpper, CblasNoTrans, CblasNonUnit, n, 0, p, 1, p, 1);
printf("p@%p = (%g, %g, %g, %g, ...)\n", p, p[0], p[1], p[2], p[3]);
free(p);
return 0;
}
I have only MacBook running macOS Sierra, so I have no memory debugger like valgrind
.
However, I quote the console output running with lldb
.
$ lldb ./a.out
(lldb) target create "./a.out"
Current executable set to './a.out' (x86_64).
(lldb) r
Process 48585 launched: './a.out' (x86_64)
p@0x104800000 = (4, 2, 1, 0, ...)
Process 48585 stopped
* thread #2: tid = 0x125f57, 0x00007fffe2027c13 libsystem_platform.dylib`_platform_bzero$VARIANT$Haswell + 115, stop reason = EXC_BAD_ACCESS (code=1, address=0x107800000)
frame #0: 0x00007fffe2027c13 libsystem_platform.dylib`_platform_bzero$VARIANT$Haswell + 115
libsystem_platform.dylib`_platform_bzero$VARIANT$Haswell:
-> 0x7fffe2027c13 <+115>: movq %rsi, (%rdi,%rdx)
0x7fffe2027c17 <+119>: subq $0x8, %rdx
0x7fffe2027c1b <+123>: jae 0x7fffe2027c13 ; <+115>
0x7fffe2027c1d <+125>: addq $0x8, %rdx
(lldb) thread backtrace all
thread #1: tid = 0x125f42, 0x000000010047e000 libopenblas_haswellp-r0.2.18.dylib`dscal_kernel_8_zero + 65412, queue = 'com.apple.main-thread'
frame #0: 0x000000010047e000 libopenblas_haswellp-r0.2.18.dylib`dscal_kernel_8_zero + 65412
frame #1: 0x000000010045e056 libopenblas_haswellp-r0.2.18.dylib`dscal_k + 86
frame #2: 0x00000001000f2782 libopenblas_haswellp-r0.2.18.dylib`trmv_kernel + 210
frame #3: 0x000000010036375d libopenblas_haswellp-r0.2.18.dylib`exec_blas + 110
frame #4: 0x00000001000f2613 libopenblas_haswellp-r0.2.18.dylib`dtbmv_thread_NUN + 828
frame #5: 0x00000001000ac43b libopenblas_haswellp-r0.2.18.dylib`cblas_dtbmv + 457
frame #6: 0x0000000100000edd a.out`main + 237
frame #7: 0x00007fffe1e16255 libdyld.dylib`start + 1
* thread #2: tid = 0x125f57, 0x00007fffe2027c13 libsystem_platform.dylib`_platform_bzero$VARIANT$Haswell + 115, stop reason = EXC_BAD_ACCESS (code=1, address=0x107800000)
* frame #0: 0x00007fffe2027c13 libsystem_platform.dylib`_platform_bzero$VARIANT$Haswell + 115
frame #1: 0x000000010045e19a libopenblas_haswellp-r0.2.18.dylib`dscal_k + 410
frame #2: 0x00000001000f2782 libopenblas_haswellp-r0.2.18.dylib`trmv_kernel + 210
frame #3: 0x000000010036352d libopenblas_haswellp-r0.2.18.dylib`blas_thread_server + 326
frame #4: 0x00007fffe202daab libsystem_pthread.dylib`_pthread_body + 180
frame #5: 0x00007fffe202d9f7 libsystem_pthread.dylib`_pthread_start + 286
frame #6: 0x00007fffe202d1fd libsystem_pthread.dylib`thread_start + 13
(lldb)
This library is installed with brew install openblas --build-from-source
.
Metadata
Metadata
Assignees
Labels
No labels