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 on community.intel.com are migrating to the new Altera Community and are read-only. For urgent support needs during this transition, please visit the FPGA Design Resources page or contact an Altera Authorized Distributor.

OpenMP compile error

reinaldogarcia
Beginner
1,953 Views

When I recompile my OpenMP code in the new version 11 I get this error:

1>: 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.
1>in file C:\MODELS\SHAL2D_Xi_NG_Original\SHAL2D_HYDRO.F90, line 285, column 10

The piece of code where the error happens is this:

!$OMP PARALLEL PRIVATE(U_AM) ! this is line 285
!$OMP DO
DO K = 1, NNODOS
U_AM = 1./ AM(K)
UN(K) = UM(K) * U_AM
VN(K) = VM(K) * U_AM
ETAN(K) = EM(K) * U_AM
ENDDO ! K
!$OMP END DO

!$OMP END PARALLEL

The program was compiling fine in version 10.1. I checked the project properties and options are the same as in version 10.1.

Can someone help?

Thanks,

Reinaldo

0 Kudos
15 Replies
Steven_L_Intel1
Employee
1,953 Views

Can you attach a small but complete sample that gets the error? If not, please submit a problem report to Intel Premier Support and provide the program there.

0 Kudos
reinaldogarcia
Beginner
1,953 Views

Can you attach a small but complete sample that gets the error? If not, please submit a problem report to Intel Premier Support and provide the program there.

Steve:

This is the subroutine where the error happens.

R

SUBROUTINE

FEM_SWE(NNODOS, NELEM, UN, VN, ETAN, U, V, ETA, &

AM, DTT, NODO, X, Y, AREA, H, T, EPSILON, XNMAN, MANNINGN)

! IN:

! NNODOS, NELEM, UM, VM, EM, U, V, ETA,

! DTT, NODO, X, Y, AREA, ETAN, H, AM, EPSILON, XNMAN

! LOCALS:

! SU, SV, SE

! UM, VM, EM

! OUT:

! UN, VN, ETAN

USE DFPORT

USE IFPORT

USE OMP_LIB

USE GLOBALSHAL2D

IMPLICIT NONE

INTEGER(4), INTENT(IN) :: NNODOS, NELEM

INTEGER(4), INTENT(IN) :: NODO(:,:)

REAL(8), INTENT(IN) :: DTT, T

REAL(8), INTENT(IN) :: EPSILON, XNMAN

REAL(8), INTENT(IN) :: AM(:)

REAL(8), INTENT(IN) :: X(:),Y(:)

REAL(8), INTENT(IN) :: AREA(:)

REAL(8), INTENT(INOUT) :: U(:), V(:), ETA(:), H(:)

REAL(8), INTENT(INOUT) :: UN(:),VN(:), ETAN(:)

REAL(8), INTENT(IN) :: MANNINGN(:)

REAL(8) :: UM(NNODOS), VM(NNODOS), EM(NNODOS)

REAL(8) :: SU(3), SV(3), SE(3) ! VECTORES ELEMENTALES PARA U, V, ETA

REAL(8) :: UME, DIAG, XNMAN2, DT24, AREA12, G6

REAL(8) :: B1, B2, B3, C1, C2, C3, E1, E2, E3

REAL(8) :: U1, U2, U3, V1, V2, V3, H1, H2, H3

REAL(8) :: UBAR, VBAR, HBAR, ARG, BDT, CDT

REAL(8) :: FACT, XFRIC_0, XFRIC_1, XFRIC_2, YFRIC_0, YFRIC_1, YFRIC_2

REAL(8) :: BIUI, CIUI, BIVI, CIVI, BIEI, CIEI, BIHI, CIHI, BUCV

REAL(8) :: G, U_AM

REAL(8) :: CV, GAMMAM, VISCDIN, ALFA1, BETA1, TY, ALFA2, BETA2

REAL(8) :: KF, SY, SVS, STD

real(8) :: rainfall, area3, rain, evap

INTEGER(4) :: I1, I2, I3, K, IM, IR, J, test

UM(1:NNODOS) = 0.

VM(1:NNODOS) = 0.

EM(1:NNODOS) = 0.

! SELECTIVE LUMPING

UME = 1. - EPSILON

DIAG = 2. * (EPSILON + 1.)

!XNMAN2 = XNMAN**2. ! RGM

DT24 = DTT/24.

G6 = 1.6333333 ! G / 6.

IF (IRAIN .EQ. 1) THEN

!determine rainfall and evaporation for time t!

call rainevapsource (t, rain, evap)

