Případové studie Molekulový docking Povodňové mapy 0 OOOOOOOOOOOOOOOOOOOO OOOOOOOOO Molekulový docking, povodňové mapy Jiří Filipovič podzim 2011 Jiří Filipovič Molekulový docking, povodňové mapy Případové studie • Molekulový docking OOOOOOOOOOOOOOOOOOOO Povodňové mapy OOOOOOOOO Případové studie Ve druhé polovině předmětu se budeme zabývat studiemi konkrétního nasazení CUDA • pro lepší představu, k čemu všemu se dají akcelerátory využít • chápeme-li práci jiných, pomůže nám to v práci vlastní • rozdílné obory často sdílí mnoho společných principů • pokusíme se o nabídku přesahující zkušenosti přednášejících • budou také zvané přednášky :-) Jiří Filipovič Molekulový docking, povodňové mapy Případové studie Molekulový docking Povodňové mapy O «0000000000000000000 ooooooooo Molekulový docking Problém „zadokování" (zapadnutí, zaskočení) jedné molekuly do druhé • zpravidla dokujeme malou molekulu (ligand) do velké (receptor, většinou protein) • hledáme stabilní komplex, kde je jedna molekula navázána na druhou • zajímá nás, aby bylo navázání v aktivním místě receptoru • tím modifikujeme vlastnosti receptoru (aktivace či inhibice) Aplikace • vývoj léků • likvidace znečištění • cokoliv těžící z možnosti upravovat vlastnosti proteinů Jiří Filipovič Molekulový docking, povodňové mapy Případové studie O Molekulový docking o«oooooooooooooooooo Povodňové mapy ooooooooo Molekulový docking z výpočetního hlediska Můžeme uvažovat „tvar" molekul, nebo jejich silová pole • my se budeme zabývat silovými poly Molekuly na sebe působí silou, hledáme komplex s nejnižsí potenciální energií • můžeme na mřížce předpočítat silové působení receptoru • následně můžeme hledat takové umístění ligandu, které má nejmenší energii vůči mřížce • tím redukujeme časovou složitost z 0(n ■ m) na 0{m) pro receptor o velikosti n a ligand o velikosti m atomů (m << n) My se budeme zabývat předpočítáním silového pole. Jiří Filipovič Molekulový docking, povodňové mapy Případové studie O Molekulový docking OOÄOOOOOOOOOOOOOOOO0 Povodňové mapy OOOOOOOOO Výpočet Coulombovského potenciálu Potenciál v konkrétním bodě mřížky je dán vztahem ^ 47Te0e(rij)rij Kde e (ry/) je dielektrikum závislé na vzdálenosti a r,j je vzdálenost atomu od bodu mřížky. Potenciál klesá s druhou mocninou vzdálenosti - to je relativně pomalu, často se tedy počítá pro každý bod mřížky potenciál vůči všem atomům receptoru. Případové studie O Molekulový docking ooo«oooooooooooooooo Povodňové mapy ooooooooo CUDA implementace Nejprve se budeme zabývat implementací s konstantním dielektrikem (tedy e(r) = k). • John E. Stone, James C. Phillips, Peter L. Freddolino, David J. Hardy, Leonardo G. Trabuco, Klaus Schulten. Accelerating molecular modeling applications with graphics processors. Journal of Computational Chemistry, Volume 28 Issue 16, 2008. Paralelizace • každá buňka může být zpracovávána nezávisle na ostatních Rychlostní omezení základního algoritmu • 9 aritmetických operací na jeden atom • informace o pozici buňky dány umístěním threadu • informace o atomech v 16 bytech (4 floaty - pozice a náboj) • při naivním pohledu jsme tedy omezeni rychlostí paměti Jiří Filipovič Molekulový docking, povodňové mapy Případové studie O CUDA implementace Molekulový docking OOOOÄOOOOOOOOOOOOOO0 Povodňové mapy OOOOOOOOO Omezení paměti • každý thread potřebuje přečíst 4 floaty popisující právě zpracovaný atom • v rámci warpu zpracovávají všechny thready současně stejný atom pro různé buňky • údaje o atomech slouží pouze ke čtení • ideální pro paměť konstant Molekulový docking, povodňové mapy i -00.0 Případové studie O Molekulový docking 00000*00000000000000 Povodňové mapy OOOOOOOOO CUDA implementace Použijeme-li paměť konstant • máme zajištěný cacheovaný přístup • nevadí, že nás zajímají pouze 4 floaty • data se z globální paměti čtou nejvýše jednou projeden warp • redukuje nároky na propustnost paměťi alespoň na 1/32 • počet atomů umístitelných do paměti konstant je omezen • pro více než 4096 atomů je třeba spouštět kernel vícekrát • doba spouštění je však pro takto dlouhý výpočet zanedbatelná Molekulový docking, povodňové mapy i -00.0 Případové studie O Molekulový docking oooooo»ooooooooooooo Povodňové mapy OOOOOOOOO První kernel loat curenergy = energygrid[outaddr ] ; float coorx = gridspacing * xindex; float coory = gridspacing * yindex ; float coorz = gridspacing * zindex; int at omid; float energyval =0.Of ; for (atomid = 0; atomid