Paralelizace výpočtů v systému Mathematica

Podobné dokumenty
Paralelní výpočty ve finančnictví



Vlákna a přístup ke sdílené paměti. B4B36PDV Paralelní a distribuované výpočty

Paralelní programování

Paralelní programování

Paralení programování pro vícejádrové stroje s použitím OpenMP. B4B36PDV Paralelní a distribuované výpočty

Paralelní programování

Paralelní výpočetní jádro matematického modelu elektrostatického zvlákňování

Přehled paralelních architektur. Dělení paralelních architektur Flynnova taxonomie Komunikační modely paralelních architektur

Procesy a vlákna (Processes and Threads)

Pokročilé architektury počítačů

Ústav technické matematiky FS ( Ústav technické matematiky FS ) / 35

OPERAČNÍ SYSTÉMY. Operační systém je prostředník mezi hardwarem (technickým vybavením počítače) a určitým programem, který uživatel používá.

Paralelní a distribuované výpočty (B4B36PDV)

NPRG030 Programování I, 2017/18 1 / :22:16

Výpočetní zdroje v MetaCentru a jejich využití

VÝVOJ ŘÍDICÍCH ALGORITMŮ HYDRAULICKÝCH POHONŮ S VYUŽITÍM SIGNÁLOVÉHO PROCESORU DSPACE

CAL (CAN Application Layer) a CANopen

Paralelní a distribuované výpočty (B4B36PDV)

WIDE AREA MONITORING SYSTEM (WAMS) METEL

Natural Language Toolkit

NPRG030 Programování I, 2015/16 1 / :25:32

Úvod do GPGPU J. Sloup, I. Šimeček

Zpracování signálu z obrazového senzoru s využitím OS Linux pro embedded zařízení

Ukázka knihy z internetového knihkupectví

Č ř ě ř ě š ě š ž ř é ě ě Š ř ě ř é ě ř Ť ž ř ř é ř ě ě š ř š ě ě é ř ě é Š ě š ů ů ř é Ž ě ě š é ř š ě Ž ř Š ěú š ě Š Š ř ě ě é ě ř ů ř ě ř š ě ě ž é

Ladění ovladačů pomocí virtuálního stroje...2 Úvod...2 Ladění ovladačů pomocí dvou fyzických počítačů...2 Ladění ovladačů pomocí jednoho fyzického

SIMOTION přichází do TIA Portal

SIMOTION novinky v4.4

OPS Paralelní systémy, seznam pojmů, klasifikace

SÁM O SOBĚ DOKÁŽE POČÍTAČ DĚLAT JEN O MÁLO VÍC NEŽ TO, ŽE PO ZAPNUTÍ, PODOBNĚ JAKO KOJENEC PO PROBUZENÍ, CHCE JÍST.

Karel Bittner HUMUSOFT s.r.o. HUMUSOFT s.r.o.

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

Ukázka knihy z internetového knihkupectví

Rozvoj tepla v betonových konstrukcích

Novinky TIA Portal V14

Masivně paralelní zpracování obrazu v prostředí systému VisionLab Liberec Roman Cagaš, rc@mii.cz

Obsah. Kapitola 1 Hardware, procesory a vlákna Prohlídka útrob počítače...20 Motivace pro vícejádrové procesory...21

Úvod do OpenMP. Jiří Fürst

KNIHOVNA LETNI_CAS. edice verze 1.0. Knihovna letni_cas. Ing. Zdeněk Rozehnal MICROPEL s.r.o. 2008

Tvorba počítačových clusterů pomocí Linuxu. Vedoucí práce: Mgr. Jiří Pech, Ph.D. Katedra informatiky

ě ú ů éú ž é Ž é ú Á ě ě é ů é ů ůž ě ě ě ú é ť

Řada programovacích jazyků nabízí prostředky pro řešení meziprocesové komunikace jako je synchronizace a řízení přístupu do kritické sekce.

Lantronix, Inc. xprintserver Office Edition: Obchodní prezentace Listopad 2012

ě č É É É ó ů ú

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Procesy a vlákna - synchronizace

