C OpenMP中具有列表并行化的嵌套for循环

C OpenMP中具有列表并行化的嵌套for循环,c,list,for-loop,openmp,C,List,For Loop,Openmp,有没有办法并行化下面的代码,而不需要将列表复制到数组中? 我已经尝试了以下方法,但由于列表并行化,它不起作用。我需要列表中的关键区域吗 Node* it; int x,y; #pragma omp parallel for private(x,y,it) for(x=0; x<cube_size;x++){ for(y=0; y<cube_size; y++){ for(it = *(graph1[x][y]); it != NULL; it = it->

有没有办法并行化下面的代码,而不需要将列表复制到数组中? 我已经尝试了以下方法,但由于列表并行化,它不起作用。我需要列表中的关键区域吗

Node* it;
int x,y;
#pragma omp parallel for private(x,y,it)
for(x=0; x<cube_size;x++){
    for(y=0; y<cube_size; y++){
        for(it = *(graph1[x][y]); it != NULL; it = it->next){
           if(it->status == ALIVE){
               if(it->counter < 2 || it->counter > 4){
                 it->status = DEAD;
               }
           }else{
              if(it->counter == 2 || it->counter == 3){
                 it->status = ALIVE;
              }
           }
           it->counter = 0;                        
        }
    }
}
节点*it;
int x,y;
#pragma omp并行专用(x,y,it)
对于(x=0;xstatus==ALIVE){
如果(它->计数器<2 |它->计数器>4){
它->状态=死亡;
}
}否则{
如果(它->计数器==2 | |它->计数器==3){
它->状态=活动;
}
}
它->计数器=0;
}
}
}

您必须告诉我们有关这些列表布局的更多信息。这些是每个
graph1
条目的独立列表吗?最好是发布a。是的,它们是每个graph1条目的独立列表。这个例子很难,因为代码比这个多得多。是的,写一个好的问题很难,但要得到一个好的答案是必要的。例如,你甚至缺乏任何描述你所说的“它不起作用”是什么意思。你是对的。我的意思是根本没有加速。并行化外部循环的逻辑是否正确(私有迭代器)?如果没有具体的性能数据,我们无法正确地讨论性能问题,包括关于如何测量这些数据的清晰描述、系统描述以及最终的测试。