OpenBLAS: symmetric matrix inversion giving incorrect results

For the latest version of OpenBlas, calling potrf then potri is giving incorrect results for the particular example below.

When I run it with 3.6, I get

> g++ cholesky_test.cc /3rd_party/OpenBLAS-0.3.6/libopenblas.a -lpthread
> ./a.out
-0.0915173

If I run with the version installed by my package manager, I get the correct result

> g++ cholesky_test.cc -lopenblas
>  ./a.out
2.21785e-06
> dpkg -s libopenblas-dev
Package: libopenblas-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 54162
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Multi-Arch: same
Source: openblas
Version: 0.3.5+ds-2
Provides: libblas.so, liblapack.so
Depends: libopenblas-base (= 0.3.5+ds-2)
Breaks: libatlas-base-dev (<< 3.10.3-4~), libblas-dev (<< 3.7.1-2~), liblapack-dev (<< 3.7.1-2~)
Description: Optimized BLAS (linear algebra) library (development files)

Which is also given by atlas

> g++ cholesky_test.cc -llapack -lf77blas -lcblas -latlas
>./a.out
2.21785e-06
// problem example
#include <cassert>
#include <iostream>

const int n = 26;

extern double E[n][n];

extern "C" void dpotrf_(const char* uplo, const int* n, double* A, const int* lda, int* info);
extern "C" void dpotri_(const char* uplo, const int* n, double* A, const int* lda, int* info);

int main() {
  char uplo = 'L';
  int info;
  dpotrf_(&uplo, &n, &E[0][0], &n, &info);
  assert(info == 0);
  dpotri_(&uplo, &n, &E[0][0], &n, &info);
  assert(info == 0);
  std::cout << *(&E[0][0] + 16) << "\n"; // entry 16, 0 for column major ordering
}

