é ě ú é ě ů ě ú ů ě ů ě ú ě ě ď Ý Ž ě ě ú ě Ý ů ě ď Ž ě ě ú Ý Ť ě Ť ě ů ě ě Ť ů ú š ú ě ů ú š ě é ě Ť š ě

4. Úvod do paralelismu, metody paralelizace

SIMATIC PCS 7. Archivace a prezentace dat. Jan Kváč Siemens, s.r.o. jan.kvac@siemens.com tel:

Obecné výpočty na GPU v jazyce CUDA. Jiří Filipovič

Přednáška 3. Rekurze 1




Č š š Č ň ů Č š ů Č ů ů é š é é š ó š éú š é ú š é é é š ú ů ú ů ů é Í š ú š ú é é ď é é ú ů ů é é é é é é ů ŽÍ š é š

é Ó é ú ů ů ú ú é ň é Ú Č Ž ů é ů é ž é ů ů Ž ů š Ú Ů é š Ů š Ž š É Í Ť é š Í

ř č ř ř ú ů é é č Č ó š ý ř é ř ř š ů č ó ř š ř č ř č ú ů č é č ů ů š č úč č é č ť é č

MS WINDOWS II. Jádro. Správa objektů. Správa procesů. Zabezpečení. Správa paměti

ž ž ž ž ž ž ž ž ž Ř ž ž Ž Ž É Ě Ň ž

Microsoft Access tvorba databáze jednoduše

0,0,analogIndicator,6f24a725-80b4-4ca2-872c-bfc522b5adc5,1,1,Analog Indikator %f

Č Ý Ý Ě Ď Ý ÉŘ Á ó ě ě ě ě ě Á ě ě ě ě ě ě ě ě

č é é ů č č č č Ř č é č ů č é š ž ž é é ž é Ž é č é é Ž é ř é ž ř ž š é š Í é č é ř š Č š č Ť š ž é é Í š ž é ž ř č é ď č ž É Ú Ž č č č č ů č é č éč č

IW3 MS SQL SERVER 2014

MATLAB & Simulink. novinky v roce Jan Houška houska@humusoft.cz. HUMUSOFT s.r.o.

9. Sítě MS Windows. Distribuce Windows. Obchodní označení. Jednoduchý OS pro osobní počítače, pouze FAT, základní podpora peer to peer sítí,

Ú é š é é š ú ů š Í Ú ú éú ú ú ú ú é é

dovolují dělení velkých úloh na menší = dekompozice


Reliance. Komunikační driver Johnson Controls verze 1.5.4

Z znam workshopu k projektu QJ Program workshopu: 4. Diskuse. s metodice. H

Nastavení transmodulátoru TT-211 pomocí programu ALCAD SYSTEM PROGRAMMER - krok za krokem

PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

1. Zpracování událostí na pozadí aplikace

MetaCentrum. Martin Kuba CESNET

Martin Lísal. Úvod do MPI

Jiří Kadavý Technický specialista pro školství Microsoft Česká republika

NG C Implementace plně rekurentní

ý ě ů ů ě Í ň ý ň ď

ž ý ý ě é ě é ř ý é ř ý ř ř ý ě é é é ě ý é ě é š ř ě é é ů ř ě ý ř ě é é é ě é ě š ý ě řš ř ě é é ý ř ý ýř ř š š é ř ú ě ř š é é š ě é é ř ř ě é ý é

Operační systémy. Přednáška 4: Komunikace mezi procesy

Úvod do B4B36PDV. Organizace předmětu a seznámení se s paralelizací. B4B36PDV Paralelní a distribuované výpočty

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

ď ď Č ď řé ď ďď ž š Ýď ž ú ú ž ů ž ž ř Š Š ř ř ř š ů Č ůč ř

Služba ve Windows. Služba (service) je program

Pokročilé architektury počítačů

Management sítí OSI management framework SNMP Komerční diagnostické nástroje Opensource diagnostické nástroje

2010/2011 ZS. Operační systém. úvod základní architektury

Ř é é é úť Ú é é é é é ú é é é ú ú ú Č ú Č ú ú

