On Wed, Jul 1, 2020 at 11:20 AM IƱaki Ucar <iucar(a)fedoraproject.org> wrote:
On Wed, 1 Jul 2020 at 19:03, Jerry James <loganjerry(a)gmail.com>
wrote:
> openblas-openmp: use if the application uses OpenMP
> openblas-serial: use if the application is multithreaded
> openblas-threads: use if the application is single-threaded
>
> I've always found the naming of the openblas packages to be confusing,
> so that may not be right. Somebody set me straight if so.
The naming means (the same for BLIS):
-serial: runs single-threaded.
-openmp: some parts use OpenMP.
-threads: runs multi-threaded.
So it's a property of the OpenBLAS build, not a property of the
application. In fact, the serial version is not thread-safe unless you
activate a particular option at build time. We found that issue
recently and fixed it, and BTW the workaround was to switch to
openblas-openmp.
I think the way the OpenBLAS wiki is written confuses me:
https://github.com/xianyi/OpenBLAS/wiki/faq#multi-threaded
It starts with "If your application is already multi-threaded",
implying that the default case is suitable for a single-threaded
application. The default would be USE_THREAD=1, which corresponds to
the openblas-threads package. The wiki's remedy for an application
that is multi-threaded is to build OpenBLAS with USE_THREAD=0
USE_LOCKING=1, which corresponds to the openblas-serial package. If
the list I wrote above is wrong, I blame the wiki.
> The question of the default is a hard one. What happens if a
> multithreaded application that does not use OpenMP is linked with the
> OpenMP build of OpenBLAS?
That combination is fine AFAIK. But I don't know whether the serial
version would perform better in that situation or not at all.
I'll bother the FlexiBLAS maintainer about this. :) They use FlexiBLAS
as a research tool in high-performance computing, so maybe he knows
better about all these possible combinations.
As long as the default can be overridden, it doesn't matter all that
much, I think. It's probably best to pick the "safest" option as the
default, although I confess that I'm not sure which one that is.
--
Jerry James
http://www.jamezone.org/