- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear colleague,
I am encountering a problem with the IFORT 2018 compiler when I run the attached program (that has been extracted from a much more sophisticated project). The array named Kinetic is incorrectly filled. The bug is fixed if I simply add write(*,*) px,py before the calculation of Kinetic(k) in the loop. This is not the case with the 2016 version of the compiler and I absolutely not understand what has become wrong. Such behavior has been highlighted on Mac OS 10.13 and Linux platforms.
Many thanks for your help. Sincerely, O. Juillet.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The newer ifort (v17, 18 , 19) is too aggressively optimizing expressions away from your do loop. If you compile with -O0 or -O1 you get the expected result. Default is -O2. If I rewrite your do loop in a way that expressions only depending on the outer increment are calculated outside of the inner do loop, then also ifort 17, 18, 19 get it correct with default optimization:
DO kx=0,Dx-1 IF (kx<=ZDBx_Max) THEN lx=kx ELSE lx=kx-Dx END IF px=2.0_8*Pi*lx/Dx DO ky=0,Dy-1 IF (ky<=ZDBy_Max) THEN ly=ky ELSE ly=ky-Dy END IF py=2.0_8*Pi*ly/Dy ! print *, "k = ", k Kinetic(Dy*kx+ky+1)=-2.0_8*(tx*COS(px)+ty*COS(py))-4.0_8*t_Prime*COS(px)*COS(py) END DO END DO
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Julliet,
This issue is better to be reported via our Online Service Center at https://supporttickets.intel.com/ for further investigation.
Instructions on how to file a ticket are available here:
https://software.intel.com/en-us/articles/how-to-create-a-support-request-at-online-service-center
Thanks,
Xiaoping Duan
Intel Customer Support

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page