Skip to content

Errors Using Sandybridge (AVX) enabled OpenBLAS with UMFPACK #237

@grisuthedragon

Description

@grisuthedragon

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions