Optimization 康威';生命的游戏:openMP优化

Optimization 康威';生命的游戏:openMP优化,optimization,openmp,schedule,conways-game-of-life,false-sharing,Optimization,Openmp,Schedule,Conways Game Of Life,False Sharing,我正在尝试优化我的openMP代码,以适应康威的生活游戏。 我的主要问题可能与虚假分享有关。 这是我的密码: 这是我们班“mondo”的一种方法。m是我的方案,r是行数,c是列数,我使用的是环形方案 void evolution() { mondo tmp(r, c); #pragma omp parallel for schedule(static) for(int i=0; i<r; i++) { unsigned a=(i+1)%r, b=

我正在尝试优化我的openMP代码,以适应康威的生活游戏。 我的主要问题可能与虚假分享有关。 这是我的密码: 这是我们班“mondo”的一种方法。m是我的方案,r是行数,c是列数,我使用的是环形方案

void evolution() {
    mondo tmp(r, c);
    #pragma omp parallel for schedule(static)
    for(int i=0; i<r; i++) {  
        unsigned a=(i+1)%r, b=(i-1+r)%r;        
        for(int j=0; j<c; j++)  {                                 
            unsigned d=(j+1)%c, e=(j-1+c)%c;     
            int v=(m[a][j]+m[b][j]+m[a][d]+m[b][d]+m[a][e]+m[b][e]+m[i][d]+m[i][e]);             
            if(m[i][j]==1) {              
                if(v<2 || v>3)
                   tmp.m[i][j]=0;
                else  
                    tmp.m[i][j]=1;              
            } 
            else {
                if(v==3)
                   tmp.m[i][j]=1;
                else
                   tmp.m[i][j]=0;
            }                          
        }
    }    
    (*this)=tmp;
}
void evolution(){
蒙多tmp(r,c);
#计划的pragma omp并行(静态)

对于(int i=0;iYou可能希望修改缩进以使代码更具可读性。完成。希望现在更好。您可以提供有关问题的更多详细信息吗?例如,它比没有OpenMP慢吗?r和c的大小是多少?r和c大约为4000。该程序比没有OpenMP慢,但加速比不令人满意。