webmathematica ve výuce na SŠ Mgr. Josef Lombart

Cvičení MI-PAP I. Šimeček, M. Skrbek, J. Trdlička

BRICSCAD V15. Licencování

14. Složitější konstrukce

Nová koncepce ve Wonderware komunikacích Michal Tauchman

é ř ř ř ě ř é é é é ž Č š é š ř ň ž ř ť Č š é é ú ě ě ů é š ž ě š ž é ř é ž ř ě š ě é š ž ě ě š ř ů ž é ě ž é š ž ě š ň ž ř ě ř ř ň é ř š é ř ř š ř š

Paralelizace datových přenosů

Versiondog Co je nového

š ů ů ů ů Ýó ů ů ů ť ů š ú ů š ů

Transkript:

Paralelizace výpočtů v systému Mathematica Zdeněk Buk bukz1@fel.cvut.cz České vysoké učení technické v Praze Fakulta elektrotechnická Katedra počítačů 2010

2 paralelizace-2010-buk-eval.nb Úvod Obsah prezentace Paralelizace v systému Mathematica obecně Novinky ve verzi 7 Ë Technologie Ë Licencování a terminologie Paralelizace v systému Mathematica konkrétně Ë Technologie LightweightGrid Další možnosti, stručně Ë MathLink, nvidia CUDA

paralelizace-2010-buk-eval.nb 3 Úvod Paralelizace v systému Mathematica obecně Paralelizace na úrovni jazyka Mathematica Ë Netřeba nízkoúrovňového programování Ë Odpadá řešení komunikační vrstvy, sdílení dat apod. Ë Snadná úprava stávajícího kódu Parallelize[ Map[f, data] ] Paralelizace na nižší úrovni Ë V případě potřeby je možné využít nízkoúrovňových funkcí pro vlastní distribuci částí výpočtů ParallelSubmit[1+2] WaitAll[%]

4 paralelizace-2010-buk-eval.nb Jak? Ë Mathematica 6 a nižší - knihovna Parallel Computing Toolkit Ë Od verze Mathematica 7 odpadá nutnost knihovny, podpora pro paralelní výpočty je součástí základní instalace.

paralelizace-2010-buk-eval.nb 5 Mathematica 7 vs. 6 Mathematica 6 Ë Front End Ë Kernel Mathematica 7 Ë Front End Ë Control Kernel Ë Compute Kernel (Komunikuje pouze s řídicím jádrem - Control Kernel) Technologie Ë Podpora pro paralelní výpočty přímo v systému Mathematica Ë Odpadá nutnost knihovny Parallel Computing Toolkit Ë Automatická detekce výpočetních jader (Lightweight Grid)

6 paralelizace-2010-buk-eval.nb Podpora pro automatickou paralelizaci výpočtů

paralelizace-2010-buk-eval.nb 7 Mathematica 7 Ukázka licencování Ë Mathematica 7 je optimalizovaná pro použití na čtyřjádrových počítačích. Mathematica Single Machine license Ë 2 Mathematica Front End Ë 2 Control Kernel (řídicí jádro) Ë 4 Compute Kernel (výpočetní jádro) Mathematica Network Increment Ë 1 Mathematica Front End Ë 1 Control Kernel (řídicí jádro) Ë 4 Compute Kernel (výpočetní jádro)

8 paralelizace-2010-buk-eval.nb Mathematica 7 Ukázka použití Konfigurace a spuštění výpočetních jader Ë Přehled dostupných služeb (jader) a licencí Ë $ConfiguredKernels, $MaxLicenseProcesses, $MaxLicenseSubprocess In[1]:= $ConfiguredKernels 8LightweightGridClient`LightweightGrid@8Agent Ø http:êêstroj1.domena:3737êwolframlightweightgridê Manager, KernelCount Ø 4, LocalLinkMode Ø Connect, Service Ø, Timeout Ø 5<D, LightweightGridClient`LightweightGrid@ 8Agent Ø http:êêstroj2.domena:3737êwolframlightweightgridê Manager, KernelCount Ø 8, LocalLinkMode Ø Connect, Service Ø, Timeout Ø 5<D, á2 local kernelsà<

