Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

ICE with OpenMP workshare construct

Harald
Beginner
873 Views

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

 

0 Kudos
1 Solution
Lorri_M_Intel
Employee
873 Views

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

View solution in original post

0 Kudos
4 Replies
Kevin_D_Intel
Employee
873 Views

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
$

 

0 Kudos
Lorri_M_Intel
Employee
874 Views

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

0 Kudos
Kevin_D_Intel
Employee
873 Views

Thank you Lorri!

0 Kudos
Harald
Beginner
873 Views

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

0 Kudos
Reply