Fortran Coder

标题: OpenMP并行采用reduction,出现stack overflow问题 [打印本页]

作者: MatrixVector    时间: 2015-11-9 19:06
标题: OpenMP并行采用reduction,出现stack overflow问题
利用OpenMP进行并行运算2个矩阵P与Q的值,并利用reduction进行归约处理;
先尝试了一个简单算例,计算没有问题;但是移至到另外一个大程序中时,出现了stack overflow问题。
以下是简单算例的程序部分:
[Fortran] 纯文本查看 复制代码
    ! 主程序段
    matrix = 0.d0
    vector = 0.d0
    !$omp parallel private(i, tmp_vector) &
    !$omp          reduction(+:matrix, vector)
    !$omp do              
            do i =1, 48
            call gemm(a, b, matrix, 'n', 'n', 1.d0, 1.d0)
            call gemm(a, c, tmp_vector)
            call gemm(b, tmp_vector, vector, 'n', 'n', 1.d0, 1.d0)
            end do
   !$omp end do
    !$omp end parallel


在上述简单算例中运行正确,但移至到大型程序中出现以下问题:


Stack overflow 1.png (14.84 KB, 下载次数: 242)

Stack overflow 1.png

stack overflow.PNG (4.99 KB, 下载次数: 236)

stack overflow.PNG

作者: vvt    时间: 2015-11-9 20:09
OpenMP 可以一定程度解决效率问题。但并不能解决数组太大内存(堆栈)不足的问题。
作者: 深流水静水流深    时间: 2016-3-22 09:15
好像并行编程有 OpenMP 和MPI两种,本人很想学习,但苦于资料比较少
作者: 深流水静水流深    时间: 2016-3-22 09:17
找到了

呵呵,http://fcode.cn/resource_ebook-list-1.html
慢慢啃,入手并行编程!





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