Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran OpenMP中的嵌套循环优化_Fortran_Openmp - Fatal编程技术网

Fortran OpenMP中的嵌套循环优化

Fortran OpenMP中的嵌套循环优化,fortran,openmp,Fortran,Openmp,一旦应用openMP,我就无法获得正确的输出结果,它在哪里得到正确的结果 !$OMP PARALLEL DO SHARED(outmtresult,inpa,inpb,dynindexlist) PRIVATE(i,j) REDUCTION(+:outcountb) do i=1,size1 do j=1, size1 outcountb = outcountb + 1 outmtresult(j) = tan(inpa(j) + inpb(j)) + alpha1 +

一旦应用openMP,我就无法获得正确的输出结果,它在哪里得到正确的结果

!$OMP PARALLEL DO SHARED(outmtresult,inpa,inpb,dynindexlist) PRIVATE(i,j) REDUCTION(+:outcountb)

do i=1,size1  
  do j=1, size1
    outcountb = outcountb + 1
    outmtresult(j) = tan(inpa(j) + inpb(j)) + alpha1 + dynindexlist(i) 
  enddo
enddo

!$OMP END PARALLEL DO

只要交换循环,一切都会好起来:

!$OMP PARALLEL DO SHARED(outmtresult,inpa,inpb,dynindexlist) PRIVATE(i,j) REDUCTION(+:outcountb)

do j=1,size1        ! <-- Swap i and
  do i=1, size1     !       j here
    outcountb = outcountb + 1
    outmtresult(j) = tan(inpa(j) + inpb(j)) + alpha1 + dynindexlist(i) 
  enddo
enddo

!$OMP END PARALLEL DO
$OMP并行DO共享(outmtresult、inpa、inpb、dynindexlist)私有(i、j)缩减(+:outcountb)

do j=1,尺寸1!包括完全可编译的示例,它应该打印什么以及它应该打印什么。我不知道你的示例是关于什么的。我指的是可编译的示例,一些我们可以理解并且可以尝试的工作代码。我不知道你试图用这些代码实现什么。请在阅读后扩展您的问题!不要重复你的问题——这有什么区别?