Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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.

  1. Log in to Marconi cluster
  2. Prepare $MODULEPATH thus the imasenv module can be found and loaded: 

    Code Block
    module use /marconi/home/userexternal/msmukows/public/modules


  3. Load imasenv/3.36.0/intel/2020-test module

    Code Block
    module load imasenv/3.36.0/intel/2020-test


  4. Navigate to the directory with example code:

    Code Block
    cd /marconi_work/FUSIO_HLST/testdir/tests/blitz_pthread_issue_intel_2020


  5. There should be a file named: "test_pulse_create.cpp":


    Code Block
    .
    └── test_pulse_create.cpp


  6. 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 SPACKChanged pkg-config for Blitz
Vanilla Blitz's pkg-config - provided by SPACKChanged pkg-config for Blitz


Code Block
# generated by configure / remove this line to disable regeneration
prefix=/marconi_work/FUSIO_HLST/switmdir/libs-intel/blitz/1.0.1/intel/19.1.3.304/hftjglypfr4ovoej6dkxwuedupjqez3m
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: blitz
Description: blitz Library
Version: 0.10
Requires:
Libs: -L${libdir} -lblitz
Cflags: -I${includedir}



Code Block
# generated by configure / remove this line to disable regeneration
prefix=/marconi_work/FUSIO_HLST/switmdir/libs-intel/blitz/1.0.1/intel/19.1.3.304/hftjglypfr4ovoej6dkxwuedupjqez3m
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: blitz
Description: blitz Library
Version: 0.10
Requires:
Libs: -L${libdir} -lblitz
Cflags: -I${includedir} -pthread


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