Jerry James wrote:
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.
Hmmm, normally, the serial version is not itself parallelized but should
tolerate threaded applications. In fact, that is the main advantage over the
threaded versions that may interfere with the application's own threading,
and the reason why serial is still the default.
However, that does not appear to be entirely true, judging from your error
message:
OpenBLAS : Program will terminate because you tried to start too
many
threads.
which leaves me slightly confused.
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.
OpenBLAS detects the available instruction set at runtime on x86/x86_64, so
SSE3 and SSSE3 instructions should only be used when the hardware actually
supports them (though I have not personally verified that this actually
works as documented).
Kevin Kofler