paralelizace-2010-buk-eval.nb 9 In[4]:= $MaxLicenseProcesses Out[4]= 8 In[5]:= $MaxLicenseSubprocesses Out[5]= 16 Ë Spuštění, přehled běžících a ukončení běhu výpočetních jader In[6]:= Out[6]= LaunchKernels@8"localhost", "localhost"<d 8KernelObject@1, locald, KernelObject@2, locald< In[7]:= Out[7]= Kernels@D 8KernelObject@1, locald, KernelObject@2, locald<

10 paralelizace-2010-buk-eval.nb In[8]:= Out[8]= CloseKernels@D 8KernelObject@1, local, <defunct>d, KernelObject@2, local, <defunct>d< Jednoduché vyhodnocování v paralelním prostředí In[9]:= Out[9]= LaunchKernels@8"localhost", "localhost"<d 8KernelObject@3, locald, KernelObject@4, locald< In[10]:= Kernels@D Out[10]= 8KernelObject@3, locald, KernelObject@4, locald<

paralelizace-2010-buk-eval.nb 11 In[11]:= LaunchKernels@8"localhost", "localhost"<d Out[11]= 8KernelObject@5, locald, KernelObject@6, locald< In[12]:= Kernels@D Out[12]= 8KernelObject@3, locald, KernelObject@4, locald, KernelObject@5, locald, KernelObject@6, locald< Ë Vyhodnocení výrazu v paralelním prostředí (vyhodnocení stejného výrazu na všech výpočetních jádrech) In[13]:= ParallelEvaluate@$KernelIDD Out[13]= 83, 4, 5, 6<

12 paralelizace-2010-buk-eval.nb In[14]:= ParallelEvaluate@8$KernelID, 1 + 1<D Out[14]= 883, 2<, 84, 2<, 85, 2<, 86, 2<< In[15]:= ParallelEvaluate@8$KernelID, RandomInteger@81, 10 000<D<D Out[15]= 883, 8348<, 84, 4325<, 85, 6114<, 86, 7355<<

paralelizace-2010-buk-eval.nb 13 In[16]:= ParallelEvaluate@8$KernelID, $ProcessID, $OperatingSystem, $MachineType, $Version<D Out[16]= 883, 7016, MacOSX, PC, 7.0 for Mac OS X x86 H64-bitL HFebruary 19, 2009L<, 84, 7017, MacOSX, PC, 7.0 for Mac OS X x86 H64-bitL HFebruary 19, 2009L<, 85, 7018, MacOSX, PC, 7.0 for Mac OS X x86 H64-bitL HFebruary 19, 2009L<, 86, 7019, MacOSX, PC, 7.0 for Mac OS X x86 H64-bitL HFebruary 19, 2009L<< In[17]:= CloseKernels@D Out[17]= 8KernelObject@3, local, <defunct>d, KernelObject@4, local, <defunct>d, KernelObject@5, local, <defunct>d, KernelObject@6, local, <defunct>d<

14 paralelizace-2010-buk-eval.nb Automatická paralelizace In[18]:= LaunchKernels@8"localhost", "localhost"<d Out[18]= 8KernelObject@7, locald, KernelObject@8, locald< In[19]:= AbsoluteTiming@Select@ Range@4000D, PrimeQ@2 ^ Ò - 1D &DD Out[19]= 811.766954, 82, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281, 3217<< In[20]:= AbsoluteTiming@ Parallelize@Select@ Range@4000D, PrimeQ@2 ^ Ò - 1D &DDD Out[20]= 87.741839, 82, 3, 5, 7, 13, 17, 19, 31, 61, 89, 107, 127, 521, 607, 1279, 2203, 2281, 3217<<

paralelizace-2010-buk-eval.nb 15 In[21]:= CloseKernels@D Out[21]= 8KernelObject@7, local, <defunct>d, KernelObject@8, local, <defunct>d<

