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
