相关疑难解决方法(0)

理解openmp中的collapse子句

我遇到了一个具有崩溃条款的OpenMP代码,这对我来说是新的.我试图理解这意味着什么,但我认为我没有完全理解它的含义; 我发现的一个定义是:

COLLAPSE:指定嵌套循环中应将多少循环折叠到一个大的迭代空间中,并根据schedule子句进行划分.在所有关联循环中顺序执行迭代确定了折叠迭代空间中迭代的顺序.

我以为我理解了这意味着什么,所以我尝试了以下简单的程序:

int i, j;
#pragma omp parallel for num_threads(2) private(j)
for (i = 0; i < 4; i++)
    for (j = 0; j <= i; j++)
        printf("%d %d %d\n", i, j, omp_get_thread_num());
Run Code Online (Sandbox Code Playgroud)

哪个产生了

0 0 0
1 0 0
1 1 0
2 0 0
2 1 0
2 2 1
3 0 1
3 1 1
3 2 1
3 3 1
Run Code Online (Sandbox Code Playgroud)

然后我添加了该collapse(2)条款.我希望在前两列中得到相同的结果,但现在在最后一列中有相同数量的0's 1' 和's'.但是我得到了

0 0 0
1 0 …
Run Code Online (Sandbox Code Playgroud)

c openmp

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

三角阵列

我想在C中构造一个2d数组,其中每行将具有不同数量的元素.具体来说,我想构建一个三角形7x6阵列.为了节省内存,我想避免存储零,如下例所示.

                               1 0 0 0 0 0 0
                               1 1 0 0 0 0 0
                                     ...
                               1 1 1 1 1 1 1   
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c arrays

0
推荐指数
1
解决办法
5437
查看次数

标签 统计

c ×2

arrays ×1

openmp ×1