Fortran Coder

标题: 关于大数组openmp并行的问题 [打印本页]

作者: 千手斑    时间: 2019-4-7 22:04
标题: 关于大数组openmp并行的问题
向各位大神求助,我现在想要并行做一些矩阵的计算,发现只要矩阵稍微一大就无法运行了,不知道有人遇到过这种情况吗,该如何解决呢?这个代码很简单,串行完全没问题,而并行的时候,矩阵规模很小时没有问题,规模一大比如现在的2000就无法运行了。
      program main
      use omp_lib
      integer::i,j
      integer,parameter::nec0=2000
      common/matr/ an(nec0,nec0)

      write(6,*) 'hello word!'
      !$OMP PARALLEL PRIVATE(i,j)
      !$OMP DO
      do i=1,nec0
        do j=1,nec0
            an(i,j)=float(i+j)
        enddo
      enddo
      !$OMP END DO
      !$OMP END PARALLEL

      open(3,file='an.txt',status='unknown')
      do i=1,nec0
        write(3,*) (an(i,j),j=1,nec0)
      enddo
      close(3)

      stop
      end


作者: 千手斑    时间: 2019-4-7 22:34
[Fortran] 纯文本查看 复制代码
      program main
      use omp_lib
      integer::i,j
      integer,parameter::nec0=2000
      common/matr/ an(nec0,nec0)
      
      write(6,*) 'hello word!'
      !$OMP PARALLEL PRIVATE(i,j)
      !$OMP DO
      do i=1,nec0
        do j=1,nec0
            an(i,j)=float(i+j)
        enddo
      enddo
      !$OMP END DO
      !$OMP END PARALLEL
      
      open(3,file='an.txt',status='unknown')
      do i=1,nec0
        write(3,*) (an(i,j),j=1,nec0)
      enddo
      close(3)
      
      stop
      end

作者: li913    时间: 2019-4-8 12:06
给错误提示,对于找错来说,这是最重要的,比你的代码更重要。
猜测可能是堆栈问题。
作者: 千手斑    时间: 2019-4-8 12:43
li913 发表于 2019-4-8 12:06
给错误提示,对于找错来说,这是最重要的,比你的代码更重要。
猜测可能是堆栈问题。 ...

会弹出对话框,test.exe已停止工作
作者: li913    时间: 2019-4-9 17:59
我这里运行没问题。你把整个项目打包上传。
作者: 千手斑    时间: 2019-4-11 20:18
li913 发表于 2019-4-9 17:59
我这里运行没问题。你把整个项目打包上传。

这个在vs里运行没问题,在simply fortran里运行会出现上述问题,是哪里需要设置吗?
作者: li913    时间: 2019-4-12 10:58
不要用小于10的通道号;屏幕输出用星号,不用6.





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2