Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
15 Views

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

Hello,

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,  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 relay it to the development team and also let them know about this forum.

Best regards,

Rashawn Knapp

0 Kudos
8 Replies
Highlighted
Retired Employee
15 Views

-loopopt is not an Intel

-loopopt is not an Intel Fortran option. It would indeed be interpreted as a library specification. I have no idea what -loopopt is supposed to do.

Ah, but I see this is an attempt to use OneAPI.  I am not familiar with the tools for that, though I would be puzzled if -loopopt was supposed to be a valid option there.

--
Steve (aka "Doctor Fortran") - https://stevelionel.com/drfortran
0 Kudos
Highlighted
15 Views

Steve,

Steve,

Thank you for your response. I thought I was filing this in the correct space. I will pop up back to the oneAPI HPCToolkit basic forum and see if someone there knows about this in the 2021.1-beta04 release.

Regards,

-Rashawn

0 Kudos
Highlighted
15 Views

Quote:Steve Lionel (Ret.)

Steve Lionel (Ret.) (Blackbelt) wrote:

-loopopt is not an Intel Fortran option. It would indeed be interpreted as a library specification. I have no idea what -loopopt is supposed to do.

Ah, but I see this is an attempt to use OneAPI.  I am not familiar with the tools for that, though I would be puzzled if -loopopt was supposed to be a valid option there.

You are right, -loopopt is neither an ifort nor an ifx option. But the new ifx Fortran compiler passes this option to xfortcom, which you can see if you invoke ifx in verbose mode:

$ ifx -o hello_world -g -v hello_world.f

The xfortcom command line is parsed by configure. configure collects library options and ignores other options. As -loopopt=0 starts with a -l, it is erroneously detected as library option. Subsequent linking with the detected options fails.

In case of the 'old' ifort, fortcom is called instead of xfortcom. Here, everything works as expected.

0 Kudos
Highlighted
Moderator
15 Views

This is the right place to

This is the right place to post questions about the Fortran compiler that is available as part of oneAPI (beta).

Since the user is using configure to set up the environment, please specify ifort as the Fortran compiler.

Using ifx to launch the Intel Fortran Nextgen compiler is discouraged.  We are working to correct the documentation. 

The rule of thumb today for oneAPI is to use "ifort" to compile Fortran applications. That is equivalent to using the Parallel Studio version of ifort.

If you are interested in using the Fortran NextGen compiler that includes the ability to offload compute kernels to an Intel GPU, invoke the Fortran compiler using "ifort -qnextgen". 

 

0 Kudos
Highlighted
Moderator
15 Views

Thank you, Christian, for the

Thank you, Christian, for the great analysis as to why conftest.f  fails to compile.  I'll check with the compiler developers.

 

0 Kudos
Highlighted
15 Views

Quote:Barbara P (Intel) wrote

Barbara P (Intel) wrote:

Using ifx to launch the Intel Fortran Nextgen compiler is discouraged.  We are working to correct the documentation. 

Can I assume that the use of icx and icpx is also discouraged?

0 Kudos
Highlighted
Moderator
15 Views

Yes.  Please use "icc

Yes.  Please use "icc -qnextgen" and "icpc -qnextgen".

0 Kudos
Highlighted
15 Views

The problem persists if I

The problem persists if I switch form 'ifx' to 'ifort -qnextgen', i.e.

configure CC=icx FC=ifx F77=ifx

vs.

configure CC="icc -qnextgen" FC="ifort -qnextgen" F77="ifort -qnextgen"

 

Renaming -llopopt to e.g., -qloopopt fixes the problem. Please see also my comment in oneAPI HPC Toolkit forum:
https://software.intel.com/en-us/forums/intel-oneapi-hpc-toolkit/topic/848821#comment-1952922

0 Kudos