Intel® oneAPI HPC Toolkit
Get help with building, analyzing, optimizing, and scaling high-performance computing (HPC) applications.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
For the latest information on Intel’s response to the Log4j/Log4Shell vulnerability, please see Intel-SA-00646

ifx (2021.1-beta04) HPC Toolkit build error with -loopopt

Rashawn_K_Intel1
Employee
425 Views

Hello,

I posted this earlier in the Fortran Compilers sub-forum link, but it seems that it is not specific for oneAPI releases. The link to that post is here: https://software.intel.com/en-us/forums/intel-fortran-compiler/topic/848820. I will restate the issue here:

The PI of an HPC tool, Score-P, contacted me earlier today regarding an error discovered in the most recent beta of the HPC Toolkit with the Fortran compiler. The issue appears to be a conflict between Autoconf and the -loopopt option supplied to configure where the the -l is interpreted as a cue to link with the library oopopt.  The full description of the text the PI sent to me regarding the error is enclosed below. I downloaded the reproducer pointed to towards end of message, and I ran it using ifx with the Beta 04 on one of the gpu only DPCPP dev cloud machines,  and I encounter the same issue with -loopopt. The team is in Europe, and I do not know the specifics of their machine, but it is certainly Linux:

I just tried your new beta compilers in the context of Score-P. I ran into a problem with the Fortran compiler and autoconf, which I will describe below. Would it be possible for you to forward this report to the compiler developers?

Here the problem description:

ifx (2021.1-beta04) fails on autoconf (2.69) macros AC_F77_WRAPPERS/AC_FC_WRAPPERS [1] due to xfortcom's default option '-loopopt=0'

The command 

ifx -o conftest -g -v conftest.f'

calls 

/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/bin/xfortcom    -triple x86_64-unknown-linux-gnu -emit-obj -mrelax-all "-verify nomodule" -main-file-name conftest.f -target-cpu x86-64 -target-linker-version 2.30 -debug-info-kind=limited -dwarf-version=4 -mllvm -debug-line-version=2 -dwarf-column-info -D__unix__ -D__unix -D__linux__ -D__linux -D__gnu_linux__ -Dunix -Dlinux -D__ELF__ -D__x86_64 -D__x86_64__ -D__amd64 -D__amd64__ -D__INTEL_COMPILER_BUILD_DATE=20200118 -I/opt/intel/inteloneapi/tbb/2021.1-beta04/env/../include -I/opt/intel/inteloneapi/mpi/2021.1-beta04//include -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/include -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/compiler/include/intel64 -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/compiler/include -I/usr/local/include -I/usr/include -I/usr/include/x86_64-linux-gnu -O0 -fveclib=SVML -fno-inline -fno-inline-functions -mllvm -loopopt=0 -mllvm -enable-lv -mllvm -disable-hir-generate-mkl-call -mllvm -intel-libirc-allowed -o /tmp/ifxWAvMeA.o -D__INTEL_COMPILER=201900 -D__INTEL_COMPILER_UPDATE=0 -D__unix__ -D__unix -D__linux__ -D__linux -D__gnu_linux__ -Dunix -Dlinux -D__ELF__ -D__x86_64 -D__x86_64__ -D__amd64 -D__amd64__ -D__INTEL_COMPILER_BUILD_DATE=20200118 -I. -I/opt/intel/inteloneapi/tbb/2021.1-beta04/env/../include -I/opt/intel/inteloneapi/mpi/2021.1-beta04//include -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/include -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/compiler/include/intel64 -I/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/compiler/include -I/usr/local/include -I/usr/include -I/usr/include/x86_64-linux-gnu "-fp_modbits honor_f32_conversion" "-fp_modbits honor_f64_conversion" -O0 -g2 "-reentrancy threaded" -simd -offload_host conftest.f


Note the '-loopopt=0'. AC_F77_WRAPPERS/AC_FC_WRAPPERS identify this option as a library:

