У меня есть три цикла Do по трем параметрам, и я хочу использовать openmp для ускорения вычислений, чтобы найти максимальное значение F как функцию от A и в конечном итоге построить F_max против A. Вот моя попытка, которая использует только несколько ядерв начале, но затем падает до одного.Если я пропущу критическое утверждение, оно не даст правильное максимальное значение.Как я могу заставить это работать должным образом?Любая помощь будет принята с благодарностью.
PROGRAM maxfunction
Do i=0, n1
A= i*1.0
Max=0
Do j=0, n2
B=j*1.0
Do k=0,n3
C=k*1.0
F=findF(A,B,C)
If( F > Max) Then
Max= F
endif
Enddo
Enddo
Enddo
ENDPROGRAM
FUNCTION findF(a,b,c)
findF= g1(a,b,c) + g2(a,b,c) +g3(a,b,c)
!returns value of findF
ENDFUNCTION findF
function g1(a,b,c)
!do stuff with a,b,c
!returns value g1
endfunction g1
function g2(a,b,c)
!do stuff with a,b,c
!returns value g2
endfunction g2
function g3(a,b,c)
!do stuff with a,b,c
!returns value g3
endfunction g3
Код имеет эту минимальную структуру.