Intel provides the oneAPI compiler icpx, icx in the intel conda channel and they can be installed on top of the lsst stack.
eups packages that are not scons based use non uniform compiler flags
As a proof of concept this was hacked by creating wrapper shell scripts invoking the intel compiler and adding extra flags.
#!/bin/sh
|
link=true
|
extraflags1=""
|
extraflags2=""
|
prefix=$(dirname $(dirname $(which gcc )))
|
if [ "$1" == "--version" ]
|
then
|
exec icx --version
|
fi
|
|
for arg in "$@"
|
do
|
if [[ "$arg" == -c ]]
|
then
|
link=false
|
break
|
fi
|
|
done
|
if $link
|
then
|
extraflags1="-B$prefix/lib/gcc/x86_64-conda-linux-gnu/9.4.0"
|
extraflags2="-L$prefix/lib/gcc/x86_64-conda-linux-gnu/9.4.0"
|
extraflags3="-xCORE-AVX2 -fp-model=precise"
|
else
|
extraflags1="-I$prefix/x86_64-conda-linux-gnu/include/c++/9.4.0"
|
extraflags2="-I$prefix/x86_64-conda-linux-gnu/include/c++/9.4.0/x86_64-conda-linux-gnu"
|
extraflags3="-xCORE-AVX2 -fp-model=precise"
|
|
fi
|
echo icx $extraflags1 $extraflags2 $extraflags3 $@
|
exec icx $extraflags1 $extraflags2 $extraflags3 $@
|
Compilation requires to use floating point model -fp-model=precise
lsst_dsitrib can be successfully compiled without any changes to the code.
Intel provides the oneAPI compiler icpx, icx in the intel conda channel and they can be installed on top of the lsst stack.
eups packages that are not scons based use non uniform compiler flags
As a proof of concept this was hacked by creating wrapper shell scripts invoking the intel compiler and adding extra flags.
#!/bin/sh
then
fi
do
done
then
else
fi
Compilation requires to use floating point model -fp-model=precise
lsst_dsitrib can be successfully compiled without any changes to the code.