I used 11.0.083 to compile my program and following happened:
bi_cgstab.for(491): (col. 7) remark: OpenMP DEFINED LOOP WAS PARALLELIZED.
bi_cgstab.for(487): (col. 7) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
bi_cgstab.for(43): (col. 7) remark: OpenMP DEFINED LOOP WAS PARALLELIZED.
bi_cgstab.for(40): (col. 7) remark: OpenMP DEFINED REGION WAS PARALLELIZED.
bi_cgstab.for(87): (col. 7) remark: OpenMP DEFINED LOOP WAS PARALLELIZED.
: catastrophic error: **Internal compiler error: internal abort** Please report this error along with the circumstances in which it occured in a Software Problem Report. Note: File and line given may not be explicit cause of this error.
compilation aborted for bi_cgstab.for (code 3)
I decided to try finding the cause of this error before reporting it to Intel. I realized that it helped to remove the line with FIRSTPRIVATE from the following code:
!dec$ if defined (_PARALLELIZATION_) !$omp parallel if ( enableOpenMP .AND. omp_solvers ) num_threads ( threads ) default ( shared ) !$omp& private ( i, j, k, l, P1, P2, P3 ) !$omp& firstprivate ( alpha_SIP ) !$omp do schedule(dynamic,3) !dec$ end if do i=2,nx-1 ...
I have already had problem with FIRSTPRIVATE used for variables whose values are just used and not changed within the parallel region, see e.g. here (this was in Windows). alpha_SIP is real*8, initialized before the parallel region (which is not nested - it is called by the main level thread), and it is not changed inside the region.
Should there be anything wrong about using FIRSTPRIVATE for variables which in fact do not need it, because DEFAULT(SHARED) is used?