checking for Fortran libraries of ifx...  -loopopt=0 -L/opt/intel/inteloneapi/tbb/2021.1-beta04/env/../lib/intel64/gcc4.8 -L/opt/intel/inteloneapi/mpi/2021.1-beta04//libfabric/lib -L/opt/intel/inteloneapi/mpi/2021.1-beta04//lib/release -L/opt/intel/inteloneapi/mpi/2021.1-beta04//lib -L/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/lib -L/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/compiler/lib/intel64_lin -L/opt/intel/inteloneapi/mpi/2021.1-beta04//libfabric/lib/../lib/ -L/opt/intel/inteloneapi/mpi/2021.1-beta04//lib/../lib/ -L/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/lib/../lib/ -L/usr/lib/gcc/x86_64-linux-gnu/7/ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../../lib/ -L/lib/x86_64-linux-gnu/ -L/lib/../lib64 -L/lib/../lib/ -L/usr/lib/x86_64-linux-gnu/ -L/usr/lib/../lib/ -L/opt/intel/inteloneapi/tbb/2021.1-beta04/env/../lib/intel64/gcc4.8/ -L/opt/intel/inteloneapi/mpi/2021.1-beta04//libfabric/lib/ -L/opt/intel/inteloneapi/mpi/2021.1-beta04//lib/release/ -L/opt/intel/inteloneapi/mpi/2021.1-beta04//lib/ -L/opt/intel/inteloneapi/compiler/2021.1-beta04/linux/lib/ -L/usr/lib/gcc/x86_64-linux-gnu/7/../../../ -L/lib64 -L/lib/ -L/usr/lib -lifport -lifcoremt -limf -lsvml -lm -lipgo -lirc -lpthread -lirc_s -ldl

When using these Fortran libraries in icx invocations the linker complains:

ld: cannot find -loopopt=0

Note that everything works fine with the 'old' ifort, also provided by the oneAPI package.

Would it be possible to rename '-loopopt' such that it doesn't start with '-l'? '-loopopt' seems to be a non-public option, at least it is not documented in 'ifx -help'. Thus renaming might cause no harm.

Please find a minimal reproducer until 2020-02-27 here: https://gigamove.rz.rwth-aachen.de/d/id/75hs9S9jCCLR2Y

Use like this:
tar xf loopopt.tar.gz
mkdir loopopt/_build
cd  loopopt/_build
../configure CC=icx FC=ifx F77=ifx

Your advice will be appreciated, and I will pass it on to the developers, as well as let them know about this forum.

Regards,

-Rashawn

0 Kudos
5 Replies
Feld__Christian
Beginner
425 Views

If I rename the xfortcom option -loopopt=0 to -qloopopt=0, the configure script succeeds. I tested the renaming with the following change to the reproducer's configure script, see https://gigamove.rz.rwth-aachen.de/d/id/75hs9S9jCCLR2Y

--- configure.orig	2020-02-14 10:33:42.827806795 +0000
+++ configure	2020-02-14 10:43:27.197241895 +0000
@@ -3525,7 +3525,7 @@
     ac_fc_v_output=`echo $ac_fc_v_output | sed 's/"//g'` ;;
 esac
 
-
+ac_fc_v_output=$(echo $ac_fc_v_output | sed 's/-loopopt=0/-qloopopt=0/g')
 
 ac_cv_fc_libs=
 

A renaming of -loopopt would be highly appreciated. Patching autoconf instead would also be a solution. But as the development of autoconf is basically on halt for several years now, this change is unlikely to reach the interested audience.

Thanks,
Christian

Feld__Christian
Beginner
425 Views

The team is in Europe, and I do not know the specifics of their machine, but it is certainly Linux:

I work under Linux in a docker container based on the Intel provided Dockerfile. The compiler version is 2021.1-beta04.

Thanks,
Christian

AbhishekD_Intel
Moderator
425 Views

Hi Rashawn,

We can run ./configure with ifort, you can use ../configure CC=icx FC=ifort F77=ifort command on beta04 toolkitbut we cannot run it with ifx it's giving the same error We have transferred this issue with ifx to our compiler team.

Thank You

-Abhishek

Rashawn_K_Intel1
Employee
425 Views

Good day Abhishek,

Thank you for confirming that ifort will work. I will pass this on to the users and let them know this ifx issue has been transferred to the compiler team.

Best regards,

-Rashawn

Barbara_P_Intel
Moderator
425 Views

Since this issue was also raised on the Fortran Forum and it is a Fortran issue, let's continue the discussion on the Fortran Forum

Reply