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

catastrophic error

madstrolle
Beginner
575 Views

Hello

For some reason I get the error message

BandStruc.f90(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.
program BandStruc

when trying to compile my program (BandStruc.f90, attached to this post). The error began when writing the sub routine below

subroutine DivideBZ
implicit none
double precision, dimension(4,3,8**Ndiv) :: IBZ1,IBZ2,IBZ3

IBZ1 = DoDivide(reshape((/X,W,U,G/),(/4,3/)),Ndiv);
IBZ2 = DoDivide(reshape((/L,W,U,G/),(/4,3/)),Ndiv);
IBZ3 = DoDivide(reshape((/L,W,U,G/),(/4,3/)),Ndiv);
call WriteMat(IBZ1(:,:,2))
end subroutine

The strange thing is that i only get the error message when the line "IBZ3 = ..." is present - thus the program runs fine with only the "IBZ1 = ..." and "IBZ2 = ..." lines (or actually any two of the above). It does not help to assemble the arrays into one (instead of three), and it does not matter what data I put in (G,W,L,W and U are vectors). For some reason a test program which only includes this subroutine do not produce any errors... I compile my program using the line

ifort BandStruc.f90 -L(path to lib/32) -I(path to include/32 (Path to lib/32)libmkl_solver_sequential.a -Wl,--start-group (Path to lib/32)/libmkl_intel.a (Path to lib/32)libmkl_sequential.a (Path to lib/32)libmkl_core.a (Path to lib/32)/libmkl_lapack95.a (Path to lib 32)/libmkl_blas95.a -I/opt/intel (Path to lib/32)/mkl_lapack -Wl,--end-group -lpthread -p gnufor2.f90

I am wondering whether this is my fault or an error with the compiler (as the error message states)...? Any help or comments will be much appreciated!

My system is AMD Turion x2, Ubuntu 9.04 (32 bit), intel Fortran 11.1 + mkl installed from the intel Fortran installation file.

- Mads Trolle

0 Kudos
7 Replies
madstrolle
Beginner
575 Views

For some reason this problem is solved by introducing a temporary array, which is allocated before and deallocated after each call to the DoDivide function. Thus my subroutine is now

subroutine DivideBZ
implicit none
double precision, dimension(4,3,8**Ndiv) :: IBZ1,IBZ2,IBZ3
double precision, allocatable :: IBZt(:,:,:)

allocate(IBZt(4,3,8**Ndiv))
IBZt = DoDivide(reshape((/X,W,U,G/),(/4,3/)),Ndiv);
IBZ1 = IBZt
deallocate(IBZt)
allocate(IBZt(4,3,8**Ndiv))
IBZt = DoDivide(reshape((/L,W,U,G/),(/4,3/)),Ndiv);
IBZ2 = IBZt
deallocate(IBZt)
allocate(IBZt(4,3,8**Ndiv))
IBZt = DoDivide(reshape((/L,W,U,G/),(/4,3/)),Ndiv);
IBZ3 = IBZt
deallocate(IBZt)

call WriteMat(IBZ1(:,:,2))
end subroutine

0 Kudos
madstrolle
Beginner
575 Views

Still a problem -

this time the catastrophic error ocurs simply if a add an empty line between two subroutines (or add any more program lines to my program)... This is quite frustrating, and i can only conclude that the intel Fortran compiler is too unstable to use on my specific platform.

- Regards

Mads Trolle

0 Kudos
Steven_L_Intel1
Employee
575 Views
I'll take a look at this on Monday.
0 Kudos
Steven_L_Intel1
Employee
575 Views
I can reproduce the problem and find that it is sensitive to seemingly irrelevant code changes in the source. I have escalated to development as issue DPD200151927 and will let you know of any progress. We apologize for the inconvenience.
0 Kudos
madstrolle
Beginner
575 Views
Any news?
0 Kudos
Steven_L_Intel1
Employee
575 Views
This problem has been fixed in our sources. I expect the fix to appear in Update 6, scheduled for April.
0 Kudos
Steven_L_Intel1
Employee
575 Views
This is indeed fixed in update 6.
0 Kudos
Reply