1
0
mirror of https://github.com/paboyle/Grid.git synced 2025-06-12 20:27:06 +01:00

parallel_for elimination -> thread_loop

This commit is contained in:
paboyle
2018-01-28 01:01:14 +00:00
parent 9472b02771
commit 70e276e1ab
21 changed files with 269 additions and 300 deletions

View File

@ -128,9 +128,9 @@ public:
for(int i=0;i<nbasis;i++){
blockProject(iProj,subspace[i],subspace);
eProj=Zero();
parallel_for(int ss=0;ss<CoarseGrid->oSites();ss++){
thread_loop( (int ss=0;ss<CoarseGrid->oSites();ss++),{
eProj[ss](i)=CComplex(1.0);
}
});
eProj=eProj - iProj;
std::cout<<GridLogMessage<<"Orthog check error "<<i<<" " << norm2(eProj)<<std::endl;
}
@ -272,7 +272,7 @@ public:
SimpleCompressor<siteVector> compressor;
Stencil.HaloExchange(in,compressor);
parallel_for(int ss=0;ss<Grid()->oSites();ss++){
thread_loop( (int ss=0;ss<Grid()->oSites();ss++),{
siteVector res = Zero();
siteVector nbr;
int ptype;
@ -291,7 +291,7 @@ public:
res = res + A[point][ss]*nbr;
}
vstream(out[ss],res);
}
});
return norm2(out);
};
@ -384,14 +384,14 @@ public:
Subspace.ProjectToSubspace(oProj,oblock);
// blockProject(iProj,iblock,Subspace.subspace);
// blockProject(oProj,oblock,Subspace.subspace);
parallel_for(int ss=0;ss<Grid()->oSites();ss++){
thread_loop( (int ss=0;ss<Grid()->oSites();ss++),{
for(int j=0;j<nbasis;j++){
if( disp!= 0 ) {
A[p][ss](j,i) = oProj[ss](j);
}
A[self_stencil][ss](j,i) = A[self_stencil][ss](j,i) + iProj[ss](j);
}
}
});
}
}

View File

@ -55,11 +55,11 @@ void basisRotate(std::vector<Field> &basis,Eigen::MatrixXd& Qt,int j0, int j1, i
typedef typename Field::vector_object vobj;
GridBase* grid = basis[0].Grid();
parallel_region
thread_region
{
std::vector < vobj > B(Nm); // Thread private
parallel_for_internal(int ss=0;ss < grid->oSites();ss++){
thread_loop_in_region( (int ss=0;ss < grid->oSites();ss++),{
for(int j=j0; j<j1; ++j) B[j]=0.;
for(int j=j0; j<j1; ++j){
@ -70,7 +70,7 @@ void basisRotate(std::vector<Field> &basis,Eigen::MatrixXd& Qt,int j0, int j1, i
for(int j=j0; j<j1; ++j){
basis[j][ss] = B[j];
}
}
});
}
}
@ -82,13 +82,13 @@ void basisRotateJ(Field &result,std::vector<Field> &basis,Eigen::MatrixXd& Qt,in
GridBase* grid = basis[0].Grid();
result.Checkerboard() = basis[0].Checkerboard();
parallel_for(int ss=0;ss < grid->oSites();ss++){
thread_loop( (int ss=0;ss < grid->oSites();ss++),{
vobj B = Zero();
for(int k=k0; k<k1; ++k){
B +=Qt(j,k) * basis[k][ss];
}
result[ss] = B;
}
});
}
template<class Field>