16 paralelizace-2010-buk-eval.nb Výpočty ParallelEvaluate, ParallelMap,... In[22]:= LaunchKernels@8"localhost", "localhost"<d Out[22]= 8KernelObject@9, locald, KernelObject@10, locald< Jednoduché vyhodnocení In[23]:= ParallelEvaluate@$KernelIDD Out[23]= 89, 10< Proměnné In[24]:= x = 2;

paralelizace-2010-buk-eval.nb 17 In[25]:= ParallelEvaluate@x === 2D Out[25]= 8False, False< In[26]:= ParallelEvaluate@x == 2D Out[26]= 8True, True< In[27]:= With@8a = 2<, ParallelEvaluate@a === 2D D Out[27]= 8True, True< In[28]:= kernel = FirstüKernels@D Out[28]= KernelObject@9, locald

18 paralelizace-2010-buk-eval.nb In[29]:= Table@ParallelEvaluate@IntegerQ@iD, kerneld, 8i, 1, 10<D Out[29]= 8False, False, False, False, False, False, False, False, False, False< In[30]:= Table@With@8i = i<, ParallelEvaluate@IntegerQ@iD, kerneldd, 8i, 1, 10<D Out[30]= 8True, True, True, True, True, True, True, True, True, True< ParallelCombine ParallelCombine@f, h@e 1, e 2,, e i,, e n D,comb] In[31]:= Prime@3D Out[31]= 5

paralelizace-2010-buk-eval.nb 19 In[32]:= Prime@81, 2, 3<D Out[32]= 82, 3, 5< In[33]:= ParallelCombine@Prime, 81, 2, 3, 4, 5, 6<D Out[33]= 82, 3, 5, 7, 11, 13< In[34]:= ParallelCombine@f, 81, 2, 3, 4, 5, 6<, combd Out[34]= comb@f@81, 2<D, f@83, 4<D, f@85<d, f@86<dd In[35]:= ParallelCombine@f, h@1, 2, 3, 4, 5, 6D, combd Out[35]= comb@f@h@1, 2DD, f@h@3, 4DD, f@h@5dd, f@h@6ddd

20 paralelizace-2010-buk-eval.nb ParallelMap In[36]:= ParallelMap@Sin, 80, p, 1.0<D Out[36]= 80, 0, 0.841471< In[37]:= ParallelMapBFactorInteger, 10^Range@20, 30D - 1 F 9

Out[37]= 88811, 1<, 841, 1<, 8101, 1<, 8271, 1<, 83541, 1<, 89091, 1<, 827 961, 1<<, 883, 1<, 837, 1<, 843, 1<, 8239, 1<, 81933, 1<, 84649, 1<, 810 838 689, 1<<, 8811, 2<, 823, 1<, 84093, 1<, 88779, 1<, 821 649, 1<, 8513 239, 1<<, 8811 111 111 111 111 111 111 111, 1<<, 883, 1<, 87, 1<, 811, 1<, 813, 1<, 837, 1<, 873, 1<, 8101, 1<, 8137, 1<, 89901, 1<, 899 990 001, 1<<, 8841, 1<, 8271, 1<, 821 401, 1<, 825 601, 1<, 8182 521 213 001, 1<<, 8811, 1<, 853, 1<, 879, 1<, 8859, 1<, 8265 371 653, 1<, 81 058 313 049, 1<<, 883, 3<, 837, 1<, 8757, 1<, 8333 667, 1<, 8440 334 654 777 631, 1<<, 8811, 1<, 829, 1<, 8101, 1<, 8239, 1<, 8281, 1<, 84649, 1<, 8909 091, 1<, 8121 499 449, 1<<, 883191, 1<, 816 763, 1<, 843 037, 1<, 862 003, 1<, 877 843 839 397, 1<<, 883, 1<, 87, 1<, 811, 1<, 813, 1<, 831, 1<, 837, 1<, 841, 1<, 8211, 1<, 8241, 1<, 8271, 1<, 82161, 1<, 89091, 1<, 82 906 161, 1<<< paralelizace-2010-buk-eval.nb 21

22 paralelizace-2010-buk-eval.nb In[38]:= CloseKernels@D Out[38]= 8KernelObject@9, local, <defunct>d, KernelObject@10, local, <defunct>d<