rainfall = (rain-evap)/1000./86400. ! daily (rainfall-evaporation) (mm/day) / (1000mm/m) / 86400 (s/day)

ELSE

RAINFALL = 0.

ENDIF

!$OMP PARALLEL PRIVATE(XNMAN2,I1,I2,I3,B1,B2,B3,C1,C2,C3,E1,E2,E3,AREA12,area3,UBAR,VBAR,HBAR,SU,SV,SE,IM,IR,ARG,FACT,XFRIC_0,XFRIC_1,XFRIC_2,YFRIC_0,YFRIC_1,YFRIC_2,BIUI,CIUI,BIEI,U1,U2,U3,BDT,BIVI,CIVI,CIEI,V1,V2,V3,CDT,H1,H2,H3,BIHI,CIHI,BUCV)

!$OMP DO REDUCTION(+:UM,VM,EM)

DO K = 1, NELEM

XNMAN2 = MANNINGN(K)**2.

I1 = NODO(K,1)

I2 = NODO(K,2)

I3 = NODO(K,3)

B1 = Y(I2) - Y(I3)

B2 = Y(I3) - Y(I1)

B3 = Y(I1) - Y(I2)

C1 = X(I3) - X(I2)

C2 = X(I1) - X(I3)

C3 = X(I2) - X(I1)

! FRICTION TERM

E1 = ETA(I1) + H(I1)

E2 = ETA(I2) + H(I2)

E3 = ETA(I3) + H(I3)

AREA12 = AREA(K) / 12.

area3 = area(k) /3.

UBAR = (U(I1) + U(I2) + U(I3)) / 3.

VBAR = (V(I1) + V(I2) + V(I3)) / 3.

HBAR = (E1 + E2 + E3) / 3.

!!!!!!!!!! ELIMINATE DRY ELEMENTS [du/dt] = F = 0 !!!!!!!!!

!!!!!!!!!! NG 03/22/07

!test =1

If((E1 <= 0.01 .and. E2 <= 0.01 .and. E3 <= 0.01)) THEN ! .AND. TEST .EQ.1) then

! VELOCIDAD U

SU(1) = ( 4*U(I1)) * AREA12

SU(2) = ( 4*U(I2)) * AREA12

SU(3) = ( 4*U(I3)) * AREA12

! VELOCIDAD V

SV(1) = ( 4*V(I1)) * AREA12

SV(2) = ( 4*V(I2)) * AREA12

SV(3) = ( 4*V(I3)) * AREA12

! ELEVACIN ETA

SE(1) = ( 4*ETA(I1)) * AREA12

SE(2) = ( 4*ETA(I2)) * AREA12

SE(3) = ( 4*ETA(I3)) * AREA12

DO IM = 1, 3 ! DISTRIBUYE A LOS NODOS LAS CONTRIBUCIONES DE ELEMENTO K

IR = NODO(K,IM)

UM(IR) = UM(IR) + SU(IM)

VM(IR) = VM(IR) + SV(IM)

EM(IR) = EM(IR) + SE(IM)

ENDDO ! IM

!!!!!!!! NG aadido 03/22/07 Aqui termina la subrutina que elimina los elementos secos del calculo hidrodinmico

else

ARG = UBAR**2 + VBAR**2

IF (HBAR .GT. 0.05 .AND. ARG .GE. 0.) THEN ! RGM

! ESTOS PARAMETROS SE DEFINEN EN LA TABLA 2 DE LA REFERENCIA

! O'BRIEN, J. & JULIEN, P.Y.

! LABORATORY ANALYSIS OF MUDFLOW PROPERTIES

! J. HYD. ENG. ASCE. VOL. 114. NO.8 , AUG. 1988

!FACT = XNMAN2 * 9.81 * SQRT(ARG) / (HBAR**(4./3.))

G = 9.81

! CV = 0.20 ! VOLUMETRIC SEDIMENT CONCENTRATION

! GAMMAM = 1200. ! SPECIFIC WEIGHT

! ALFA1 = 3.02E-4 !5E-2

! BETA1 = 33.1 !0.1

! ALFA2 = 1.72E-3/98. ! 4.

! BETA2 = 29.5 !0.1

! VISCDIN = ALFA1 * EXP(BETA1 * CV) ! DINAMIC VISCOSITY

! TY = ALFA2 * EXP(BETA2 * CV) ! YIELD STRESS

! KF = 25.0 ! RESISTENCE PARAMETER = 24 FOR LAMINAR FLOW

! SY = G * TY / ( GAMMAM * HBAR) ! YIELD SLOPE

