-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
I detect a strange behavior with OpenBLAS 0.2.6 and the current development branch in combination with complex arithmetics in UMFPACK. I provide a minimal working example at http://pastebin.com/098eLzTZ
I compiled OpenBLAS using
make USE_OPENMP=1
then I compiled UMFPACK 5.6.1 / Suitesparse 4.2.1 without any changes in their default setting accept of disabling METIS and compiled my example by:
gcc -o umfpack_openblas_error -I ../Include -I ../../SuiteSparse_config/ -I ../../AMD/Include umfpack_openblas_error.c ../Lib/libumfpack.a ../../CHOLMOD/Lib/libcholmod.a ../../COLAMD/Lib/libcolamd.a ../../AMD/Lib/libamd.a ../../SuiteSparse_config/libsuitesparseconfig.a /path/to/libopenblas.a -lgomp -lgfortran -l
from inside the UMFPACK/Demo folder. I have chosen the vector b such that the solution must contain only 1's in every component, but I get
x [0] = 0.999998 + 1.49251e-08
x [1] = 0.999995 + 4.04891e-08
x [2] = 0.999987 + 9.50786e-08
x [3] = 0.999966 + 2.1776e-07
x [4] = 0.999916 + 4.83075e-07
...
If I recompile OpenBLAS with NO_AVX=1, the error is gone and I get the correct result:
x [0] = 1 + 1.57946e-20
x [1] = 1 + 1.7528e-20
x [2] = 1 + -4.79149e-20
x [3] = 1 + -7.36116e-20
x [4] = 1 + -1.26716e-19
...
So it seems that there must be an error inside the OpenBLAS AVX code and it is reproduceable with other complex data. The real version does not have this problem.
Used Hardware:
- Xeon E3-1245
Software: Ubuntu 12.04, 64bit. GCC 4.6.3