paralelizace-2010-buk-eval.nb 23 Úlohy ParallelSubmit, WaitAll,... In[39]:= LaunchKernels@8"localhost", "localhost"<d Out[39]= 8KernelObject@11, locald, KernelObject@12, locald< Vytvoření a vyhodnocení úlohy In[40]:= j = ParallelSubmit@1 + 1D Out[40]= 1 + 1

24 paralelizace-2010-buk-eval.nb In[41]:= WaitAll@jD Out[41]= 2 In[42]:= pids = Function@i, ParallelSubmit@i ^ 2DD êü 81, 2, 3, 4, 5< Out[42]= : 1 2, 2 2, 3 2, 4 2, 5 2 >

paralelizace-2010-buk-eval.nb 25 In[43]:= 8res, pid, pids< = WaitNext@pidsD Out[43]= :1, 1 2, : 2 2, 3 2, 4 2, 5 2 >> In[44]:= 8res, pid, pids< = WaitNext@pidsD Out[44]= :4, 2 2, : 3 2, 4 2, 5 2 >>

26 paralelizace-2010-buk-eval.nb In[45]:= WaitAll@pidsD Out[45]= 89, 16, 25< In[46]:= a = 2 Out[46]= 2 Proměnné In[47]:= Head@aD Out[47]= Integer

paralelizace-2010-buk-eval.nb 27 In[48]:= WaitAll@ParallelSubmit@Head@aDDD Out[48]= Symbol In[49]:= With@8a = a<, WaitAll@ParallelSubmit@Head@aDDDD Out[49]= Integer In[50]:= WaitAll@ParallelSubmit@8a<, Head@aDDD Out[50]= Integer Ë Table[] In[51]:= TableAi 2, 8i, 1, 10<E Out[51]= 81, 4, 9, 16, 25, 36, 49, 64, 81, 100<

28 paralelizace-2010-buk-eval.nb In[52]:= WaitAllATableAParallelSubmitAi 2 E, 8i, 1, 10<EE Out[52]= 9i 2, i 2, i 2, i 2, i 2, i 2, i 2, i 2, i 2, i 2 = In[53]:= WaitAllATableAParallelSubmitA8i<, i 2 E, 8i, 1, 10<EE Out[53]= 81, 4, 9, 16, 25, 36, 49, 64, 81, 100< In[54]:= ParallelTableAi 2, 8i, 1, 10<E Out[54]= 81, 4, 9, 16, 25, 36, 49, 64, 81, 100< Fronta úloh In[55]:= Needs@"Parallel`Developer`"D

paralelizace-2010-buk-eval.nb 29 In[56]:= jobs = Table@ParallelSubmit@8i<, PrimeQ@iDD, 8i, 9<D Out[56]= : PrimeQ@1D, PrimeQ@2D, PrimeQ@3D, PrimeQ@4D, PrimeQ@5D, PrimeQ@6D, PrimeQ@7D, PrimeQ@8D, PrimeQ@9D >

30 paralelizace-2010-buk-eval.nb In[57]:= QueueRun@D Out[57]= True In[58]:= QueueRun@D Out[58]= True In[59]:= $QueueLength Out[59]= 5 In[60]:= WaitAll@jobsD Out[60]= 8False, True, True, False, True, False, True, False, False<

paralelizace-2010-buk-eval.nb 31 In[61]:= CloseKernels@D Out[61]= 8KernelObject@11, local, <defunct>d, KernelObject@12, local, <defunct>d<

32 paralelizace-2010-buk-eval.nb Distribuované definice DistributeDefinitions[]... In[62]:= LaunchKernels@8"localhost", "localhost"<d Out[62]= 8KernelObject@13, locald, KernelObject@14, locald< Použití proměnných a funkcí v paralelním prostředí In[63]:= x = 10 Out[63]= 10 In[64]:= f@x_d := x ^ 2 Ë Pozor, ačkoliv následující příklad funguje, ve skutečnosti nejde o paralelní vyhodnocení... (proměnná ani funkce není definována na výpočetních jádrech, výpočet tak probíhá až na řídicím jádře)

