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