octave-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Octave-bug-tracker] [bug #39000] Can't override BLAS XERBLA handler on


From: John W. Eaton
Subject: [Octave-bug-tracker] [bug #39000] Can't override BLAS XERBLA handler on Windows
Date: Thu, 21 Jun 2018 02:01:56 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

Update of bug #39000 (project octave):

                  Status:         Patch Submitted => Ready For Test         

    _______________________________________________________

Follow-up Comment #44:

I looked at this again.  It took way more time than I would like to admit.

I pushed the following change for Octave (on stable, merged to default):

http://hg.savannah.gnu.org/hgweb/octave/rev/fbc270aeb55d

This change makes Octave create a separate libxerbla.dll on Windows systems
that can be used to override the default xerbla function from libraries that
have been modified to link with an external libxerbla library to get XERBLA
instead of having that function as a part of the library[*].

Then I also checked in the following changeset for mxe-octave:

http://hg.octave.org/mxe-octave/rev/80461a9e516c

This change makes it so that the reference BLAS library will build a default
libxerbla.dll and LAPACK, OpenBLAS, and qrupdate will use it.

Now I see:


>> balance ([0,1,0,0;0,0,1,0;0,0,0,1;0,0,NaN,0])
DGEBAL: parameter number 3 is invalid
error: Fortran procedure terminated by call to XERBLA


even on Windows systems.

NOTES:

[*] As I understand things, this is the real problem here.  Even though the
original intent of XERBLA was that users could override it, when the function
is part of a DLL on Windows, there seems to be no way for code inside that DLL
to call any other version of the function except the one that is part of the
same DLL.  And the BLAS, LAPACK, and OpenBLAS libraries all provide their own
versions of XERBLA.  If my understanding is not correct, please show me the
way.  I would be glad to have a simpler way of doing this job that does not
require building modified versions of these libraries.

ALSO, this solution means that we have fixed the problem for mxe-octave using
the provided versions of the reference BLAS, LAPACK, and OpenBLAS.  But this
does not fix the problem for any other libraries.  So if someone decides to
try to drop in a copy of the MKL BLAS it should still work, but the behavior
of their version of Octave will be whatever the MKL BLAS library does in
XERBLA.

Finally (for now) sorry about forgetting to put the bug number in the commit
messages.  Oops.  Now is one of those times when it would be really nice to be
able to edit a commit message...

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?39000>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]