Our latest compiler, the Intel® Fortran Compiler (ifx), available in the oneAPI HPC Toolkit 2022.1, is production-ready for CPUs and GPUs. ifx is based on the Intel® Fortran Compiler Classic (ifort) frontend and runtime libraries, but uses LLVM backend compiler technology.
This article describes the Fortran language and OpenMP* features that are implemented in ifx by release.
In this initial release ifx completely implements Fortran 77, Fortran90/95, Fortran 2003 (except parameterized derived types) and Fortran 2008 (except coarrays) language standards and OpenMP 4.5 and OpenMP 5.0/5.1 directives and offloading features. ifx is binary (.o/.obj) and module file (.mod) compatible. Binaries and libraries generated with ifort can be linked with binaries and libraries built with ifx. .mod files generated with one compiler can be used by the other (64-bit targets only). Both compilers use the the same runtime libraries. ifx may or may not match performance of ifort compiled applications. Performance and Fortran Standard language improvements will be coming in ifx with each update release throughout 2022.
In this release, the ifx version number is 2022.0.0.
This looks quite impressive, I’m might actually be looking forward to updating my oneAPI installation (except for the several GB download, again) and giving ifx a serious try. Maybe we can start testing it with stdlib and other projects, if CMake already knows about ifx.
A quick test (on Windows) seems to show that ifx 2022.0.0 is able to compile stdlib, but is unable to compile the associated tests due to some unsupported feature in how the TestDrive framework is used:
test\test_moment.f90(1084): error #5533: Feature found on this line is not yet supported in ifx
call run_testsuite(testsuites(is)%collect, error_unit, stat)
-------------^
This affects other projects using TestDrive. I’m not sure which unsupported feature is referred to here.
When trying to compile fpm, ifx similarly fails due to an unsupported feature in the M_CLI2 library:
build/dependencies/M_CLI2/src/M_CLI2.f90(2281): error #5533: Feature found on this line is not yet supported in ifx
args=[character(len=imax) :: args,current_argument]
----------------------------------------------^
To add to the feeling that ifx is perhaps not quite ready, each error (on Windows) prints out a 45 line stacktrace without symbols:
I am still waiting for our IT department to install the newest version, haven’t tried out the 2022 yet. But with the 2021 version our code did not compile at all. Let’s see whether they made progress. I think there was even somewhere a ‘where’ which wasn’t implemented in ifx.
ifx may or may not match performance of ifort compiled applications. Performance and Fortran Standard language improvements will be coming in ifx with each update release throughout 2022.