Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29064 Discussions

Issues with OpenMP 5.x support with ifx 2024.1

GD_HiPERiSM
Beginner
994 Views

Intel ifx 2024.1 has problems with OpenMP 5.x support I have worked my way through all the OpenMP examples in the OpenMP 5.2.2 Examples document and find 30+ cases where ifx 2024.1 fails. One such case is attached. Several cases out of this collection issue a compiler message showing failure and as that the message be reported to Intel.  The full output of ifx -v is also attached. Has anyone else seen this?

0 Kudos
5 Replies
Ron_Green
Moderator
924 Views

Intel has not implemented all of OMP 5.2.  There is a web page listing what is support and not supported is HERE.

I'll take a look at your attachments to see if it's somethat that should work, given our currently supported features from OMP 5.2

 

0 Kudos
GD_HiPERiSM
Beginner
915 Views

Hi Ron,

Thanks for the response.

Please find attached a tar file of all the failed examples that ifx 2024.1 produced.

Top of each README shows what the ifx FOERTRAN compiler reported. Below that under the SOURCE title is the source code that produced the compiler report. The number in the README file is the example number in the Examples 5.2.2 (zip) file (chapter-by-chapter). In several cases the compiler failed and asked that the error be reported.

PS. Some failures were for OpenMP features prior to 5.x.

 

Best,

George

0 Kudos
Ron_Green
Moderator
894 Views

For this example I do see the problem with OMP_POLICY=DEFAULT

for policy MANDATORY, it does print a good descriptive message about sending offload to a bogus device number and abort.  Expected behavior and not a problem

for policy DISABLED, it doesn't attempt to offload and reverts to CPU.  Expected, good behavior.

for policy DEFAULT.  not so good.  It should be smart enough to see we've toggled the bozo bit and tried to select a non-existent device and fail over to CPU gracefully.  But no, it throws the same behavior as MANDATORY:prints the 'hey bozo there is no such device' message and aborts.  the 

!omp$ target 

directive probably starts up the OMP RT offload layer before it processes the device clause.  Just a guess.

 

In fairness though, there is a warning

Warning: OMP_TARGET_OFFLOAD NOT supported by VER.      201611

          If OMP_TARGET_OFFLOAD is set, it will be ignored.

 

it is checking for OPENMP_VERSION 201811 or greater, which we do not claim to be.  I will have to check on this, perhaps our version string is out of date. 

 

I'll bring this sample to our next OpenMP team meeting for discussion.  

 

0 Kudos
GD_HiPERiSM
Beginner
889 Views

Hi Ron,

Thanks for the analysis. Please send the corrected (working) source when you are done.

Also, please look through the 30+ other examples I submitted and issue your opinion/corrections.

Good to be talking with an expert.

FYI: I am working on learning how to use ifx and OpenMP to offload to an NVIDIA GPU device (if that is supported)

Best,

George

0 Kudos
TobiasK
Moderator
794 Views

hi @GD_HiPERiSM 
currently ifx is only able to offload to Intel GPUs.

0 Kudos
Reply