小编Flo*_*ian的帖子

元素矩阵乘法的并行化

我目前正在优化我的部分代码,因此执行一些基准测试.

我有NxN-matrices AT和想要的elementwise它们相乘并将结果保存在A再次,即A = A*T.由于此代码不可并行化,我将分配扩展为

!$OMP PARALLEL DO
do j = 1, N
    do i = 1, N
        A(i,j) = T(i,j) * A(i,j)
    end do
end do
!$OMP END PARALLEL DO
Run Code Online (Sandbox Code Playgroud)

(http://pastebin.com/RGpwp2KZ上的完整最小工作示例.)

现在发生的奇怪事情是,无论线程数量(1到4之间),执行时间大致保持不变(+ - 10%),而CPU时间随着线程数量的增加而增加.这让我觉得所有的线程都做同样的工作(因为我在OpenMP上犯了一个错误)因此需要相同的时间.

但是在另一台计算机上(有96个CPU内核可用),程序的行为与预期一致:随着线程数的增加,执行时间减少.令人惊讶的是,CPU时间也减少了(最多约10个线程,然后再次上升).

可能是有不同版本OpenMPgfortran已安装.如果这可能是原因,那么如果你能告诉我如何找到它就会很棒.

fortran openmp elementwise-operations

3
推荐指数
1
解决办法
1707
查看次数

标签 统计

elementwise-operations ×1

fortran ×1

openmp ×1