Thanks.
Problem still exists in PyMC 5.10.4 etc.
The trick for me was that it is numpy
which must not have been imported prior to setting
os.environ['OPENBLAS_NUM_THREADS'] = '1'
But I was working in an ipython
environment shortcut which preloaded numpy
automatically, before starting up.
So my fix is that I now have a module with the following content, which I import first. It warns me if numpy
has already been loaded before I set the OPENBLAS environment setting:
import os
# On my computation server and laptop, stopping openblas multithreading speeds things up by stopping the wild multithreading version of numpy! Do not preload numpy in ipython (or any earlier-loaded modules).
os.environ['OPENBLAS_NUM_THREADS'] = '1'
# Following seem not to matter:
#os.environ['MKL_NUM_THREADS'] = '1'
#os.environ['NUMEXPR_NUM_THREADS'] = '1'
#os.environ['OMP_NUM_THREADS'] = '1'
try:
np
print('\n\nIt looks like you have loaded numpy before we've disabled OPENBLAS crazy-threading. Do not preload numpy in ipython.\n\n')
raise ImportError("Start ipython without numpy preloaded")
except NameError as e:
print(' Successfully checked that numpy was not preloaded before setting OpenBLAS variable.')
import numpy as np
Now htop looks a lot nicer! this is with 15 estimates now going in parallel, and each taking 4 threads for 4 chains, with no OPENBLAS splitting:
Unlike before, those processes are blue, not red.
![:slight_smile: :slight_smile:](https://emoji.discourse-cdn.com/apple/slight_smile.png?v=12)