On Mon, 13 Jan 2020, Sven Schreiber wrote:
Am 13.01.2020 um 18:19 schrieb Allin Cottrell:
> On Mon, 13 Jan 2020, Sven Schreiber wrote:
>> (I don't know how to do that on Windows, except by wrapping the whole
>> thing in a dummy mpi block with np=1 and omp-threads=1.)
>
> google: windows set environment variable. (It's not that hard.)
OK sorry, next time :-)
> Anyway, here's what I found on forcing single-threaded behavior:
...
> So rather than divert from eigensym to eigen on Windows, what we
> really want to do is run single-threaded eigensym on both platforms,
> if we can figure out how to do that. (We don't want everything OMP to
> be single-threaded.)
What about this:
https://github.com/xianyi/OpenBLAS/blob/ce3651516f12079f3ca2418aa85b9ad57...
We're on ths same page! I just pushed to git an openblas-specific
patch for DSYEV* to store the prior number of threads, obtained via
openblas_get_num_threads(); set the number of threads to 1 via
openblas_sget_num_threads(); then restore the prior thread count.
The bad news is that this really does seem to be a design flaw in
openblas -- I've now tried matrices of order 400 and multi-threading
is still slower for DSYEV*. The good news is that DGEEV runs a bit
faster with multi-threading for really big matrices (at least on
sandybridge). It remains to be seen how this pans out for other
LAPACK functions.
Allin