小编cho*_*aco的帖子

为什么并行版本较慢?

我想在矩阵上应用特定的过滤器。(从[0] [0]到结束)

A [i] [j] = 0.2 *(A [i] [j] + A [i + 1] [j] + A [i-1] [j] + A [i] [j + 1] + A [i] [j-1])

如果[i],[j]例如是[0] [0](矩阵中的第一个值),则我在左侧和上侧使用零作为值。

我试图理解为什么我的代码的并行版本比顺序版本慢。

当我使用多个线程进行计算时,我使用的事实是沿对角线有独立的工作。我故意将矩阵扩展两行和两个cols(用零填充),以简化过滤器的计算。

我还尝试了各种尺寸的矩阵(最大7000x7000)。

我的问题:http : //15418.courses.cs.cmu.edu/fall2017/lecture/progbasics/slide_032

顺序版本:

for (int i = 1; i < r-1; i++) {
    for (int j = 1; j < c-1; j++) {
        arr[i][j] = 0.2f * (arr[i][j] + arr[i][j - 1] + arr[i - 1][j] + arr[i][j + 1] + arr[i + …
Run Code Online (Sandbox Code Playgroud)

c++ parallel-processing openmp

2
推荐指数
1
解决办法
74
查看次数

标签 统计

c++ ×1

openmp ×1

parallel-processing ×1