#pragma omp parallel
#pragma omp firstprivate(lishishuju_sign)
while(gen_result == GEN_NEXT)
{
memset(vectorsign,0,sizeof(vectorsign));
for(i=20;i<shujugs;i++)
{for(s=0,c=0;c<9;c++)
{if(lishishuju_sign[i][vector[c]]==1)s=s+pow(2,8-c);
continue;
};
vectorsign[s]++;
#pragma omp flush(maxvector)
if(vectorsign[s]>maxvector)
{maxvector=vectorsign[s];
itemp=s;
for(c=0;c<9;c++)
{j=itemp&1;
k=itemp>>1;
itemp=k;
bestcinver[c]=j;
};
bestcAdr[0]=vector[0];
bestcAdr[1]=vector[1];
bestcAdr[2]=vector[2];
bestcAdr[3]=vector[3];
bestcAdr[4]=vector[4];
bestcAdr[5]=vector[5];
bestcAdr[6]=vector[6];
bestcAdr[7]=vector[7];
bestcAdr[8]=vector[8];
bestc[0]=bestcinver[8];
bestc[1]=bestcinver[7];
bestc[2]=bestcinver[6];
bestc[3]=bestcinver[5];
bestc[4]=bestcinver[4];
bestc[5]=bestcinver[3];
bestc[6]=bestcinver[2];
bestc[7]=bestcinver[1];
bestc[8]=bestcinver[0];
};
};
結果總是不對,應該怎么設定OMP?
uj5u.com熱心網友回復:
沒有并行計算的代碼是這樣的,想并行計算加快速度。while(gen_result == GEN_NEXT)
{
memset(vectorsign,0,sizeof(vectorsign));
for(i=20;i<shujugs;i++)
{for(s=0,c=0;c<9;c++)
{if(lishishuju_sign[i][vector[c]]==1)s=s+pow(2,8-c);
continue;
};
vectorsign[s]++;
if(vectorsign[s]>maxvector)
{maxvector=vectorsign[s];
itemp=s;
for(c=0;c<9;c++)
{j=itemp&1;
k=itemp>>1;
itemp=k;
bestcinver[c]=j;
};
bestcAdr[0]=vector[0];
bestcAdr[1]=vector[1];
bestcAdr[2]=vector[2];
bestcAdr[3]=vector[3];
bestcAdr[4]=vector[4];
bestcAdr[5]=vector[5];
bestcAdr[6]=vector[6];
bestcAdr[7]=vector[7];
bestcAdr[8]=vector[8];
bestc[0]=bestcinver[8];
bestc[1]=bestcinver[7];
bestc[2]=bestcinver[6];
bestc[3]=bestcinver[5];
bestc[4]=bestcinver[4];
bestc[5]=bestcinver[3];
bestc[6]=bestcinver[2];
bestc[7]=bestcinver[1];
bestc[8]=bestcinver[0];
};
};
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/256026.html
標籤:工具平臺和程序庫
上一篇:有沒有人做過ime?
下一篇:求助!將MFC專案移植到Qt上
