Intel announced release of an update to the Intel(R) oneAPI toolkits 06 April 2023. This includes the 2023.1.0 version of the Intel(R) Fortran Compiler (ifx) and version 2021.9.0 of the Intel(R) Fortran Compiler Classic (ifort). For ifx, there are numerous bug fixes along with 6 new OpenMP 5.1 features and 1 new OpenMP 5.2 feature (details here). In total, ifx 2023.1.0 has 278 “edits” or fixes/changes/features over the initial 2023.0.0 release. This is following our goal of stabilizing ifx and adding OpenMP 5.1/5.2/6.0 features throughout 2023. Highlights for the overall oneAPI 2023.1 release.
Fantastic. I built fpm 0.8.1 with the new release of ifx(1), and tried it on over 40 fpm projects including a considerable number of unit tests and everything built. fpm(1) itself exercises a good
number of modern Fortran features; and the collection of fpm projects has a mix of old and new
code in it. I am sure that ifx sharing a front-end and history with ifort helped a lot with that, but it
was very impressive. When I run a combination like that with a new compiler, I generally spend
the next couple of weeks filing bug reports
Congratulations. A few things compiled slowly; a few things did not optimize anywhere near as well as with ifort but some were faster. That is true between any new compilers but for me Personally this week is the first time I am using ifx instead of ifort or other compilers for the production version of some large codes, and I am liking everything I see. Keep up the great progress!
For the curious, the test fpm project is in
wget http://www.urbanjost.altervista.org/REMOVE/urbanjost8.tgz
and requires fpm 0.8.1. Not for the timid.
Would be great if you could isolate those lower performance cases in your code (compared to ifort) and report them in Intel forum for a fix.
There is quite a bit of activity along those lines; there are guides as to when to use ifort and when to use ifx on the Intel site, for example. A general note is that complex values are not as optimized as in ifort in general. ifx supports the OpenMP/GPU interface which ifort does not, … I thought I saw a table comparing ifort and ifx and benchmarks using the “classic” benchmark tools but cannot seem to find it.
I only mention the speed differences in passing as that is now the issue for me with ifx instead of whether features are supported; a big milestone in my eyes. Optimization is critical for the future of Fortran, but too much to discuss here just now, I think. I will definitely try to get any bottlenecks I see addressed.
In general It would be nice if the community supported more benchmarks and reports for various compilers and platforms; the stdlib project seems to consider optimization with many of its libraries; and so on.
There does not seem to be as much literature about how to optimize code as there used to be, but I think a lot more is expected of the compilers instead of the programmers compared to the past. I don’t intend to turn this into something all about benchmarking except to note that at least for me whether to use ifx or not is no longer based on whether it supports enough features but availability/performance/cost. It seems a major landmark event and I congratulate those that brought it about.
Jane and I use the Polyhedron Benchmark suite as well as timing examples from our books. Here is a link to the Polyhedron site. https://polyhedron.com/?page_id=175 We did timing runs last year of gfortran, Intel ifort and ifx, Nag and Nvidia compilers. One of the things we were interested in looking at was if there were timing differences of the compilers under native Winows, native linux, linux under WSL and linux under hyper-v. I tried to upload a pdf with the results but it appears that isn’t allowed. I’ve put a copy up at https://www.rhymneyconsulting.co.uk/fortran/polyhedron/combined_benchmark.pdf
At some point we’ll look at updating with the current editions of some of the compilers,
@cmaapic Ian, there is one major optimization issue that I’m tracking, and one or two other minor ones. Those fixes/optimizations are in flight and should make the Update 2 release, roughly June/July timeframe, barring some major hiccup. THAT compiler (2023.2) I believe should be better at optimization than today’s Update 1 (2023.1.0) and much better than the CY 2022 releases. In my opinion, that should be the release where we don’t see major outliers in performance.
Thanks for the feedback. We look forward to the release. We have a set of C/C++ interop examples and have been looking at the combined performance of the new Intel compilers with these examples. We’ve also written some new sorting examples that call the C++ STL parallel sorting algorithms. The Intel performance is really good.
A complete coverage of this can be found in our update to the 4th edition.