I installed Psi4 1.1 using bash Psi4conda-latest-py36-MacOSX-x86_64.sh
and was able to get it working correctly, but when I ran psi4 -n4 input.in
it ran with only 1 thread, instead of 4. I then tried adding set_num_threads(4)
to input.in
and got:
--------------------------------------------------------------------------- Python driver attempted to set threads to 4.
Psi4 was compiled without OpenMP, setting threads to 1.
Is there any way to configure Psi4 to use OpenMP when installing with the binary installer on a Mac?
If you’re willing to use Python 3.5, yes, otherwise, no. The situation is that there are three big compiler families on Mac: AppleClang, GCC, Intel. The first is the most widespread nowadays and most compatible with other software on your Mac because it uses the /usr/lib/libc++.1.dylib
that comes with the OS. However, AppleClang has had OpenMP disabled. Intel compilers also use libc++ and have OpenMP, but the compilers aren’t freely available. GCC does use OpenMP, but it uses a different fundamental library, libstdc++.dylib
that we’d have to ship with Psi4 to provide a compatible version.
The conda binaries for psi4 1.0 used GCC (we didn’t have so many requirements in those days), but the 1.1 binaries use Clang. As an exercise, we built a set of conda packages with gnu to go along with the Intel Distribution for Python 3.5. So, a fresh environment built with conda create -n psi4gccenv psi4 python=3.5 gnu -c intel -c psi4/label/dev -c psi4
should get you a psi4 that threads via openmp.
The Gnu-based psi4 works, but there were so many problems to get it working that in future we’re more likely to get an Intel compiler license (has OpenMP and is libc++/Clang compatible) than to build many more Gnu-based psi4 packages.
I ran
conda create -n psi4gccenv psi4 python=3.5 gnu -c intel -c psi4/label/dev -c psi4
source activate psi4gccenv
psi4 --test
and got this error message:
Traceback (most recent call last):
File “/Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/init.py”, line 55, in
from . import core
ImportError: dlopen(/Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so, 2): Symbol not found: __ZN7CheMPS214DMRGSCFunitary5loadUENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE
Referenced from: /Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so
Expected in: /Users/cpembry/anaconda/envs/psi4gccenv/lib/python3.5/site-packages/psi4/…/…/…/libchemps2.2.dylib
in /Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/Users/cpembry/anaconda/envs/psi4gccenv/bin/psi4”, line 158, in
import psi4
File “/Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/init.py”, line 60, in
raise ImportError("{0}".format(err))
ImportError: dlopen(/Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so, 2): Symbol not found: __ZN7CheMPS214DMRGSCFunitary5loadUENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE
Referenced from: /Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so
Expected in: /Users/cpembry/anaconda/envs/psi4gccenv/lib/python3.5/site-packages/psi4/…/…/…/libchemps2.2.dylib
in /Users/cpembry/anaconda/envs/psi4gccenv/lib//python3.5/site-packages/psi4/core.so
I tried building it from source using gcc, but I had to use python 3.5 and disable CheMPS2 and MKL to get it to run (which I am fine with).