# Seminar 1: Efficient Algorithms for Molecular Dynamics Simulation Andrew Noske.

## Presentation on theme: "Seminar 1: Efficient Algorithms for Molecular Dynamics Simulation Andrew Noske."— Presentation transcript:

Seminar 1: Efficient Algorithms for Molecular Dynamics Simulation Andrew Noske

About the Project Part of TOMSK (Towards Molecular Structure Kinetics) Build an “engine layer” for particle simulations

About Molecular Simulations Real molecules obey quantum laws… but can approximate with classical laws. e.g.: Newton’s law: force=mass*acceleration e.g.: Newton’s law: force=mass*acceleration Molecular Dynamics (MD): integrates equations of motion of atoms each timestep. Cannot predict precisely what will happen: generates statistical prediction. Cannot predict precisely what will happen: generates statistical prediction.

Chosen Interaction Model Lennard Jones Potential Pair Equation: I will use this to simulate atoms in a stable liquid. NOTE: Will be easy to overwrite/change interaction model & add statistical analysis functions (e.g.: calc Temperature).

Simulating Liquids 1 2 5 4 3 PBC on 2D box Range search on box with PBC Microscopic droplet (finite particles) Can only simulate so many 1000’s of particles. To simulate bulk liquid: I will use Periodic Bounding Condition (PBC)  (boundaries wrap around) Surface particle has less neighbors

N-body Problem N-body problem: all (N) particles in a system have pair-wise interaction. Solutions: Brute force approach compare all pairs  O(N 2 ) Brute force approach compare all pairs  O(N 2 ) Better approach: approximate distant forces Better approach: approximate distant forces Lead to many specific solutions. Consider ALL Approximate

Chosen Solution Chosen approach: chose cutoff radius, and ignore particles beyond this. Involves: moving self-spatial join query (many range queries)  has numerous applications: Involves: moving self-spatial join query (many range queries)  has numerous applications: GIS, Computer graphics, etc. Ignore O-- H+ – + Permanent dipole Water molecule Argon atom (inert) Symmetrical attractive/ repulsive forces + – – – Cutoff radius (Rc) Spatial join query: NOTE: Direction forces! Single Range Query

Spatial Data Structure: Fixed Grid Reviewed many types of structures. Fixed grid most effective for uniform particle distribution. Time to build (place all points into index) = O(N) Time to build (place all points into index) = O(N) cell index = atom coordinate / cellLen (along each dimension) Cell List technique Cutoff radius (r c ) Fixed grid cellLen boxLen rcrc NOTE: cells per side (CPS)=5

Scientific Process Using Visual C++ console application. Am using OO principles. Am using OO principles. Have read “Effective C++” & now reading “More Effective C++”. Have read “Effective C++” & now reading “More Effective C++”. Testing process: Run a series of simulations in batch… Run a series of simulations in batch… Output results to CSV… including: Output results to CSV… including: grid parameters, clock tics elapsed,  primary focus distance calculates, & more Analyze/graph CSV using Excel. Analyze/graph CSV using Excel. Can be time consuming!  Can be time consuming! 

Simulation Steps Set-up: #1) Setup grid structure #1) Setup grid structure #2) Setup atoms in offset lattice #2) Setup atoms in offset lattice #3) Assign random velocities. #3) Assign random velocities.Iterate: #1) Build grid (assign all atoms to cells). #1) Build grid (assign all atoms to cells). #2) Build neighbor list (for each atom in each cell: find neighbors).  can take 95% of time #2) Build neighbor list (for each atom in each cell: find neighbors).  can take 95% of time #3) Calculate force and move atoms  implements interaction model (can change). #3) Calculate force and move atoms  implements interaction model (can change). #4) Wrap atoms back into cell boundaries. #4) Wrap atoms back into cell boundaries. #5) Increment timestep. #5) Increment timestep.

Finding Good Neighbours q “Love thy neighbour” -- the bible q q Atom list approach: For each atom: check which cells are within rc of atom Cell list approach: Predetermine which cells are within rc of each cell NOTE: Volume sphere = 52% of it’s bounding cube

Optimization Trick: Half-sphere Query i j i j Normal approach: Search sphere Faster approach: Search upper hemi-sphere NOTE: will capture each neighbor twice (once from each end)

Smaller Optimization Tricks i j Early elimination if distance between atoms along any dimension > rc. Don’t calculate sqrt: Lennard-Jones can be done using dist 2 Lennard-Jones can be done using dist 2 NOTE: if (dist 2 <= cutoffRadius 2 )  is in range NOTE: if (dist 2 <= cutoffRadius 2 )  is in range Determine optimal # of cells per size. Is cell length = cutoff radius optimal? Is cell length = cutoff radius optimal?