// data
double E[n][n] = {
    {144.28239738429019,      -319.19900341084332,     -1296.1145812550405,
     -7.6770040123669969e-05, -110.18491233020869,     -6.5865467083733162e-06,
     2.1799515628353019,      -1.9307211961156157,     1.7043827929802871e-05,
     3.2194279252331291e-05,  -39.651186487712707,     -0.00071684978621199024,
     -8.6241866669235208,     -7.8813352941864478e-06, -9.1397862810662911,
     16.145217777093777,      0.00021968988764172484,  -7.993955233582102e-06,
     -0.00021501001462387393, 9.2737755782662799,      -10.770918183005119,
     -21.555103616533106,     -25.50946140559132,      -20.585943317869393,
     -25.336142393442419,     -3033.5911821111858},
    {-319.19900341084332,     753.47972628605828,      3020.3228874916285,
     0.00018917409321302976,  240.87310385517344,      2.2182449161908461e-05,
     -7.6665716054256929,     11.958552047022275,      -5.543064921378486e-05,
     -8.2709030061726732e-05, 83.507300327532917,      0.0014870699777732096,
     20.590812608552817,      1.8181353278144878e-05,  22.757611779484584,
     -37.103587110257493,     -0.00054757069589520197, 1.7785001787575848e-05,
     0.00049732328898703876,  -23.0346712296897,       27.324038137627131,
     47.753807739018512,      79.061103733547029,      56.336768670027197,
     73.125635519990553,      7417.5896339988767},
    {-1296.1145812550405,     3020.3228874916285,     12507.476805394395,
     0.00080766966235834906,  1000.3984735631913,     9.6900398493091048e-05,
     -31.2383412536586,       42.323074025121159,     -0.00023740730761843157,
     -0.00045655705079795993, 385.19468767034414,     0.005679267990102212,
     69.294784475201567,      7.4578342295604285e-05, 89.789916446817415,
     -142.39025505036423,     -0.0024393396211984351, 8.1870085433869899e-05,
     0.0022175508680669135,   -96.233276550937347,    114.8691602823897,
     211.12882441268206,      355.58160033482602,     254.33203967237159,
     319.62147542109619,      30937.363836040866},
    {-7.6770040123669969e-05, 0.00018917409321302976,  0.00080766966235834906,
     1.0000000000605893,      6.0870767787293126e-05,  9.1082218247670291e-12,
     -3.0860367894532966e-06, 3.1724281255884221e-06,  -2.3169640163074985e-11,
     -3.7195946390194495e-11, 2.6577415798249472e-05,  2.4349224699962758e-10,
     3.6872375970095972e-06,  5.1156404783270122e-12,  5.6914491667378166e-06,
     -8.0878283078119414e-06, -1.8635685971638038e-10, 5.6124028735158997e-12,
     1.5579734124741342e-10,  -6.7243752779478904e-06, 8.6081836048189634e-06,
     1.4827290007742856e-05,  3.3531700224818024e-05,  2.2305165158482174e-05,
     2.9410296353478671e-05,  0.0022050054547991917},
    {-110.18491233020869,
     240.87310385517344,
     1000.3984735631913,
     6.0870767787293126e-05,
     109.09776759877555,
     0,
     0,
     0,
     -1.3172013181357207e-05,
     0,
     38.498080674535522,
     0.00050108966088901043,
     5.6496759442421283,
     6.4526967145252e-06,
     6.468730391703188,
     -10.955482995811055,
     -0.00017085814393585734,
     6.2338972746055648e-06,
     0.00016910659118233662,
     -7.488878494739116,
     8.9001850182949518,
     19.885323774973077,
     12.78088066100387,
     16.396704901927158,
     30.494755632674455,
     2363.4766308514409},
    {-6.5865467083733162e-06,
     2.2182449161908461e-05,
     9.6900398493091048e-05,
     9.1082218247670291e-12,
     0,
     1.0000000000068994,
     0,
     0,
     -5.4806369842643657e-12,
     -2.5383586606814818e-11,
     9.8955098916678016e-07,
     0,
     6.3965393389262975e-07,
     6.1368015048184276e-13,
     8.5445142288574447e-07,
     -1.25748379952674e-06,
     -3.2498738471802017e-11,
     8.8930702622906122e-13,
     2.9241434146339037e-11,
     -7.9136182813932271e-07,
     1.1542461426980547e-06,
     1.6445067080162328e-06,
     7.8140480339369592e-06,
     2.3990762256917956e-06,
     1.4500934301964703e-06,
     0.00031722579841752781},
    {2.1799515628353019,
     -7.6665716054256929,
     -31.2383412536586,
     -3.0860367894532966e-06,
     0,
     0,
     1.7561860073751649,
     -0.94879254322291628,
     1.8706261516718316e-06,
     0,
     -0.46256935706385272,
     0,
     -0.079735640961285631,
     -1.9124474012889266e-07,
     -0.26627770214539737,
     0.22392973861333448,
     1.0127772242065562e-05,
     -1.8475997199565853e-07,
     -4.5563397071926297e-06,
     0.3699250832496368,
     -0.47960598243617131,
     -0.2562436293302357,
     -3.517420923154416,
     -2.2429145327818802,
     -2.0335549952407126,
     -111.56936816351981},
    {-1.9307211961156157,
     11.958552047022275,
     42.323074025121159,
     3.1724281255884221e-06,
     0,
     0,
     -0.94879254322291628,
     24.511535264588186,
     0,
     0,
     0,
     0,
     0,
     0,
     1.3196978894666778,
     -1.3872716390437649,
     0,
     0,
     0,
     -1.5278202283180078,
     0,
     0,
     6.7048754729089763,
     0,
     0,
     139.98696555240753},
    {1.7043827929802871e-05,
     -5.543064921378486e-05,
     -0.00023740730761843157,
     -2.3169640163074985e-11,
     -1.3172013181357207e-05,
     -5.4806369842643657e-12,
     1.8706261516718316e-06,
     0,
     1.0000000000156641,
     0,
     0,
     0,
     -7.9041814114779892e-07,
     -1.7603913491680648e-12,
     -2.1116853022960015e-06,
     1.7441379518032535e-06,
     7.1711746582941168e-11,
     -1.5698765699401324e-12,
     -4.8393131868260352e-11,
     2.4447076459245345e-06,
     -2.8865553620846534e-06,
     -4.3545240404281247e-06,
     -1.9158317411230531e-05,
     -1.1116988051902741e-05,
     -1.7918754077090128e-05,
     -0.00081598920813093982},
    {3.2194279252331291e-05,
     -8.2709030061726732e-05,
     -0.00045655705079795993,
     -3.7195946390194495e-11,
     0,
     -2.5383586606814818e-11,
     0,
     0,
     0,
     1.0000000021791042,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     -1.6514757993872359e-05,
     -3.5293984485888423e-05,
     -7.4534715753270741e-05,
     0,
     0,
     -0.001167123318930719},
    {-39.651186487712707,
     83.507300327532917,
     385.19468767034414,
     2.6577415798249472e-05,
     38.498080674535522,
     9.8955098916678016e-07,
     -0.46256935706385272,
     0,
     0,
     0,
     53.158964253149705,
     0,
     1.2844184902347464,
     3.0806585037794388e-06,
     0,
     -3.6071635384237961,
     -9.5166649474833902e-05,
     4.4642983004620115e-06,
     9.1744527559364095e-05,
     -2.4828849600130369,
     5.7942858216376116,
     6.1915358969099072,
     4.3584799211025818,
     10.537888098268034,
     5.4595736722565213,
     955.47918838097769},
    {-0.00071684978621199024,
     0.0014870699777732096,
     0.005679267990102212,
     2.4349224699962758e-10,
     0.00050108966088901043,
     0,
     0,
     0,
     0,
     0,
     0,
     1.0000000056476226,
     5.1546999517194208e-05,
     2.5454204174198011e-11,
     5.2655061426916271e-05,
     -8.5155705772569246e-05,
     -6.418959793054576e-10,
     2.1078083569298925e-11,
     7.7970548556300377e-10,
     -3.7513232787114859e-05,
     2.7357589603777587e-05,
     9.7443989531998139e-05,
     0,
     1.4215543024739636e-05,
     0,
     0.010955949690545362},
    {-8.6241866669235208,
     20.590812608552817,
     69.294784475201567,
     3.6872375970095972e-06,
     5.6496759442421283,
     6.3965393389262975e-07,
     -0.079735640961285631,
     0,
     -7.9041814114779892e-07,
     0,
     1.2844184902347464,
     5.1546999517194208e-05,
     5.6494488455974405,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     164.7012374410474},
    {-7.8813352941864478e-06,
     1.8181353278144878e-05,
     7.4578342295604285e-05,
     5.1156404783270122e-12,
     6.4526967145252e-06,
     6.1368015048184276e-13,
     -1.9124474012889266e-07,
     0,
     -1.7603913491680648e-12,
     0,
     3.0806585037794388e-06,
     2.5454204174198011e-11,
     0,
     1.0000000000066867,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0.00019751672510297895},
    {-9.1397862810662911,
     22.757611779484584,
     89.789916446817415,
     5.6914491667378166e-06,
     6.468730391703188,
     8.5445142288574447e-07,
     -0.26627770214539737,
     1.3196978894666778,
     -2.1116853022960015e-06,
     0,
     0,
     5.2655061426916271e-05,
     0,
     0,
     9.296331140638955,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     220.00835018106548},
    {16.145217777093777,
     -37.103587110257493,
     -142.39025505036423,
     -8.0878283078119414e-06,
     -10.955482995811055,
     -1.25748379952674e-06,
     0.22392973861333448,
     -1.3872716390437649,
     1.7441379518032535e-06,
     0,
     -3.6071635384237961,
     -8.5155705772569246e-05,
     0,
     0,
     0,
     14.096703920607254,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     -330.39092506927017},
    {0.00021968988764172484,
     -0.00054757069589520197,
     -0.0024393396211984351,
     -1.8635685971638038e-10,
     -0.00017085814393585734,
     -3.2498738471802017e-11,
     1.0127772242065562e-05,
     0,
     7.1711746582941168e-11,
     0,
     -9.5166649474833902e-05,
     -6.418959793054576e-10,
     0,
     0,
     0,
     0,
     1.0000000080368816,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     -0.0067242333568572682},
    {-7.993955233582102e-06,
     1.7785001787575848e-05,
     8.1870085433869899e-05,
     5.6124028735158997e-12,
     6.2338972746055648e-06,
     8.8930702622906122e-13,
     -1.8475997199565853e-07,
     0,
     -1.5698765699401324e-12,
     0,
     4.4642983004620115e-06,
     2.1078083569298925e-11,
     0,
     0,
     0,
     0,
     0,
     1.0000000000066867,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0.00020444923408148574},
    {-0.00021501001462387393,
     0.00049732328898703876,
     0.0022175508680669135,
     1.5579734124741342e-10,
     0.00016910659118233662,
     2.9241434146339037e-11,
     -4.5563397071926297e-06,
     0,
     -4.8393131868260352e-11,
     0,
     9.1744527559364095e-05,
     7.7970548556300377e-10,
     0,
     0,
     0,
     0,
     0,
     0,
     1.0000000046088182,
     0,
     0,
     0,
     0,
     0,
     0,
     0.0057141463438239474},
    {9.2737755782662799,
     -23.0346712296897,
     -96.233276550937347,
     -6.7243752779478904e-06,
     -7.488878494739116,
     -7.9136182813932271e-07,
     0.3699250832496368,
     -1.5278202283180078,
     2.4447076459245345e-06,
     0,
     -2.4828849600130369,
     -3.7513232787114859e-05,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     12.119404916114496,
     0,
     0,
     0,
     0,
     0,
     -254.70466421776533},
    {-10.770918183005119,
     27.324038137627131,
     114.8691602823897,
     8.6081836048189634e-06,
     8.9001850182949518,
     1.1542461426980547e-06,
     -0.47960598243617131,
     0,
     -2.8865553620846534e-06,
     -1.6514757993872359e-05,
     5.7942858216376116,
     2.7357589603777587e-05,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     14.5173066017481,
     0,
     0,
     0,
     0,
     318.42960802877093},
    {-21.555103616533106,
     47.753807739018512,
     211.12882441268206,
     1.4827290007742856e-05,
     19.885323774973077,
     1.6445067080162328e-06,
     -0.2562436293302357,
     0,
     -4.3545240404281247e-06,
     -3.5293984485888423e-05,
     6.1915358969099072,
     9.7443989531998139e-05,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     50.732766069148802,
     0,
     0,
     0,
     548.19796101927602},
    {-25.50946140559132,
     79.061103733547029,
     355.58160033482602,
     3.3531700224818024e-05,
     12.78088066100387,
     7.8140480339369592e-06,
     -3.517420923154416,
     6.7048754729089763,
     -1.9158317411230531e-05,
     -7.4534715753270741e-05,
     4.3584799211025818,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     222.79841230067959,
     0,
     0,
     1157.6981119100133},
    {-20.585943317869393,
     56.336768670027197,
     254.33203967237159,
     2.2305165158482174e-05,
     16.396704901927158,
     2.3990762256917956e-06,
     -2.2429145327818802,
     0,
     -1.1116988051902741e-05,
     0,
     10.537888098268034,
     1.4215543024739636e-05,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     106.84233446531357,
     0,
     799.73446678156142},
    {-25.336142393442419,
     73.125635519990553,
     319.62147542109619,
     2.9410296353478671e-05,
     30.494755632674455,
     1.4500934301964703e-06,
     -2.0335549952407126,
     0,
     -1.7918754077090128e-05,
     0,
     5.4595736722565213,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     166.34344163160841,
     1033.4546961389804},
    {-3033.5911821111858,   7417.5896339988767,     30937.363836040866,
     0.0022050054547991917, 2363.4766308514409,     0.00031722579841752781,
     -111.56936816351981,   139.98696555240753,     -0.00081598920813093982,
     -0.001167123318930719, 955.47918838097769,     0.010955949690545362,
     164.7012374410474,     0.00019751672510297895, 220.00835018106548,
     -330.39092506927017,   -0.0067242333568572682, 0.00020444923408148574,
     0.0057141463438239474, -254.70466421776533,    318.42960802877093,
     548.19796101927602,    1157.6981119100133,     799.73446678156142,
     1033.4546961389804,    82723.704735195497}};

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 27 (7 by maintainers)

Most upvoted comments

Also, not sure that it makes a difference, but the exact environment setup is I’m running the example through the docker image ubuntu:19.04 on OS X, which I think is through a VM.