paralelizace-2010-buk-eval.nb 33 In[65]:= ParallelEvaluate@f@xDD Out[65]= 8100, 100< In[66]:= Head@xD Out[66]= Integer In[67]:= ParallelEvaluate@Head@xDD Out[67]= 8Symbol, Symbol< In[68]:= DistributeDefinitions@xD

34 paralelizace-2010-buk-eval.nb In[69]:= ParallelEvaluate@Head@xDD Out[69]= 8Integer, Integer< In[70]:= Clear@xD In[71]:= Head@xD Out[71]= Symbol In[72]:= ParallelEvaluate@Head@xDD Out[72]= 8Integer, Integer< In[73]:= DistributeDefinitions@xD

paralelizace-2010-buk-eval.nb 35 In[74]:= ParallelEvaluate@Head@xDD Out[74]= 8Symbol, Symbol< Sdílené proměnné In[75]:= x = 10; SetSharedVariable@xD In[77]:= 8k1, k2< = Kernels@D Out[77]= 8KernelObject@13, locald, KernelObject@14, locald< In[78]:= ParallelEvaluate@x, k1d Out[78]= 10

36 paralelizace-2010-buk-eval.nb In[79]:= ParallelEvaluate@x, k2d Out[79]= 10 In[80]:= ParallelEvaluate@x = 42, k2d Out[80]= 42 In[81]:= x Out[81]= 42 In[82]:= ParallelEvaluate@x, k1d Out[82]= 42

paralelizace-2010-buk-eval.nb 37 Synchronizace - kritické sekce In[83]:= SetSharedVariable@yD; Ë Sekvenční verze In[84]:= y = 0; Map@H Pause@0.3 Random@DD; H* begin critical section *L a = y; Pause@Random@DD; y = a + 1 H* end critical section *L L &, Range@10DD Out[85]= 81, 2, 3, 4, 5, 6, 7, 8, 9, 10<

38 paralelizace-2010-buk-eval.nb In[86]:= y Out[86]= 10 Ë Paralelní verze In[87]:= y = 0; ParallelMap@H Pause@0.3 Random@DD; H* begin critical section *L a = y; Pause@Random@DD; y = a + 1 H* end critical section *L L &, Range@10DD Out[88]= 81, 2, 3, 1, 2, 3, 4, 5, 6, 7<

paralelizace-2010-buk-eval.nb 39 In[89]:= y Out[89]= 7 Ë Paralelní verze - ošetření kritické sekce - CriticalSection[...] In[90]:= y = 0; ParallelMap@H Pause@0.3 Random@DD; CriticalSection@8lck<, a = y; Pause@Random@DD; y = a + 1; a + 1DL &, Range@10DD Out[91]= 82, 4, 6, 1, 3, 5, 7, 9, 8, 10<

40 paralelizace-2010-buk-eval.nb In[92]:= y Out[92]= 10 In[93]:= CloseKernels@D Out[93]= 8KernelObject@13, local, <defunct>d, KernelObject@14, local, <defunct>d<

paralelizace-2010-buk-eval.nb 41 Lightweight Grid Konfigurace a spuštění výpočetních jader Menu Å Evaluation Å Parallel Kernel Configuration... In[94]:= $ConfiguredKernels 8LightweightGridClient`LightweightGrid@8Agent Ø http:êêstroj1.domena:3737êwolframlightweightgridê Manager, KernelCount Ø 4, LocalLinkMode Ø Connect, Service Ø, Timeout Ø 5<D, LightweightGridClient`LightweightGrid@ 8Agent Ø http:êêstroj2.domena:3737êwolframlightweightgridê Manager, KernelCount Ø 8, LocalLinkMode Ø Connect, Service Ø, Timeout Ø 5<D, á2 local kernelsà<

42 paralelizace-2010-buk-eval.nb In[95]:= Needs@"LightweightGridClient`"D In[96]:= Kernels@D Out[96]= 8< LaunchKernels@LightweightGrid@"192.168.1.42"DD Out[97]= 8KernelObject@15, briand< In[98]:= CloseKernels@D Out[98]= 8KernelObject@15, brian, <defunct>d<