Presentation is loading. Please wait.

Presentation is loading. Please wait.

Molecular Dynamics Collection of [charged] atoms, with bonds – Newtonian mechanics – Relatively small #of atoms (100K – 10M) At each time-step – Calculate.

Similar presentations


Presentation on theme: "Molecular Dynamics Collection of [charged] atoms, with bonds – Newtonian mechanics – Relatively small #of atoms (100K – 10M) At each time-step – Calculate."— Presentation transcript:

1 Molecular Dynamics Collection of [charged] atoms, with bonds – Newtonian mechanics – Relatively small #of atoms (100K – 10M) At each time-step – Calculate forces on each atom Bonds: Non-bonded: electrostatic and van der Waal ’ s – Short-distance: every timestep – Long-distance: using PME (3D FFT) – Multiple Time Stepping : PME every 4 timesteps – Calculate velocities and advance positions Challenge: femtosecond time-step, millions needed! Collaboration with K. Schulten, R. Skeel, and coworkers

2 Lennart-Jones Dynamics We will look at a simpler problem: – Gas atoms moving around – Temperature tells you the average velocity – The only forces acting on them are van der Waals Basically, if they come too close, they are repelled, Otherwise, there is a small attractive force between all atoms Algorithm: simulate each time step – Each atom has a mass, coordinates, and initial velocity – Calculate forces on each atom due to nearby atoms – Using forces, and Newton’s laws of motion, calculate acceleration, velocity, and update coordinates

3 Spatial Decomposition Via Charm Atoms distributed to cubes based on their location Size of each cube : Just a bit larger than cut-off radius Communicate only with neighbors Work: for each pair of nbr objects C/C ratio: O(1) However: Load Imbalance Limited Parallelism Cells, Cubes or “ Patches ” Charm++ is useful to handle this

4 Object Based Parallelization for MD: Force Decomposition + Spatial Decomposition Now, we have many objects to load balance: Each diamond can be assigned to any proc. Number of diamonds (3D): –14·Number of Patches –2-away variation: –Half-size cubes –5x5x5 interactions –3-away interactions: 7x7x7

5 Parallelization Using Charm++ The computation is decomposed into “natural” objects of the application, which are assigned to processors by Charm++ RTS

6 Expressing in Charm++ Two chare arrays: – Cells: a 3D array of chares – Pairs: one object for each “neighboring” chare What is the dimensionality of “pairs”? – Idea 1: make it a 3D array.. Does it work? – Idea 2: Make it a 1D array, Explicitly assign indices to chares: the pair object between Cells[2,3,4] and Cells[2,3,5] is Pairs[someIndex]. – Idea 3: Make it a 6D array Pairs[2,3,4,2,3,5] But: (a) it is sparse and (b) symmetry? Do we also have Pairs[2,3,5,2,3,4] Use only one of them.. (say “smaller” in dictionary order)

7 LJdynamics – Main chare entry void run() { when computesCreated() atomic { computeArray.doneInserting(); cellArray.run(); computeArray.run(); } when done() atomic { CkExit(); } }; //end of run

8 LJdynamics - Cell entry void run() { for(stepCount = 1; stepCount <= finalStepCount; stepCount++) { atomic { sendPositions(); } for(forceCount=0; forceCount < inbrs; forceCount++) when receiveForces[stepCount](int iter, vec3 forces[n], int n) atomic { addForces(forces); } atomic { updateProperties(); } if ((stepCount % MIGRATE_STEPCOUNT) == 0) { atomic { sendParticles(); } when statements for receiving particles from neighbors } atomic {contribute(0, CkReduction::NULL, CkCallback(CkReductionTarget(Main,done),mainProxy)); }

9 LJdynamics - Pair entry void run() { for(stepCount = 1; stepCount <= finalStepCount; stepCount++) { if (thisIndex.x1==thisIndex.x2 && thisIndex.y1==thisIndex.y2 && thisIndex.z1==thisIndex.z2) when calculateForces[stepCount](ParticleData *data) atomic { selfInteract(data); } else { when calculateForces[stepCount] (ParticleData *data) atomic { bufferedData = data; } when calculateForces[stepCount](ParticleData *data) atomic { interact(data); } } };


Download ppt "Molecular Dynamics Collection of [charged] atoms, with bonds – Newtonian mechanics – Relatively small #of atoms (100K – 10M) At each time-step – Calculate."

Similar presentations


Ads by Google