! SVS = G * KF * VISCDIN / ( 8. * GAMMAM * HBAR**2.) ! VISCOUS SLOPE

FACT = XNMAN2 * G * SQRT(ARG) / (HBAR**(4./3.)) ! TURBULENT DISPERSIVE SLOPE

!FACT = STD !+ SVS !OJO RGM

!SY = 0.0

ELSE

! WRITE(*,*) 'TIME K, HBAR, ARG = ', T, K, HBAR, ARG

FACT = 0.01

!SY = 0.0

ENDIF

FACT = FACT * AREA12

XFRIC_0 = FACT * ( 2*U(I1) + U(I2) + U(I3))! + SY * AREA12

XFRIC_1 = FACT * ( U(I1) + 2*U(I2) + U(I3))! + SY * AREA12

XFRIC_2 = FACT * ( U(I1) + U(I2) + 2*U(I3))! + SY * AREA12

YFRIC_0 = FACT * ( 2*V(I1) + V(I2) + V(I3))! + SY * AREA12

YFRIC_1 = FACT * ( V(I1) + 2*V(I2) + V(I3))! + SY * AREA12

YFRIC_2 = FACT * ( V(I1) + V(I2) + 2*V(I3))! + SY * AREA12

!FACT = AREA12 * G * XNMAN2* 4.

!XFRIC_0 = FACT *U(I1) * SQRT(U(I1)**2+V(I1)**2)/(ETA(I1)+H(I1))**(4./3.)

!XFRIC_1 = FACT *U(I2) * SQRT(U(I2)**2+V(I2)**2)/(ETA(I2)+H(I2))**(4./3.)

!XFRIC_2 = FACT *U(I3) * SQRT(U(I3)**2+V(I3)**2)/(ETA(I3)+H(I3))**(4./3.)

!YFRIC_0 = FACT *V(I1) * SQRT(U(I1)**2+V(I1)**2)/(ETA(I1)+H(I1))**(4./3.)

!YFRIC_1 = FACT *V(I2) * SQRT(U(I2)**2+V(I2)**2)/(ETA(I2)+H(I2))**(4./3.)

!YFRIC_2 = FACT *V(I3) * SQRT(U(I3)**2+V(I3)**2)/(ETA(I3)+H(I3))**(4./3.)

! VELOCIDAD U

BIUI = B1*UN(I1) + B2*UN(I2) + B3*UN(I3)

CIUI = C1*UN(I1) + C2*UN(I2) + C3*UN(I3)

BIEI = (B1*ETAN(I1) + B2*ETAN(I2) + B3*ETAN(I3))*G6

U1 = UN(I1)*BIUI + VN(I1)*CIUI

U2 = UN(I2)*BIUI + VN(I2)*CIUI

U3 = UN(I3)*BIUI + VN(I3)*CIUI

BDT = DTT * BIEI

SU(1) = ( DIAG*U(I1)+ UME*U(I2)+ UME*U(I3)) * AREA12 - DT24 * (2*U1 + U2 + U3)- BDT -DTT *XFRIC_0

SU(2) = ( UME*U(I1)+ DIAG*U(I2)+ UME*U(I3)) * AREA12 - DT24 * ( U1 + 2*U2 + U3)- BDT -DTT *XFRIC_1

SU(3) = ( UME*U(I1)+ UME*U(I2)+ DIAG*U(I3)) * AREA12 - DT24 * ( U1 + U2 + 2*U3)- BDT -DTT *XFRIC_2

! VELOCIDAD V

BIVI = B1*VN(I1) + B2*VN(I2) + B3*VN(I3)

CIVI = C1*VN(I1) + C2*VN(I2) + C3*VN(I3)

CIEI = (C1*ETAN(I1) + C2*ETAN(I2) + C3*ETAN(I3)) * G6

V1 = UN(I1)*BIVI + VN(I1)*CIVI

V2 = UN(I2)*BIVI + VN(I2)*CIVI

V3 = UN(I3)*BIVI + VN(I3)*CIVI

CDT = DTT * CIEI

SV(1) = ( DIAG*V(I1)+ UME*V(I2) + UME*V(I3)) * AREA12 - DT24 * (2*V1 + V2 + V3)- CDT-DTT *YFRIC_0

SV(2) = ( UME*V(I1)+ DIAG*V(I2) + UME*V(I3)) * AREA12 - DT24 * ( V1 + 2*V2 + V3)- CDT-DTT *YFRIC_1

SV(3) = ( UME*V(I1)+ UME*V(I2) + DIAG*V(I3)) * AREA12 - DT24 * ( V1 + V2 + 2*V3)- CDT-DTT *YFRIC_2

