UWAGA! Używamy plików cookies, by ułatwić korzystanie z naszego serwisu. Jeśli nie chcesz, by pliki cookies były zapisywane na Twoim dysku zmień ustawienia swojej przeglądarki. Co to są pliki cookies?

Mathematica
Obliczenia równoległe


Sekwencyjność algorytmów numerycznego rozwiązywania równań różniczkowych uniemożliwia zastosowanie równoległych obliczeń w tego typu problemach. Jednak w praktyce rzadko kończy się na pojedynczym rozwiązaniu równania. Na ogół występują w nim jakieś parametry, zmiennym może być warunek początkowy i w rzeczywistości równanie to rozwiązywane jest wielokrotnie. Jeśli do problemu podejść nie jako do pojedynczego rozwiązania równania różniczkowego, ale do wielu jego rozwiązań, to zagadnienie staje się typowe dla przetwarzania równoległego, np. każdy dostępny procesor liczy rozwiązanie dla innej wartości parametru lub dla innego warunku początkowego. Pojedyncze rozwiązanie jest liczone sekwencyjnie i nie podlega zrównolegleniu, ale cały problem zależności rozwiązania od warunku początkowego jest już typowym problemem dla równolegle pracujących procesów obliczeniowych typu SIMD, gdyż taki model zrównoleglania zastosowany został w środowisku gridMathematica.

Niech będzie dane równanie:



Do zmiennej s1 podstawiana jest lista rozwiązań dla wartości parametru a od 0.1 do 4.0 z krokiem 0.005. Czas wyznaczenia wszystkich rozwiązań za pomocą funkcji Table[...] wyniósł ok. 7.31 sekund.



Kilka wykresów dla wybranych wartości parametru a pokazuje poniższy wykres.



Do zmiennej s2 podstawiona jest lista tych samych rozwiązań, ale wyliczonych z zastosowanie równoległej pracy 12 Kerneli obliczeniowych.



Numerycznie efekt obliczeń jest taki sam, ale na wyliczenie zmiennej s2 potrzeba było 3.92 sekundy, czyli obliczenia zostały wykonane prawie dwa razy szybciej.

Wynik obliczeń w wersji 7 i wyższej programu Mathematica może być przedstawiony w formie interaktywnej prezentacji z wykorzystaniem funkcji Manipulate[...]. Przesuwając suwakiem za pomocą wskaźnika myszy można obserwować wykresy dla poszczególnych wartości parametru a.