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

catastrophic error with coarray and openmp

Zuodong_Y_
Novice
592 Views

Compile following code with -qopenmp -coarray causes  010101_14921 catastrophic error on Version 18.0.1.163 Build 20171018. Any reason for it? Thanks!

module M_A
	implicit none
	integer :: ica
	type t_A
		integer :: map(10)
	contains
		procedure :: do_something
	end type
	complex(8) :: B(20,10)
  • contains subroutine do_something(self) class(t_A) :: self
  • integer :: i,n self%map=[10:1:-1] do i=this_image(),10,num_images() !$OMP PARALLEL DO do n=1,20 B(n,self%map(i))=1d0 enddo !$OMP END PARALLEL DO enddo end subroutine end module program main use M_A implicit none type(t_A) :: tp
  • call tp%do_something() end program
  •  

    0 Kudos
    8 Replies
    Steve_Lionel
    Honored Contributor III
    592 Views

    Internal compiler error is always a compiler bug. It still fails on 19.1. Please report it through the Intel Online Service Center.

    0 Kudos
    JohnNichols
    Valued Contributor III
    591 Views

    Is it just my imagination or are there quite a few compiler bug errors in the last few months, I do not remember seeing so many in my scant years on this site. 

     

    0 Kudos
    Steve_Lionel
    Honored Contributor III
    592 Views

    It's not unusual in my experience. They do come in waves - most often when a school semester starts. Another wave sometimes occurs when a new major compiler version is released and a lot of people jump in to try it, though this has decreased over the years.

    0 Kudos
    Zuodong_Y_
    Novice
    592 Views

    I am not able to report the bug as I don't own license. Anyone help to report will be greatly appreciated. Thanks!

    0 Kudos
    Zuodong_Y_
    Novice
    592 Views

    I further simplify the code a little bit. The problem seems to be referring member of coarray derived type inside of type-bound procedure in OMP scope. For now, a possible way to get rid of this is don't use type-bound procedure in coarray.

    module debug
    	implicit none
    	type t_A
    		integer :: a
    	contains
    		procedure :: set
    	end type
    contains
    	subroutine set(self)
    		class(t_A) :: self
  • integer :: i !$OMP PARALLEL DO do i=1,10 write(*,*)self%a enddo !$OMP END PARALLEL DO end subroutine end module
  •  

    0 Kudos
    Barbara_P_Intel
    Moderator
    592 Views

    Thank you for simplifying the problem.  Let me check this out.

     

    0 Kudos
    Barbara_P_Intel
    Moderator
    592 Views

    The Intel Fortran compiler does not yet support polymorphic variables inside OpenMP parallel regions. That feature is part of OpenMP 5.0 and we haven't implemented that yet.

     

    0 Kudos
    Zuodong_Y_
    Novice
    592 Views

    I didn't know that. I used a lot of polymorphic variables inside of openmp before and it seems to be fine. Thanks for the information!

    0 Kudos
    Reply