OpenBLAS: link with which library?

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

 



Bugs have been filed asking packagers to build with openblas instead
of atlas.  But there are multiple openblas libraries. I can link with
any of the following:

  -lopenblas (openblas-serial)
  -lopenblas64 (openblas-serial64)
  -lopenblas64_ (openblas-serial64_)
  -lopenblaso (openblas-openmp)
  -lopenblaso64 (openblas-openmp64)
  -lopenblaso64_ (openblas-openmp64_)
  -lopenblasp (openblas-threads)
  -lopenblasp64 (openblas-threads64)
  -lopenblasp64_ (openblas-threads64_)

If I understand correctly, the default is a library that cannot
tolerate multiple threads, uses 32-bit integers in the interface, and
does not use "a symbol name suffix", whatever that means.  The various
suffixes mean:
  o = use OpenMP (instead of serial)
  p = use pthreads (instead of serial)
  64 = use 64-bit integers in the interface
  _ = use "a symbol name suffix"

The bugs that have been filed have not made any mention of how to
select which of these libraries to link against.  I'm looking at how
to switch the sagemath stack over.  Since suitesparse sits at the
bottom of the stack, I just followed that package's example at first
and linked with -lopenblas.  But now sagemath says:

OpenBLAS : Program will terminate because you tried to start too many threads.

And kills it dead.  I think this switch from atlas to openblas was not
planned well.  The entire sagemath stack, for example, will need to be
linked with the *same* openblas library.  The serial library with the
32-bit integer interface is not the right choice, and I'm going to
need suitesparse to make the same choice as the rest of the stack.
Some of the elements of that stack are OpenMP-enabled, so that may be
the right choice, but I'm not sure.  Suitesparse, for example, uses
TBB, which suggests that the thread alternative may be the right
choice for that package.  The serial option is definitely not right
for suitesparse, anyway.

How do we select which packages get linked against which openblas
library?  That question should have been answered *before* filing all
of these bugs.

Also, I see this in /usr/include/openblas/openblas_config.h:

#define OPENBLAS_HAVE_SSE3
#define OPENBLAS_HAVE_SSSE3

That suggests that SSE3 and SSSE3 instructions have been built into
one or more of the openblas libraries, which means that users with
machines that do not support those instruction sets will get illegal
instruction errors if they try to use anything linked with openblas.
-- 
Jerry James
http://www.jamezone.org/
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://getfedora.org/code-of-conduct.html
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux