Внутренняя ошибка компилятора (gfc_omp_clause_default_ctor) в gfortran, с OpenMP и FFTW

Я пытаюсь скомпилировать код, в котором есть вложенный цикл, где я использую OpenMp для первого цикла. Программа очень похожа на ту, что в этом выпуске, включая использование FFTW. Ошибка:

 DO indiceY=1+2*window,ny-2*window
 ^
 internal compiler error: in gfc_omp_clause_default_ctor, at fortran/trans-openmp.c:481
 Please submit a full bug report,
 with preprocessed source if appropriate.
 See <file:///usr/share/doc/gcc-5/README.Bugs> for instructions.

Кусок кода, в котором назначена проблема:

call dfftw_init_threads(iret)
!nthreads = omp_get_num_thread()
call dfftw_plan_with_nthreads(nthreads)
!***********************************
CALL dfftw_plan_dft_3d(plan, filter_window, filter_window, filter_window, OUTPUT_FFTW, OUTPUT_FFTW, FFTW_FORWARD, FFTW_ESTIMATE)
!$OMP PARALLEL DO DEFAULT(SHARED) SHARED(matrix_in, window, filter_window, plan, nx, ny, nz) &
!$OMP PRIVATE(indiceX, indiceY, indiceZ, OUTPUT_FFTW, matrix_out)
DO indiceZ=1+2*window,nz-2*window
    DO indiceY=1+2*window,ny-2*window
        DO indiceX=1+2*window,nx-2*window
            OUTPUT_FFTW = ABS(matrix_in(indiceX-2*window:indiceX, indiceY-window:indiceY+window,& 
                                                                 indiceZ-window:indiceZ+window) - &
                              matrix_in(indiceX:indiceX+2*window, indiceY-window:indiceY+window,&
                                                                 indiceZ-window:indiceZ+window) )
            CALL dfftw_execute_dft(plan, OUTPUT_FFTW, OUTPUT_FFTW)
            matrix_outX(indiceX, indiceY, indiceZ) = SUM(ABS(OUTPUT_FFTW))
        END DO
    END DO
END DO
!$OMP END PARALLEL DO
CALL dfftw_destroy_plan(plan)
!***********************************
CALL dfftw_cleanup_threads()

Во-первых, я подозревал, что это была проблема с памятью (RAM), но я уменьшил размер 3D-матрицы в расчете, и проблема не исчезла. Я уже посмотрел, если это ошибка, о которой сообщают (и действительно ошибка, но это, кажется, не является).

Я также подозревал, что это была проблема с версией Gfortran, поэтому я установил gfortran-5, но ошибка сохранилась (internal compiler error: in gfc_omp_clause_default_ctor, at fortran/trans-openmp.c:481Я использую 64-битную Ubuntu 14.04 (3.13.0-119-generic).

0 ответов

Другие вопросы по тегам