On Sat, 3 Jun 2017, Artur Tarassow wrote:

> Damn, I thought it's solved. Even though MPI is now correctly configured, I 
> still obtain the following message:
>
> <gretlcli>
> *** Warning ***
> *
> * gretl is built using OpenMP, but is linked against
> * OpenBLAS parallelized via pthreads. This combination
> * of threading mechanisms is not recommended. Ideally,
> * OpenBLAS should also use OpenMP.
>
> </gretlcli>

This is basically nothing to do with MPI. It's to do with the 
possibility that "raw" pthreads and OpenMP end up being invoked 
concurrently, in which case the result is unpredictable but probably 
bad!

Various functions in gretl are parallelized via OpenMP (which is much 
easier to program than low-level pthreads). If such a function 
happened to call a BLAS routine, and that routine was parallelized in 
OpenBLAS using pthreads rather than OpenMP, nasty things could happen 
(two thread-management mechanisms in competition). And one way of 
ensuring that can never happen is to ensure that OpenBLAS is itself 
parallelized using OpenMP (which is a build-time option). That's why 
we say, "Ideally OpenBLAS should also use OpenMP".

However... in fact we can probably get rid of the warning above, since 
we've been over the libgretl functions which invoke OpenMP, and I 
think we ensured that OpenBLAS-pthreads will not get called either 
directly or indirectly by those functions. Nonetheless, I think it's 
good practice to set things up so that any given program is never 
going to invoke pthreads and OpenMP simultaneously.

Allin Cottrell

Reply via email to