! ELEVACIN ETA

H1 = ETAN(I1) + H(I1)

H2 = ETAN(I2) + H(I2)

H3 = ETAN(I3) + H(I3)

BIHI = B1*H1 + B2*H2 + B3*H3

CIHI = C1*H1 + C2*H2 + C3*H3

BUCV = BIUI + CIVI

E1 = UN(I1)*BIHI + VN(I1)*CIHI + H1*BUCV

E2 = UN(I2)*BIHI + VN(I2)*CIHI + H2*BUCV

E3 = UN(I3)*BIHI + VN(I3)*CIHI + H3*BUCV

SE(1) = (DIAG*ETA(I1) + UME*ETA(I2) + UME*ETA(I3)) * AREA12- DT24 * (2*E1 + E2 + E3) + rainfall*area3*dtt

SE(2) = ( UME*ETA(I1) + DIAG*ETA(I2) + UME*ETA(I3)) * AREA12 - DT24 * ( E1 + 2*E2 + E3) + rainfall*area3*dtt

SE(3) = ( UME*ETA(I1) + UME*ETA(I2) + DIAG*ETA(I3)) * AREA12 - DT24 * ( E1 + E2 + 2*E3) + rainfall*area3*dtt

DO IM = 1, 3 ! DISTRIBUYE A LOS NODOS LAS CONTRIBUCIONES DE ELEMENTO K

IR = NODO(K,IM)

UM(IR) = UM(IR) + SU(IM)

VM(IR) = VM(IR) + SV(IM)

EM(IR) = EM(IR) + SE(IM)

ENDDO ! IM

endif !NG aadido 03/12/07

ENDDO ! K (LAZO SOBRE TODOS LOS ELEMENTOS)

!$OMP END DO

!$OMP END PARALLEL

! $OMP PARALLEL PRIVATE(U_AM)

! $OMP DO

DO K = 1, NNODOS

U_AM = 1./ AM(K)

UN(K) = UM(K) * U_AM

VN(K) = VM(K) * U_AM

ETAN(K) = EM(K) * U_AM

ENDDO ! K

! $OMP END DO

! $OMP END PARALLEL

END SUBROUTINE FEM_SWE

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

So far, I am unable to reproduce the problem. You did not supply the source of the module GLOBALSHAL2D so I made up my own with a declaration of IRAIN. What is the exact compile command line used?

Hint: When posting code here, please use the "Pencil" tool in the toolbar for best formatting.

0 Kudos
reinaldogarcia
Beginner
1,953 Views
[cpp]MODULE GLOBALSHAL2D
   INTEGER(4) :: VERSIONNUMBER, IRAIN, ISED, IXSEC, IPROFILE, NMSTEPS, IVARDT, IINITIAL
   INTEGER(4) :: IODAT, IOTBA, IOFED, IOIFL, IOUVH, IOUVHE, IOOUT, IOOUTE, IOHHH, IOHHHE, IODVT     
   INTEGER(4) ::  IOREP, IOXSEC, IOXSECE, IOPRF, IOPRFI, IOPRFE, IOUVHB, IOVTP, IOTXT, IOSED, IORET
   INTEGER(4) :: IOOPENB, IOCLSDB, IOBC
   INTEGER(4) :: IOPLT
   REAL(8) :: INITIALTIME
END MODULE GLOBALSHAL2D[/cpp]

So far, I am unable to reproduce the problem. You did not supply the source of the module GLOBALSHAL2D so I made up my own with a declaration of IRAIN. What is the exact compile command line used?

Hint: When posting code here, please use the "Pencil" tool in the toolbar for best formatting.

OK. THanks. THe GLOBALSHAL2D is irrelevant. You can comment it out as well as the if block tha uses IRAIN. I did it and the problem persists. Anyway it is included above.

The command line is:

/nologo /O3 /Qparallel /Qopenmp /warn:interfaces /iface:cvf /module:"Release/" /object:"Release/" /libs:qwin /winapp /4Yportlib /c

Reinaldo

0 Kudos
reinaldogarcia
Beginner
1,953 Views
Quoting - reinaldo.garcia
[cpp]MODULE GLOBALSHAL2D
   INTEGER(4) :: VERSIONNUMBER, IRAIN, ISED, IXSEC, IPROFILE, NMSTEPS, IVARDT, IINITIAL
   INTEGER(4) :: IODAT, IOTBA, IOFED, IOIFL, IOUVH, IOUVHE, IOOUT, IOOUTE, IOHHH, IOHHHE, IODVT     
   INTEGER(4) ::  IOREP, IOXSEC, IOXSECE, IOPRF, IOPRFI, IOPRFE, IOUVHB, IOVTP, IOTXT, IOSED, IORET
   INTEGER(4) :: IOOPENB, IOCLSDB, IOBC
   INTEGER(4) :: IOPLT
   REAL(8) :: INITIALTIME
