Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
39 Views

catastrophic error with coarray and openmp

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
    Highlighted
    Black Belt Retired Employee
    39 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
    Highlighted
    New Contributor II
    39 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
    Highlighted
    Black Belt Retired Employee
    39 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
    Highlighted
    Beginner
    39 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
    Highlighted
    Beginner
    39 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
    Highlighted
    Moderator
    39 Views

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

     

    0 Kudos
    Highlighted
    Moderator
    39 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
    Highlighted
    Beginner
    39 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