From 32de30f7c45158d8a3413d5e8a6a872bcfe15b16 Mon Sep 17 00:00:00 2001 From: Giovanni Bussi <giovanni.bussi@gmail.com> Date: Wed, 21 Aug 2013 12:11:41 +0200 Subject: [PATCH] Replacements with enhanced Communicator class I replaced everywhere it made sense the new Communicator class syntax. This commit is not strictly necessary, but provides examples of the simpler syntax so I think should be merged --- src/bias/MetaD.cpp | 8 +++---- src/cltools/Driver.cpp | 10 ++++----- src/colvar/CoordinationBase.cpp | 4 ++-- src/colvar/PathMSDBase.cpp | 4 ++-- src/core/Atoms.cpp | 6 +++--- src/core/GREX.cpp | 24 ++++++++++----------- src/multicolvar/StoreCentralAtomsVessel.cpp | 2 +- src/multicolvar/StoreColvarVessel.cpp | 2 +- src/tools/BiasRepresentation.cpp | 4 ++-- src/tools/OFile.cpp | 2 +- src/vesselbase/ActionWithVessel.cpp | 2 +- 11 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/bias/MetaD.cpp b/src/bias/MetaD.cpp index b241afa03..4e4602fce 100644 --- a/src/bias/MetaD.cpp +++ b/src/bias/MetaD.cpp @@ -651,8 +651,8 @@ void MetaD::addGaussian(const Gaussian& hill) BiasGrid_->getPoint(ineigh,xx); allbias[i]=evaluateGaussian(xx,hill,&allder[ncv*i]); } - comm.Sum(&allbias[0],allbias.size()); - comm.Sum(&allder[0],allder.size()); + comm.Sum(allbias); + comm.Sum(allder); for(unsigned i=0;i<neighbors.size();++i){ unsigned ineigh=neighbors[i]; for(unsigned j=0;j<ncv;++j){der[j]=allder[ncv*i+j];} @@ -719,8 +719,8 @@ double MetaD::getBiasAndDerivatives(const vector<double>& cv, double* der) //finite difference test //finiteDifferenceGaussian(cv,hills_[i]); } - comm.Sum(&bias,1); - if(der) comm.Sum(&der[0],getNumberOfArguments()); + comm.Sum(bias); + if(der) comm.Sum(der,getNumberOfArguments()); }else{ if(der){ vector<double> vder(getNumberOfArguments()); diff --git a/src/cltools/Driver.cpp b/src/cltools/Driver.cpp index e23712919..9d586582a 100644 --- a/src/cltools/Driver.cpp +++ b/src/cltools/Driver.cpp @@ -380,8 +380,8 @@ int Driver<real>::main(FILE* in,FILE*out,Communicator& pc){ start[i+1]=start[i]+loc[i]; } loc[npe-1]=natoms-start[npe-1]; - intracomm.Bcast(&loc[0],npe,0); - intracomm.Bcast(&start[0],npe,0); + intracomm.Bcast(loc,0); + intracomm.Bcast(start,0); pd_nlocal=loc[intracomm.Get_rank()]; pd_start=start[intracomm.Get_rank()]; if(intracomm.Get_rank()==0){ @@ -516,8 +516,8 @@ int Driver<real>::main(FILE* in,FILE*out,Communicator& pc){ p.cmd("calc"); // this is necessary as only processor zero is adding to the virial: - intracomm.Bcast(&virial[0],9,0); - if(debug_pd) intracomm.Sum(&forces[0],natoms*3); + intracomm.Bcast(virial,0); + if(debug_pd) intracomm.Sum(forces); if(debug_dd){ for(int i=0;i<dd_nlocal;i++){ forces[3*dd_gatindex[i]+0]=dd_forces[3*i+0]; @@ -525,7 +525,7 @@ int Driver<real>::main(FILE* in,FILE*out,Communicator& pc){ forces[3*dd_gatindex[i]+2]=dd_forces[3*i+2]; } dd_forces.assign(3*natoms,0.0); - intracomm.Sum(&forces[0],natoms*3); + intracomm.Sum(forces); } if(debug_grex &&step%grex_stride==0){ p.cmd("GREX savePositions"); diff --git a/src/colvar/CoordinationBase.cpp b/src/colvar/CoordinationBase.cpp index 3da9a230b..680e112c2 100644 --- a/src/colvar/CoordinationBase.cpp +++ b/src/colvar/CoordinationBase.cpp @@ -163,9 +163,9 @@ void CoordinationBase::calculate() } if(!serial){ - comm.Sum(&ncoord,1); + comm.Sum(ncoord); if(!deriv.empty()) comm.Sum(&deriv[0][0],3*deriv.size()); - comm.Sum(&virial[0][0],9); + comm.Sum(virial); } for(unsigned i=0;i<deriv.size();++i) setAtomsDerivatives(i,deriv[i]); diff --git a/src/colvar/PathMSDBase.cpp b/src/colvar/PathMSDBase.cpp index e741bc582..7913eddda 100644 --- a/src/colvar/PathMSDBase.cpp +++ b/src/colvar/PathMSDBase.cpp @@ -137,8 +137,8 @@ void PathMSDBase::calculate(){ for(unsigned j=0;j<nat;j++) tmp_derivs2[i*nat+j]=tmp_derivs[j]; } // reduce over all processors - comm.Sum(&tmp_distances[0],imgVec.size()); - comm.Sum(&tmp_derivs2[0][0],3*imgVec.size()*nat); + comm.Sum(tmp_distances); + comm.Sum(tmp_derivs2); // assign imgVec[i].distance and imgVec[i].distder for(unsigned i=0;i<imgVec.size();i++){ imgVec[i].distance=tmp_distances[i]; diff --git a/src/core/Atoms.cpp b/src/core/Atoms.cpp index ce3ec1455..4fc70c706 100644 --- a/src/core/Atoms.cpp +++ b/src/core/Atoms.cpp @@ -172,7 +172,7 @@ void Atoms::share(const std::set<AtomNumber>& unique){ vector<int> displ(n); vector<int> counts5(n); vector<int> displ5(n); - dd.Allgather(&count,1,&counts[0],1); + dd.Allgather(count,counts); displ[0]=0; for(int i=1;i<n;++i) displ[i]=displ[i-1]+counts[i-1]; for(int i=0;i<n;++i) counts5[i]=counts[i]*5; @@ -199,7 +199,7 @@ void Atoms::wait(){ dataCanBeSet=false; // Everything should be set by this stage if(dd){ - dd.Bcast(&box[0][0],9,0); + dd.Bcast(box,0); } pbc.setBox(box); @@ -224,7 +224,7 @@ void Atoms::wait(){ charges[dd.indexToBeReceived[i]] =dd.positionsToBeReceived[5*i+4]; } } - if(collectEnergy) dd.Sum(&energy,1); + if(collectEnergy) dd.Sum(energy); } } diff --git a/src/core/GREX.cpp b/src/core/GREX.cpp index 081f5ddce..1e0250e13 100644 --- a/src/core/GREX.cpp +++ b/src/core/GREX.cpp @@ -72,13 +72,13 @@ void GREX::cmd(const string&key,void*val){ std::string s; // note that for PEs!=root this is automatically 0 (comm defaults to MPI_COMM_SELF) myreplica=intercomm.Get_rank(); - intracomm.Sum(&myreplica,1); + intracomm.Sum(myreplica); Tools::convert(myreplica,s); plumedMain.setSuffix("."+s); }else if(key=="prepare"){ CHECK_INIT(initialized,key); if(intracomm.Get_rank()==0) return; - intracomm.Bcast(&partner,1,0); + intracomm.Bcast(partner,0); calculate(); }else if(key=="setPartner"){ CHECK_INIT(initialized,key); @@ -89,7 +89,7 @@ void GREX::cmd(const string&key,void*val){ }else if(key=="calculate"){ CHECK_INIT(initialized,key); if(intracomm.Get_rank()!=0) return; - intracomm.Bcast(&partner,1,0); + intracomm.Bcast(partner,0); calculate(); }else if(key=="getLocalDeltaBias"){ CHECK_INIT(initialized,key); @@ -102,14 +102,14 @@ void GREX::cmd(const string&key,void*val){ double x; atoms.MD2double(val,x); localUNow=x*(atoms.getMDUnits().getEnergy()/atoms.getUnits().getEnergy()); - intracomm.Sum(&localUNow,1); + intracomm.Sum(localUNow); }else if(key=="cacheLocalUSwap"){ CHECK_INIT(initialized,key); CHECK_NULL(val,key); double x; atoms.MD2double(val,x); localUSwap=x*(atoms.getMDUnits().getEnergy()/atoms.getUnits().getEnergy()); - intracomm.Sum(&localUSwap,1); + intracomm.Sum(localUSwap); }else if(key=="getForeignDeltaBias"){ CHECK_INIT(initialized,key); CHECK_NULL(val,key); @@ -120,7 +120,7 @@ void GREX::cmd(const string&key,void*val){ if(intracomm.Get_rank()!=0) return; allDeltaBias.assign(intercomm.Get_size(),0.0); allDeltaBias[intercomm.Get_rank()]=localDeltaBias; - intercomm.Sum(&allDeltaBias[0],intercomm.Get_size()); + intercomm.Sum(allDeltaBias); }else{ // multi word commands std::vector<std::string> words=Tools::getWords(key); @@ -158,11 +158,11 @@ void GREX::calculate(){ vector<char> rbuf(nn); localDeltaBias=-plumedMain.getBias(); if(intracomm.Get_rank()==0){ - Communicator::Request req=intercomm.Isend(&buffer.c_str()[0],nn,partner,1066); - intercomm.Recv(&rbuf[0],rbuf.size(),partner,1066); + Communicator::Request req=intercomm.Isend(buffer,partner,1066); + intercomm.Recv(rbuf,partner,1066); req.wait(); } - intracomm.Bcast(&rbuf[0],nn,0); + intracomm.Bcast(rbuf,0); istringstream i(string(&rbuf[0],rbuf.size())); atoms.readBinary(i); plumedMain.setExchangeStep(true); @@ -172,12 +172,12 @@ void GREX::calculate(){ localDeltaBias+=plumedMain.getBias(); localDeltaBias+=localUSwap-localUNow; if(intracomm.Get_rank()==0){ - Communicator::Request req=intercomm.Isend(&localDeltaBias,1,partner,1067); - intercomm.Recv(&foreignDeltaBias,1,partner,1067); + Communicator::Request req=intercomm.Isend(localDeltaBias,partner,1067); + intercomm.Recv(foreignDeltaBias,partner,1067); req.wait(); //fprintf(stderr,">>> %d %d %20.12f %20.12f %20.12f %20.12f\n",intercomm.Get_rank(),partner,localDeltaBias,foreignDeltaBias,localUSwap,localUNow); } - intracomm.Bcast(&foreignDeltaBias,1,0); + intracomm.Bcast(foreignDeltaBias,0); } } diff --git a/src/multicolvar/StoreCentralAtomsVessel.cpp b/src/multicolvar/StoreCentralAtomsVessel.cpp index d34f14cd8..833d008f0 100644 --- a/src/multicolvar/StoreCentralAtomsVessel.cpp +++ b/src/multicolvar/StoreCentralAtomsVessel.cpp @@ -79,7 +79,7 @@ bool StoreCentralAtomsVessel::calculate(){ } void StoreCentralAtomsVessel::finish(){ - comm.Sum( &active_atoms[0], active_atoms.size() ); + comm.Sum(active_atoms); } Vector StoreCentralAtomsVessel::getPosition( const unsigned& ivec ) const { diff --git a/src/multicolvar/StoreColvarVessel.cpp b/src/multicolvar/StoreColvarVessel.cpp index 4ea5301c2..893252a2c 100644 --- a/src/multicolvar/StoreColvarVessel.cpp +++ b/src/multicolvar/StoreColvarVessel.cpp @@ -98,7 +98,7 @@ bool StoreColvarVessel::calculate(){ } void StoreColvarVessel::finish(){ - comm.Sum( &active_atoms[0], active_atoms.size() ); + comm.Sum(active_atoms); performCalculationUsingAllValues(); } diff --git a/src/tools/BiasRepresentation.cpp b/src/tools/BiasRepresentation.cpp index 66c3033cb..25d35ee9b 100644 --- a/src/tools/BiasRepresentation.cpp +++ b/src/tools/BiasRepresentation.cpp @@ -189,8 +189,8 @@ void BiasRepresentation::pushKernel( IFile *ifile ){ // a pointer of double as it was in old gaussian for(int j=0;j<ndim;++j){ allder[ndim*i+j]=tmpder[j];tmpder[j]=0.;} } - mycomm.Sum(&allbias[0],allbias.size()); - mycomm.Sum(&allder[0],allder.size()); + mycomm.Sum(allbias); + mycomm.Sum(allder); for(unsigned i=0;i<neighbors.size();++i){ unsigned ineigh=neighbors[i]; for(unsigned j=0;j<ndim;++j){der[j]=allder[ndim*i+j];} diff --git a/src/tools/OFile.cpp b/src/tools/OFile.cpp index 7820ee202..f61d89d3a 100644 --- a/src/tools/OFile.cpp +++ b/src/tools/OFile.cpp @@ -42,7 +42,7 @@ size_t OFile::llwrite(const char*ptr,size_t s){ if(!fp) plumed_merror("writing on uninitilized File"); r=fwrite(ptr,1,s,fp); } - if(comm) comm->Bcast(&r,1,0); + if(comm) comm->Bcast(r,0); return r; } diff --git a/src/vesselbase/ActionWithVessel.cpp b/src/vesselbase/ActionWithVessel.cpp index b9b3436f3..6ed5e7a2a 100644 --- a/src/vesselbase/ActionWithVessel.cpp +++ b/src/vesselbase/ActionWithVessel.cpp @@ -227,7 +227,7 @@ bool ActionWithVessel::calculateAllVessels(){ void ActionWithVessel::finishComputations(){ // MPI Gather everything - if(!serial && buffer.size()>0) comm.Sum( &buffer[0],buffer.size() ); + if(!serial && buffer.size()>0) comm.Sum( buffer); // Set the final value of the function for(unsigned j=0;j<functions.size();++j) functions[j]->finish(); -- GitLab