Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C openMP-稠密矩阵的分段错误_C_Parallel Processing_Segmentation Fault_Openmp - Fatal编程技术网

C openMP-稠密矩阵的分段错误

C openMP-稠密矩阵的分段错误,c,parallel-processing,segmentation-fault,openmp,C,Parallel Processing,Segmentation Fault,Openmp,我正在尝试使用openMP在C中实现。在收集给定元素的邻域的循环中,我使用两个openMP指令,如下所示: #pragma omp parallel for shared(pos) private(i) for(i=0;i<n;i++){ if(M[n*element+i]==1 && element!=i){ #pragma omp critical neighbors[pos] = i; pos++; }

我正在尝试使用openMP在C中实现。在收集给定
元素的
邻域
的循环中,我使用两个openMP指令,如下所示:

#pragma omp parallel for shared(pos) private(i)
for(i=0;i<n;i++){
    if(M[n*element+i]==1 && element!=i){
        #pragma omp critical
        neighbors[pos] = i;
        pos++;
    }
}
共享(pos)专用(i)的pragma omp并行
对于(i=0;i什么是
邻域
?它有多少存储空间?
邻域
是一个最大维度为
n
的数组,因为每个
元素
最多可以有
n
邻域
pos
在该循环之前正确初始化为
0
?在没有OpenMP指令的情况下是否正常工作?Y是的,它被初始化为
0
,在顺序模式和稀疏矩阵中一切都很好。问题出现在更密集的矩阵中。我不确定这是否是SEGFULT的原因,但至少
临界
部分应该包含
pos
的赋值和增量。这意味着您需要在那里添加一些花括号…现在,我有点怀疑您提出的算法是否正确并行。
邻居
的最终内容将受到竞争条件的限制。这不是一个问题吗?什么是
邻居
?它有多少存储空间?
邻居
是一个具有最大dimen的数组sion=
n
,因为在此循环之前,每个
元素最多可以有
n
邻域
pos
正确初始化为
0
?在没有OpenMP指令的情况下,它能正常工作吗?是的,它被初始化为
0
,并且在顺序模式和稀疏矩阵中一切正常。问题m出现在更密集的矩阵中。我不确定这是否是SEGFULT的原因,但至少,
临界
部分应该包含
pos
的赋值和增量。这意味着您需要在那里添加一些花括号……现在,我有点怀疑您提出的算法是否正确并行lelized.
邻居的最终内容将取决于比赛条件。这不是一个问题吗?