470 likes | 621 Views
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)
E N D
4.év MérnokiInformatika BBTE MatematikaésInformatika SzimulációsMódszerek: MolekulárisDinamika (MD)
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
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
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
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
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)
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.
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.
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
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:
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)
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.
Szimuláció – MolekulárisDinamika Robert Brown Brown-mozgás
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
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
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
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
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
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
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
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
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)
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
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)
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
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)
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
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
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)
Szimuláció – MD optimizáció számításokcsökkentése3.lépés Verletszomszédságilista
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)
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)
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
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
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
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
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
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
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
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
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
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.
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.
Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása
Szimuláció – MD optimizáció cache missekcsökkentése5.lépés Térkitöltőgörbékalkalmazása
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