...
Code Block |
---|
/marconi_work/FUSIO_HLST/switmdir/libs-intel/blitz/1.0.1/intel/19.1.3.304/hftjglypfr4ovoej6dkxwuedupjqez3m/include/blitz/blitz.h(152): error: #error directive: Blitz is configured with --enable-threadsafe, but no compiler thread support is found. Did you forget, e.g., "--pthread"? #error Blitz is configured with --enable-threadsafe, but no compiler thread support is found. Did you forget, e.g., "--pthread"? |
How to reproduce issue
Solution
After a long search a solution has been found, however it is not very elegant. Requires editing pkg-config for Blitz, which by default is prepared by SPACK.
The change is subtle and affects only CFLAGS
which should look like this:
Code Block |
---|
Cflags: -I${includedir} -pthread |
Below is a before and after comparison:
To avoid installing whole IMAS-Spack eco-system from scratch a minimal working example was prepared. This just takes the part of the IMAS code and tries to compile it the very same way as the IMAS installer does it.
- Log in to Marconi cluster
Prepare
$MODULEPATH
thus the imasenv module can be found and loaded:Code Block module use /marconi/home/userexternal/msmukows/public/modules
Load
imasenv/3.36.0/intel/2020-test
moduleCode Block module load imasenv/3.36.0/intel/2020-test
Navigate to the directory with example code:
Code Block cd /marconi_work/FUSIO_HLST/testdir/tests/blitz_pthread_issue_intel_2020
- There should be a file named:
"test_pulse_create.cpp":
Code Block . └── test_pulse_create.cpp
Now execute compilation command:
Code Block icpc `pkg-config blitz --cflags` -I/marconi_work/FUSIO_HLST/msmukows/IMAS_INSTALLER/intel_installer/src/3.36.0/ual/4.10.1/cppinterface/src -I/marconi_work/FUSIO_HLST/msmukows/IMAS_INSTALLER/intel_installer/src/3.36.0/ual/4.10.1/lowlevel -g -O0 -fPIC -shared-intel -c test_pulse_create.cpp
You should see the very same error message as above - Blitz -pthread error
Solution
After a long search a solution has been found, however it is not very elegant. Requires editing pkg-config for Blitz, which by default is prepared by SPACK.
The change is subtle and affects only CFLAGS
which should look like this:
Code Block |
---|
Cflags: -I${includedir} -pthread |
Below is a before and after comparison:
Vanilla Blitz's pkg-config - provided by SPACK | Changed pkg-config for Blitz | ||
---|---|---|---|
Vanilla Blitz's pkg-config - provided by SPACK | Changed pkg-config for Blitz | ||
| |||
|
The above solution acts the same way as adding the -pthread
flag explicitly to the compilation command in point 6 at 2.1 How to reproduce issue, something like below:
Code Block |
---|
...
icpc `pkg-config blitz --cflags` -I/marconi_work/FUSIO_HLST/msmukows/ |
...
IMAS_INSTALLER/ |
...
intel_installer/ |
...
src/ |
...
3.36.0/ual/4.10.1 |
...
/cppinterface/src -I/marconi_work/FUSIO_HLST/msmukows/IMAS_INSTALLER/intel_installer/src/3.36.0/ual/4.10.1/lowlevel -g -O0 -fPIC -shared-intel -c -pthread test_pulse_create.cpp |