что-то совсем запутался. у меня есть двумерный массив, чётные и нечётные элементы к-рого нужно обрабатывать разными способами. как всё это нормально расписать? ps:делать if'ы на четные-нечётные значения внутри — не вариант.
Program mainCore
use iso_c_binding
integer,parameter::gIDMax=2
integer,parameter::iMax=3
integer::i,j,k
integer*2,target,dimension(1:iMax*2,1:gIDMax)::a=0
#ifdef _OPENMP
write(*,"(a)") "OpenMP is supported!"
#endif
!$OMP PARALLEL DO PRIVATE (i,j,k) COLLAPSE(2)
DO i = 1,gIDMax
DO j=1,iMax*2,2
a(i,j)=100*i+j
ENDDO
DO k=2,iMax*2,2
a(i,k)=100*i+k
ENDDO
ENDDO
!$OMP END PARALLEL DO
DO i = 1,gIDMax
DO j=1,iMax*2
print*,a(i,j)
ENDDO
ENDDO
endProgram mainCore
!gfortran -cpp -fopenmp -Wall -o mainCore.bin mainCore.f95
вот этот код вместо 101 102 103 104 ... , выдаёт 101 0 102 0 ..., т.е. второй внутренний цикл вообще не отрабатывает. как это правильно надо делать? пробовал отделять их через OMP SECTION, но тогда компилятор ругается «not enough DO loops for collapsed !$OMP DO at (1)»