END MODULE GLOBALSHAL2D[/cpp]

OK. THanks. THe GLOBALSHAL2D is irrelevant. You can comment it out as well as the if block tha uses IRAIN. I did it and the problem persists. Anyway it is included above.

The command line is:

/nologo /O3 /Qparallel /Qopenmp /warn:interfaces /iface:cvf /module:"Release/" /object:"Release/" /libs:qwin /winapp /4Yportlib /c

Reinaldo

Steve:

Maybe this helps.Bellow is the full message that I get when compiling the file. Note that lines 76 appears to have been processed before the error message.

Thanks again,

Reinaldo

Compiling with Intel Fortran 11.0.061 [IA-32]...
ifort /nologo /O3 /Qparallel /Qopt-prefetch=1 /Qopenmp /warn:interfaces /iface:cvf /module:"Release/" /object:"Release/" /libs:qwin /winapp /4Yportlib /c /Qvc8 /Qlocation,link,"C:Program FilesMicrosoft Visual Studio 8VCbin" "C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90"
C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90(78): (col. 8) remark: OpenMP DEFINED LOOP WAS PARALLELIZED.
C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90(76): (col. 7) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90(55): (col. 4) remark: FUSED LOOP WAS VECTORIZED0_1631

: 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.
in file C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90, line 76, column 7

.
compilation aborted for C:MODELSSHAL2D_XiSHAL2D_HYDRO.F90 (code 3)


SHAL2D - 1 error(s), 0 warning(s)

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

Thanks - I can reproduce it now. Removing /iface:cvf eliminates the error. Do you really need that? Also, I see you have both /parallel and /Qopenmp. I'd suggest removing /parallel.

0 Kudos
reinaldogarcia
Beginner
1,953 Views

Thanks - I can reproduce it now. Removing /iface:cvf eliminates the error. Do you really need that? Also, I see you have both /parallel and /Qopenmp. I'd suggest removing /parallel.

Steve:

Thanks for finding this. I need /iface:cvf for a graphic library I use. Is there a workaround? Was there a change from version 10.1?

Reinaodo

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

Not a deliberate change. You have encountered a bug - anytime you get an error of the nature you did it's a compiler bug.

My preferred solution would be to write a module with a series of interface blocks for the graphics routines that require CVF conventions, adding the directive:

!DEC$ ATTRIBUTES STDCALL, REFERENCE, MIXED_STR_LEN_ARG, DECORATE, ALIAS:"ROUTINENAME" :: routinename

The name in the ALIAS needs to be uppercase.

If you do this and then USE the module, you won't need to compile the sources with /iface:cvf

0 Kudos
reinaldogarcia
Beginner
1,953 Views

Not a deliberate change. You have encountered a bug - anytime you get an error of the nature you did it's a compiler bug.

My preferred solution would be to write a module with a series of interface blocks for the graphics routines that require CVF conventions, adding the directive:

!DEC$ ATTRIBUTES STDCALL, REFERENCE, MIXED_STR_LEN_ARG, DECORATE, ALIAS:"ROUTINENAME" :: routinename

The name in the ALIAS needs to be uppercase.

If you do this and then USE the module, you won't need to compile the sources with /iface:cvf

Steve:

Thanks! I will try that.

Reinaldo

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

This has been reported as issue DPD200110137.

0 Kudos
reinaldogarcia
Beginner
1,953 Views

This has been reported as issue DPD200110137.


Steve, thanks.

0 Kudos
reinaldogarcia
Beginner
1,953 Views

This has been reported as issue DPD200110137.

Steve:

Quick question. Is there a way I could follow up this issue? I would like to know when would it be resolved in a future compiler update.

Thnaks,

Reinaldo

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

You could open an issue with Intel Premier Support and reference the above report number. I would do it for you but I can't find you with the email address you have for the forum. I do see a fiu.edu address that looks as if it may be yours - is it? (Please don't post your actual email address here.)

0 Kudos
reinaldogarcia
Beginner
1,953 Views

Steve:

I had reported the issue there, but I think they will appreciate your input. My email is [deleted]

Thanks,


Reinaldo

0 Kudos
Steven_L_Intel1
Employee
1,953 Views

Ok, great. I found the issue and will make sure you are notified of updates.

0 Kudos
Reply