【发布时间】:2016-12-25 12:51:34
【问题描述】:
在this answer 之后,我实际上有更复杂的代码,包含三个循环:
!$omp parallel
!$omp do
do i=1,4 ! can be parallelized
...
do k=1,1000 !to be executed sequentially
...
do j=1,4 ! can be parallelized
call job(i,j)
除了i=4,外层循环很快完成。所以我想在最里面的循环上启动线程,但在每个i-iteration 中按顺序保留k-loop。事实上,k 循环遍历随机数生成器的变化状态,因此无法并行化。
如何仅折叠 i 和 j 循环?我怀疑ordered 子句在这里很有用,但我担心它会再次影响内部循环,我仍然不确定语法。
【问题讨论】:
标签: multithreading fortran openmp