- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
the following code leads to an internal compiler error:
module ifc_openmp_workshare_bug implicit none type t real, pointer :: u(:,:) end type t contains subroutine sub (z, x, y) real, intent(out) :: z(:,:) type(t), intent(in) :: x type(t), intent(in) :: y !$omp parallel workshare z = x%u * y%u !$omp end parallel workshare end subroutine sub end module ifc_openmp_workshare_bug
% ifort -V -c -fopenmp ifort_omp.f90 Intel(R) Fortran Compiler XE for applications running on IA-32, Version 15.0.5.223 Build 20150805 Copyright (C) 1985-2015 Intel Corporation. All rights reserved. FOR NON-COMMERCIAL USE ONLY Intel(R) Fortran 15.0-1818 010101_13492 catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occurred in a Software Problem Report. Note: File and line given may not be explicit cause of this error. compilation aborted for ifort_omp.f90 (code 1)
Thanks,
Harald
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Kevin - This was repaired in 16.0 under tracking id DPD200370580.
Harald - thanks for your report, especially the nice compact example.
The fix was not ported back to the 15.0 stream, but there is a workaround if you're not able to upgrade.
Change this line:
z = x%u * y%u
to this:
z(:,:) = x%u(:,:) * y%u(:,:)
Thanks --
--Lorri
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for reporting this internal error. It appears we already have a fix in our latest 16.0 compiler. I we see whether I can track down any past internal tracking id associated with an explicit fix.
$ ifort -V Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 16.0.0.109 Build 20150815 Copyright (C) 1985-2015 Intel Corporation. All rights reserved. $ ifort -c -qopenmp u596039.f90 $
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Kevin - This was repaired in 16.0 under tracking id DPD200370580.
Harald - thanks for your report, especially the nice compact example.
The fix was not ported back to the 15.0 stream, but there is a workaround if you're not able to upgrade.
Change this line:
z = x%u * y%u
to this:
z(:,:) = x%u(:,:) * y%u(:,:)
Thanks --
--Lorri
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you Lorri!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Lorri,
thanks for pointing out a quick workaround. By playing around I found that it can even be shortened to
z(:,:) = x%u * y%u
to avoid the ICE. :-)
Harald
Lorri Menard (Intel) wrote:
Kevin - This was repaired in 16.0 under tracking id DPD200370580.
Harald - thanks for your report, especially the nice compact example.
The fix was not ported back to the 15.0 stream, but there is a workaround if you're not able to upgrade.Change this line:
z = x%u * y%u
to this:
z(:,:) = x%u(:,:) * y%u(:,:)
Thanks --
--Lorri
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page