Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auto-enable Fortran oneAPI compilers #4455

Open
Flamefire opened this issue Feb 15, 2024 · 1 comment
Open

Auto-enable Fortran oneAPI compilers #4455

Flamefire opened this issue Feb 15, 2024 · 1 comment
Labels
Milestone

Comments

@Flamefire
Copy link
Contributor

In the "intel-compilers" toolchain the icx/icpx oneAPI compilers for C/C++ are automatically enabled for some version (2022.2.0+):

# auto-enable use of oneAPI C/C++ compilers for sufficiently recent versions of Intel compilers
comp_ver = self.get_software_version(self.COMPILER_MODULE_NAME)[0]
if LooseVersion(comp_ver) >= LooseVersion('2022.2.0'):
if self.options.get('oneapi_c_cxx', None) is None:
self.options['oneapi_c_cxx'] = True

Why is that not done for Fortran? Why the split? Is it even possible to mix using oneAPI and classic compilers?

It might also be useful to have some toolchain option/flag whether the oneAPI compilers are available and/or used.
I'm wondering: Will at some point only the oneAPI compilers be used? How could we detect them / distinguish to the "classic" ones? This is required for some easyblocks.

@tazend
Copy link

tazend commented Feb 15, 2024

Hi,

was just yesterday also installing the intel-compilers toolchain on our Cluster and stumbled across this.
I think one reason why it was not enabled (just guessing) at the time starting with 2022.2.0 is that ifort was/is still superior to ifx, and ifx was still lacking features that were present in ifort.
So at the time, I believe it was still recommended to use ifort for production-ready code.

For example here: https://www.intel.com/content/www/us/en/developer/articles/guide/porting-guide-for-ifort-to-ifx.html Intel mentions that ifort continues to be superior and recommended (extract from the "Guiding Principles" section):

The Intel Fortran Compiler (ifx) enables developers needing OpenMP* offload to Intel GPUs. The OpenMP* 5.0, 5.1 GPU
 offload features in ifx are not available in ifort.
For now ifort continues to be our best-in-class Fortran compiler for customers not needing GPU offload support. 
The default compiler for the Microsoft Visual Studio* environment is ifort.

At the same time though with the 2024.0.0 release of the oneAPI toolkit, they now deprecated ifort, and it will be discontinued in October 2024: https://www.intel.com/content/www/us/en/docs/fortran-compiler/get-started-guide/2024-0/overview.html

So I assume that ifx has now catched up in performance/features, and it might make sense to enable it for future 2024 releases by default?

@boegel boegel added the change label Feb 27, 2024
@boegel boegel added this to the 4.x milestone Feb 27, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants