1 / 46

Szimulációs Módszerek : Molekuláris Dinamika (MD)

4.év Mérnoki Informatika BBTE Matematika és Informatika. Szimulációs Módszerek : Molekuláris Dinamika (MD). Szimuláció – Molekuláris Dinamika. Molekuláris Dinamika szimuláció (MD)

rasha
Télécharger la présentation

Szimulációs Módszerek : Molekuláris Dinamika (MD)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4.év MérnokiInformatika BBTE MatematikaésInformatika SzimulációsMódszerek: MolekulárisDinamika (MD)

  2. Szimuláció – MolekulárisDinamika MolekulárisDinamikaszimuláció(MD) meg akarjukhatározni a rendszertalkotóatomok, molekulákhelyét (x,y,z) mindenidőpontban x(t), y(t), z(t)Ehhez meg kelloldjam a mozgásegyenletetmindenrészecskére

  3. Szimuláció – MolekulárisDinamika A mozgásegyenletáltalában a klasszikus Newton II. törvénye: f = maaholazf a részecskérehatóösszeserőtjelentiezfügg a részecskehelyzetétől de a többirészecskehelyzetétől is – csatoltakazegyenletek, muszályegyszerremegoldaniőket. Numerikusan, lépésrőllépésreoldjuk meg őket

  4. Szimuláció – MolekulárisDinamika Minden lépésbenkiszámoljukazösszeserőtazösszesrészecskére(poziciókból, sebességektől)elmozdítjukazösszesrészecskétegyszerrenullázzukazerőketIsmételjükezt a lépést

  5. Szimuláció – MolekulárisDinamika Futásközbenmegkapjuk a részecskékpozicióját (x(t0),x(t1),x(t2),x(t3), …) – ebből a mikroszkopikusadatbólbármitkitudunkszámolniami a rendszerrejellemző (makroszkópikusjellemzőket is)statisztikaiszámításokatvégezhetünk • futásközben • utólagosfeldolgozásközben

  6. Szimuláció – MolekulárisDinamika Az MD szimulációmegengedihogybármilyenmennyiségetkiszámoljunk, mertmindenadat a rendelkezésünkreáll (hiszenmindenegyes atom helyzetéttudjuk)A kísérletekbennemmindenadatállrendelkezésre (plazegyediatomokpoziciójanem, csakátlagolt, makroszkopikusmennyiségekmérhetők)

  7. Szimuláció – MolekulárisDinamika MD – KísérletekAzonmennyiségekkelamelyekmindkettőbőlkiszámolhatók(mérhetők), lehetellenőriznihogymennyirejó a modellHa ezek a mennyiségekegyeznek, akkoraz MD betekintéstnyújthatolyanrészletekbeamitmásképpnemtudnánktanulmányozni, megérthetünkmechanizmusokat, stb.

  8. Szimuláció – MolekulárisDinamika MD léptetésegyadottidőpillanatbanismerjük x(t), v(t) és a(t)-t és meg akarjukőkethatározniegykésőbbit+dtidőpontban:x(t+dt), v(t+dt) és a(t+dt) mivel a differenciálegyenletethelyettesítettükegyvégesdiffrenciákkaldolgozóegyenlettel, veszítünk a pontosságból. A jóléptetőalgoritmusokazokamelyekgyorsakésminélpontosabbak.

  9. Szimuláció – MolekulárisDinamika MD léptetés– Leapfrogxi = xi-1 + vi-(1/2) Δt ai = f(xi) vi+(1/2) = vi-(1/2) + aiΔt

  10. Szimuláció – MolekulárisDinamika MD léptetés– LeapfrogEz a módszer O2 pontosságú, de nagyonstabil, időbenreverzibilis (energiamegmaradás) pl. harmonikus mozgásranemvezet be szisztematikushibát:

  11. Szimuláció – MolekulárisDinamika MD léptetés– Velocity Verletalgoritmusvi+1/2 = vi + aiΔt/2 xi+1 = xi + vi+1/2 Δt ai+1 = 1/m*f(xi+1) vi+1 = vi+1/2 + ai+1Δt/2 előnye, hogyadottúgyazx,a mint a v mindenidőpontban (ha a számolásokhozkellett a sebesség, a leapfrog nemtartja meg ugyanabbanazidőpontban)

  12. Szimuláció – MolekulárisDinamika BD léptetés– Brownian Dynamics A Brownian Dynamics egyegyszerűbbrendszertír le: ebben a rendszerbennagyonnagyok a súrlódásierők, ezértmindenmozgáscsakazerőkmiatttörténik, ha megszűnikazerő, azonnallefékezik a mozgást a súrlódásierők.

  13. Szimuláció – MolekulárisDinamika Robert Brown Brown-mozgás

  14. Szimuláció – MolekulárisDinamika f+fs = ma ahol a súrlódásierő: fs = -ηv a=0 (instant beáll a végsőértékre) ηv= fηdx/dt= fdx =1/η f dt (x = x + f dt, η=1)ezazegyenletnemtartalmazmásodfokúdifferenciált, csakelsőfokút, egyszerűbbintegrálni

  15. Szimuláció – MD optimizáció Hogyantudjukfelgyorsítaniaz MD szimulációskódunkat? Többtrükk is létezikhozzáMielőttoptimizálnánk a kódot, jómegvizsgálniazthogymelyikrészeazami a legtöbbideigfut, hollehet a legtöbbetelérni a gyorsítással: profiling (gprof, cachegrind,valgrind) a gprof a legegyszerűbb, leggyorsabb

  16. Szimuláció – MD optimizáció Általában a legtöbbidőt a kölcsönhatásipotenciálszámolásaveszi el. Ezaz a részami a legtöbbszörvégrehajódikésittmindennyereségszámít. 1000 részecske 1,000,000 időlépés~1012számításegyfutattássoránésezegykisrendszer. A maiprocesszoroknakeznemolyansokművelet

  17. Szimuláció – MD optimizáció Ahhozhogymegértsükazthogy mi kerülsokidőbe, meg kellérteniazthogyegy program mikorprocessor bound ésmikormemory boundprocessor bound: a futásisebességétazhatározza meg hogymilyengyorsantud a processzorműveleteketvégezni: mindigmindenadatkéznél van

  18. Szimuláció – MD optimizáció memory bound: a futásisebességétazhatározza meg hogymikortud a processzorazadathozhozzáférni, a műveleteketsokkalgyorsabban el tudnávégezni de azadatnincskéznél, keresgélnikell a memóriábanutánaErretaláltákki a cache-t, hogylehetőlegottlegyenazadataztelérnigyorsabb mint a memóriábankeresgélni

  19. Szimuláció – MD optimizáció A cache-nekkülönbözőszintjeivannak, L1 level 1 cache a leggyorsabbéslegkisebb, L2 nagyobbéslassúbbésígytovább végrehajtásközben a processzorprediktál: előrejelez

  20. Szimuláció – MD optimizáció cache miss: ha azadatnincsbenn a cache-ben akkor van egy cache miss azalattazadatotkeresgélik a memóriában nagyonnemmindegyhogyhogyan van megírva a szimuláció, a kompilernemérti a számításoklogikáját, ezért a programozókelloptimálisanmegírja a kódot

  21. Szimuláció – MD optimizáció cache miss kivédése: ha leheterrekellkoncentrálni, legyenhelybenazadat, ha azadatbetöltődött a cache-be akkordolgozzunkveleamennyitcsaklehet számításokcsökkentése: ha nemrontjuk el vele a processor bound-ságotakkor ha lehetcsökkentsük a számításokat

  22. Szimuláció – MD optimizáció számításokcsökkentése1.lépés Newton III. törvénye felhasználhatjukazthogy a hatásés a ellenhatásugyanakkoracsakellenkezőelőjelű – iés j részecskékközöttazerőfij=-fjieztelégegyszerkiszámolniésmindkétrészecskéntárolni. Ha a számítástvégezzükrajtuk, már a cachebenvannak (ha jóltároljukőket, azazrendezvevannak)

  23. Szimuláció – MD optimizáció számításokcsökkentése2.lépés Erőktabulálása mivelmindigugyanazt a potenciálthasználjuk, ahelyetthogybehelyettesítsünk a képletbemindenegyesalkalommalegy r-et, előrekiszámolt r értékekretabulálunk … sokaprólépésrefelosztjuk a lehetséges r tartománytésegyermindegyikrekiszámoljukaz f-et

  24. Szimuláció – MD optimizáció számításokcsökkentése2.lépés Erőktabulálása jobbnem r hanem r2függvényébentárolniésjobbnem f-et hanem f/r-et tárolninemmindigéri meg ezt a lépéstmegtenni, van amikor cache misshezvezetésolcsóbblennemindigújraszámolni (egyszerűképletekesetén)

  25. Szimuláció – MD optimizáció számításokcsökkentése2.lépés Erőktabulálása dx = xi – xj dy = yi - yj dr2 = dx*dx + dy*dyezértérdemes dr2 szerinttabulálnifx = f *dx/drfy = f* dy/drezértérdemes f/r-et tárolni

  26. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Ezaz a cselamivelnagyonnagyonfellehetgyorsítani a programot. Egyolyanpotenciálunkkelllegyenamilevágható. Ha ezteljesülakkorelérhetjükazthogysokkalkevesebbszámolástvégezzünk N2rőlNlog(N)re lehetátmenni (futásiidőfüggése a rendszerméretétől)

  27. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Ha mindenkitmindenkivelkölcsönhatásbaléptetek, akkor N(N-1) számítástkellelvégezzek. Newton IIIalN(N-1)/2 –t.De igazánnem is kellenemindenkitmindenkivelállandóankiszámoljak: megjegyezhetnémkikvannakközel

  28. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Pl legyenegy 50x50-es doboz, 2000 részecske.Potenciállevágása: 4.0 távolságnál Mindenkimindenkivel: 2000*1999/2 ~ 106 Csakakikszomszédok: 2000*ρ*πr2 ~80,000 ρ=2000/(50*50)= 0.8 ; r = 4.0

  29. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista A listátkicsitnagyobbrakellenecsinálni mint amekkora a potenciállevágásihatára, azérthogy ne kelljenmindenlépésbenújraszámolnikik a szomszédok (akkornemcsináltunksemmit)

  30. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista

  31. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Listaméretoptimizálása: nagyobblista– kevesebbszerkellújraépíteni de többetkellszámolnikisebblista - többszörkellújraépíteni de kevesebbetkellszámolnipl. 1.5x a levágásihatárjókompromisszumsokesetben(kolloidrendszereknélezthasználom)

  32. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Listaméretoptimizálása: nagyobblista– kevesebbszerkellújraépíteni de többetkellszámolnikisebblista - többszörkellújraépíteni de kevesebbetkellszámolnipl. 1.5x a levágásihatárjókompromisszumsokesetben(kolloidrendszereknélezthasználom)

  33. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Mikorépítsemújra a listát? Egyiklehetőségazhogyegy fix időlépésután. Eznemannyirajómegoldásmertnemgarantáljahogymindenrendben van – éspotenciálisantúlgyakranfogomcsinálni

  34. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Mikorépítsemújra a listát? A másiklehetőségazhogymindenrészecskeszámoljaazthogymennyitmozdult el azutolsófrissítésóta, és ha elegetmozdultegyetlenrészecskeahhozhogyátmehetettvolna a külsőkörből a belsőbe, akkortriggerelésújraépítjük a listátezazelmozdulásazutolsólépésótaamúgy is ki van számolva a rendesléptetésnél

  35. Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista Mikorépítsemújra a listát? A másiklehetőségazhogymindenrészecskeszámoljaazthogymennyitmozdult el azutolsófrissítésóta, és ha elegetmozdultegyetlenrészecskeahhozhogyátmehetettvolna a külsőkörből a belsőbe, akkortriggerelésújraépítjük a listátezazelmozdulásazutolsólépésótaamúgy is ki van számolva a rendesléptetésnél

  36. Szimuláció – MD optimizáció számításokcsökkentése4.lépés Verletszomszédságicellák Ahelyetthogyvégigmenjek mind az N(N-1) lehetőségen a cellákújraépítésekor, mindenrészecskéthozzárendelekegycellához. Ezkönnyű, mertcsakegy modulo osztáskellhozzá. Ezután a celláksegítségévelkevesebbrészecskévelkellellenőrizzekmindenrészecskét, hogyszomszédok-e

  37. Szimuláció – MD optimizáció számításokcsökkentése4.lépés Verletszomszédságicelláka nagykörnem lehettöbb mint 3 cellaméret

  38. Szimuláció – MD optimizáció számításokcsökkentése4.lépés Verletszomszédságicellák Minden cellaegyláncoltlistábantárolhatjaazthogymelyikrészecskékvannaka cellában. A listákfejeegykétdimenziós pointer-lista, a next item pointer pedigmindenrészecskéneklehetegybelsőváltozójaPinning site-oknál is leheteztalkalmazni, csakottnemkellújraépíteni a listát, mivel a pinning siteokáltalábannemmozdulnak el

  39. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása A cache úgyprediktáljaazthogymilyenadatokra van szüksége a program futásaközben, hogyamikoregybeolvasástörténik, akkornemegyetlenváltozótolvas be a memóriából, hanem a körülöttelevőkörnyezetet is beolvassa. Ígyezekmár a cache-ben lesznekegyetlen cache miss után

  40. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása Egyegyszerűpéldánakvegyünkegymátrixszorzást. Nemmindegyazhogysorvagyoszlopformájábantároljuk el azinformációt: ha sort olvasunk (elsőmátrix), akkorkevesebb cache miss-ünklesz, ha oszlopotakkormindenelemnél van egy cache miss

  41. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása Amikoregyelemetbeolvas a memóriából, akkorbeolvassaazelőtteésutánalevő elemeket is

  42. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása A mi esetünkbenmindenrészecsketartalmazadottinfomációkat (x,z,ykoordináta, töltés, stb.) ésmindig a szomszédosrészecskékközöttikölcsönhatásokatszámoljuk. Jólennehogyhaazok a részecskékamelyekszomszédosaktérben, a memóriában is szomszédosaklennének. Errejó a térkitöltőgörbe. Segítségévelolyanindexeketkaphatunk, amelyekkelsorbarendeyhetjük a részecskéket, úgy, hogy a térbenszomszédosrészecskék a memóriában is szomszédosaklegyenek.

  43. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása Többfajtatérkitöltőgörbelétezik. Kétgyakranhasználtgörbe a Morton és a Hilbert görbék (ezek a görbék mind fraktálok). A Mortontlehetkönnyebbenkiterjeszteni 3D-re. A térkitöltőgörbevégtelenrendbenkitölti a términdenpontját. Mivelvégesszámúrészecskénk van, csakegyadottrendigkellelmenniahhozhogymindenrészecskénekkülönindexelegyen.

  44. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása

  45. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása

  46. Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása a görbementéngenerálhatunkindexeketamikalapjánrendezhetjük a vektorbana sorrendet

More Related