#include <sfftw.h>#include <srfftw.h>#include "InfoStream.h"#include "Node.h"#include "PatchMap.h"#include "PatchMap.inl"#include "AtomMap.h"#include "ComputePme.h"#include "ComputePmeMgr.decl.h"#include "PmeRealSpace.h"#include "PmeKSpace.h"#include "ComputeNonbondedUtil.h"#include "PatchMgr.h"#include "Molecule.h"#include "ReductionMgr.h"#include "ComputeMgr.h"#include "ComputeMgr.decl.h"#include "Debug.h"#include "SimParameters.h"#include "WorkDistrib.h"#include "varsizemsg.h"#include "Random.h"#include "Priorities.h"#include "ComputePmeMgr.def.h"Go to the source code of this file.
Classes | |
| class | PmeAckMsg |
| class | PmeGridMsg |
| class | PmeTransMsg |
| class | PmeSharedTransMsg |
| class | PmeUntransMsg |
| class | PmeSharedUntransMsg |
| class | PmePencilMap |
| struct | PmePencilInitMsgData |
| class | PmePencilInitMsg |
| struct | LocalPmeInfo |
| struct | NodePmeInfo |
| struct | ijpair |
| class | ComputePmeMgr |
| class | NodePmeMgr |
| class | PmePencil< T > |
| class | PmeZPencil |
| class | PmeYPencil |
| class | PmeXPencil |
Defines | |
| #define | fftwf_malloc fftw_malloc |
| #define | fftwf_free fftw_free |
| #define | MIN_DEBUG_LEVEL 3 |
Functions | |
| void | generatePmePeList (int *peMap, int numPes) |
| void | generatePmePeList2 (int *gridPeMap, int numGridPes, int *transPeMap, int numTransPes) |
| int | isPmeProcessor (int p) |
Variables | |
| char * | pencilPMEProcessors |
|
|
Definition at line 14 of file ComputePme.C. Referenced by PmePencil< CBase_PmeZPencil >::~PmePencil(). |
|
|
Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000 by The Board of Trustees of the University of Illinois. All rights reserved. Definition at line 13 of file ComputePme.C. Referenced by PmeXPencil::fft_init(), PmeYPencil::fft_init(), and PmeZPencil::fft_init(). |
|
|
Definition at line 41 of file ComputePme.C. |
|
||||||||||||
|
Definition at line 180 of file ComputePme.C. References j, ResizeArray< Elem >::resize(), and SortableResizeArray< Elem >::sort(). 00180 {
00181 // decide which pes to use by bit reversal
00182 int i;
00183 int ncpus = CkNumPes();
00184
00185 // find next highest power of two
00186 int npow2 = 1; int nbits = 0;
00187 while ( npow2 < ncpus ) { npow2 *= 2; nbits += 1; }
00188
00189 // build bit reversal sequence
00190 SortableResizeArray<int> seq(ncpus);
00191 i = 0;
00192 for ( int icpu=0; icpu<ncpus; ++icpu ) {
00193 int ri;
00194 for ( ri = ncpus; ri >= ncpus; ++i ) {
00195 ri = 0;
00196 int pow2 = 1;
00197 int rpow2 = npow2 / 2;
00198 for ( int j=0; j<nbits; ++j ) {
00199 ri += rpow2 * ( ( i / pow2 ) % 2 );
00200 pow2 *= 2; rpow2 /= 2;
00201 }
00202 }
00203 seq[icpu] = ri;
00204 }
00205
00206 // extract and sort PME locations
00207 for ( i=0; i<numPes; ++i ) {
00208 seq[i] = seq[ncpus - numPes + i];
00209 }
00210 seq.resize(numPes);
00211 seq.sort();
00212
00213 for ( i=0; i<numPes; ++i )
00214 peMap[i] = seq[i];
00215
00216 //peMap[0] = 0;
00217 }
|
|
||||||||||||||||||||
|
Definition at line 220 of file ComputePme.C. References j, ResizeArray< Elem >::resize(), and SortableResizeArray< Elem >::sort(). Referenced by ComputePmeMgr::initialize(). 00220 {
00221 // decide which pes to use by bit reversal
00222 int i;
00223 int ncpus = CkNumPes();
00224
00225 // find next highest power of two
00226 int npow2 = 1; int nbits = 0;
00227 while ( npow2 < ncpus ) { npow2 *= 2; nbits += 1; }
00228
00229 // build bit reversal sequence
00230 SortableResizeArray<int> seq(ncpus);
00231 SortableResizeArray<int> seq2(ncpus);
00232 i = 0;
00233 for ( int icpu=0; icpu<ncpus; ++icpu ) {
00234 int ri;
00235 for ( ri = ncpus; ri >= ncpus; ++i ) {
00236 ri = 0;
00237 int pow2 = 1;
00238 int rpow2 = npow2 / 2;
00239 for ( int j=0; j<nbits; ++j ) {
00240 ri += rpow2 * ( ( i / pow2 ) % 2 );
00241 pow2 *= 2; rpow2 /= 2;
00242 }
00243 }
00244 seq[icpu] = ri;
00245 seq2[icpu] = ri;
00246 }
00247
00248 // extract and sort PME locations
00249 for ( i=0; i<numGridPes; ++i ) {
00250 seq[i] = seq[ncpus - numGridPes + i];
00251 }
00252 seq.resize(numGridPes);
00253 seq.sort();
00254 int firstTransPe = ncpus - numGridPes - numTransPes;
00255 if ( firstTransPe < 0 ) {
00256 firstTransPe = 0;
00257 // 0 should be first in list, skip if possible
00258 if ( ncpus > numTransPes ) firstTransPe = 1;
00259 }
00260 for ( i=0; i<numTransPes; ++i ) {
00261 seq2[i] = seq2[firstTransPe + i];
00262 }
00263 seq2.resize(numTransPes);
00264 seq2.sort();
00265
00266 for ( i=0; i<numGridPes; ++i )
00267 gridPeMap[i] = seq[i];
00268
00269 for ( i=0; i<numTransPes; ++i )
00270 transPeMap[i] = seq2[i];
00271 }
|
|
|
Definition at line 409 of file ComputePme.C. 00409 {
00410 return CProxy_ComputePmeMgr::ckLocalBranch(CkpvAccess(BOCclass_group).computePmeMgr)->isPmeProcessor(p);
00411 }
|
|
|
Definition at line 53 of file ComputePme.C. Referenced by OptPmeMgr::initialize(), OptPmePencilMapZ::initialize(), OptPmePencilMapY::initialize(), OptPmePencilMapX::initialize(), ComputePmeMgr::initialize(), and ComputePmeMgr::isPmeProcessor(). |
1.3.9.1