Idea: Using MBRs in cells For each cell, maintain a Minimum Bounding Rectangle (MBR) around it’s atoms. For any cell JUST tipped by rc, check atom is inside rc of MBR before considering atoms exhaustively. For any cell JUST tipped by rc, check atom is inside rc of MBR before considering atoms exhaustively. This cell is just tipped” MBR NOTE: can also be used in conjunction with “sub grid” NOTE: can also be used in conjunction with “sub grid”

Improving Cache Hits through Spatial Locality Spatial locality principle: objects close to referred ones will probably be requested again in the future. Unsorted atoms  means many cache misses. Unsorted atoms  means many cache misses. 1 3 2 4 5 6

Space Filling Curves Space-filling curve: A line passing through every point in a space, in some order (according to some algorithm). Resort atom periodically (group by cells & order using curve). Resort atom periodically (group by cells & order using curve). Improves CPU performance “>50% in 2D moving point query”  worth trying. Improves CPU performance “>50% in 2D moving point query”  worth trying. Row-wise Hilbert curve Gray curve Z-ordering

Verlet Neighbour List Choose a “skin radius” greater than rc. Build the “verlet neighbor list” using skin radius Next few iterations: update list; check which neighbour pairs are inside rc. Refinement: only rebuild list when: sum of 2 max displacement (of any 2 atoms) > skin “thickness”. 1 4 2 5 6 RlRl 7 7' 6' 3 RcRc Cut-off sphere Skin Skin/verlet radius (Rv) 2 max displacements since rebuild

Some Verlet Specific Ideas Don’t check displacement each iteration: check at decreasing periods. Don’t update distances of atoms outside cut-off sphere each iteration: check more frequently as it gets closer. Determine optimal skin radius. 1 4 2 6 RlRl 7 7' 6' 3 RcRc Cut-off sphere Skin Skin/verlet radius (Rv) 2 max displacements since rebuild 5

Performance vs. Accuracy Some techniques that will improve performance, but decrease “accuracy”: Don’t always rebuild/update neighbor list when necessary. Don’t always rebuild/update neighbor list when necessary. Increasing timestep Increasing timestep Decreasing cutoff radius Decreasing cutoff radius I can graph these by testing against a control. larger timestep small timestep smaller rc large rc

Progress Basic grid is implemented Thesis started. Several graphs obtained. Added front end: Uses MFC (Microsoft Foundation Class) using OpenGL. Uses MFC (Microsoft Foundation Class) using OpenGL. Demonstrates building on engine layer. Demonstrates building on engine layer. Lets me see particles animate (& work out problems) Lets me see particles animate (& work out problems) Code messy Code messy Is still MUCH to implement & test.

Conclusion Molecular dynamics : an (approximated) simulation of real world particle behaviour. Periodic Bounding Condition used for “bulk” liquid Periodic Bounding Condition used for “bulk” liquid Best existing approach: Verlet list, using cell list & fixed grid to build. Verlet list, using cell list & fixed grid to build. Ideas for improvement: Minimal half cell list templates. Minimal half cell list templates. MBRs inside cells. MBRs inside cells. Space filling curves. Space filling curves. Thesis may resemble a guide to implementing/optimizing moving spatial join queries. Still much to be done. 1 4 2 5 6 RlRl 7' 6' 3 RcRc rcrc

Thank You… Any Questions?

Revised Goal Implement engine as efficient as possible. How it should work: Pass in minimum parameters: Pass in minimum parameters: # atoms, offset, max velocity & box size (or load atom data from file). cutoff radius Engine should set remaining details to optimal. Including: Engine should set remaining details to optimal. Including: cells per side, verlet radius, subgrid? mbr? algorithm? etc. rcrc EXTRA SLIDE

Idea: Sub Grid “Sub grid adjacency list template guide”: break each cell into (imaginary) sub-grid. When considering an atom, check with sub-cell it belongs to, that sub-cell will refine which adjacent cells to search. When considering an atom, check with sub-cell it belongs to, that sub-cell will refine which adjacent cells to search. NOTE: My primary focus is: reducing time per iteration… but main memory requirements (& setup time) also important. My primary focus is: reducing time per iteration… but main memory requirements (& setup time) also important. Choosing cell length equal to rc is typical. But is it optimal? Choosing cell length equal to rc is typical. But is it optimal? No one method/metric is likely to be optimal in ALL cases  too many parameters. No one method/metric is likely to be optimal in ALL cases  too many parameters. EXTRA SLIDE

Download ppt "Seminar 1: Efficient Algorithms for Molecular Dynamics Simulation Andrew Noske."

Similar presentations