Prometheus:Mathematica: Różnice pomiędzy wersjami

Z Komputery Dużej Mocy w ACK CYFRONET AGH
Skocz do:nawigacja, szukaj
Linia 7: Linia 7:
 
</pre>
 
</pre>
  
W przypadku korzystania przez użytkownika z systemu Windows, połączenie należy nawiąząc przy pomocy programu putty http://www.putty.org oraz należy zainstalować i uruchomić program Xming https://sourceforge.net/projects/xming/
+
W przypadku korzystania przez użytkownika z systemu Windows, połączenie należy nawiązać przy pomocy programu putty http://www.putty.org oraz należy zainstalować i uruchomić program Xming https://sourceforge.net/projects/xming/
  
 
Konfiguracja putty:<br>
 
Konfiguracja putty:<br>
Linia 18: Linia 18:
 
module load plgrid/apps/mathematica  
 
module load plgrid/apps/mathematica  
 
</pre>
 
</pre>
należa zładować domyślną wersję Mathematici.
+
należy zładować domyślną wersję Mathematici.
 
Jeżeli istnieje potrzeba załadowania innej dostępnej wersji Mathematici, najpierw należy sprawdzić dostępne wersje na wybranym klastrze
 
Jeżeli istnieje potrzeba załadowania innej dostępnej wersji Mathematici, najpierw należy sprawdzić dostępne wersje na wybranym klastrze
 
<pre>
 
<pre>
Linia 47: Linia 47:
 
Otwiera się edytor, gdzie można umieszczać polecenia Mathematici.
 
Otwiera się edytor, gdzie można umieszczać polecenia Mathematici.
  
5. Mathematica wspierw obliczenia równolgełe
+
5. Mathematica wspiera obliczenia równolegełe
 
Dokumentacja: https://reference.wolfram.com/language/guide/ParallelComputing.html
 
Dokumentacja: https://reference.wolfram.com/language/guide/ParallelComputing.html
  
Linia 55: Linia 55:
 
File\Save as\test1.m
 
File\Save as\test1.m
 
</pre>
 
</pre>
Domyślny katalog docelowy Mathematici to ~/Wolfram Mathematica. Można sprawdzić zawaratość katalogu przez polecenie w konsoli
+
Domyślny katalog docelowy Mathematici to ~/Wolfram Mathematica. Można sprawdzić zawartość katalogu przez polecenie w konsoli
 
<pre>
 
<pre>
 
ls ~/Wolfram\ Mathematica
 
ls ~/Wolfram\ Mathematica
Linia 66: Linia 66:
 
module unload plgrid/apps/mathematica
 
module unload plgrid/apps/mathematica
 
</pre>
 
</pre>
lub jeżeli była załadowana inna wersja Mathematici niż domyslna to (odnośnie wcześniejszego przykładu)
+
lub jeżeli była załadowana inna wersja Mathematici niż domyślna to (odnośnie wcześniejszego przykładu)
 
<pre>
 
<pre>
 
module unlod plgrid/apps/mathematica/9.0
 
module unlod plgrid/apps/mathematica/9.0
Linia 125: Linia 125:
  
 
<pre>
 
<pre>
(* Pobranie informacji o ilości dosępnych rdzeni *)
+
(* Pobranie informacji o ilości dostępnych rdzeni *)
 
(* cores = $ProcessorCount; *)
 
(* cores = $ProcessorCount; *)
  
Linia 148: Linia 148:
 
Zmierzony czas to ok. 0.43 [s].
 
Zmierzony czas to ok. 0.43 [s].
  
Można równiez użyć automatycznych funkcji do obliczeń równoległych takich jak  np. ParallelTable, ParallelDo.
+
Można również użyć automatycznych funkcji do obliczeń równoległych takich jak  np. ParallelTable, ParallelDo.
 
Funkcje te automatycznie uruchamiają kernele.
 
Funkcje te automatycznie uruchamiają kernele.
  
Linia 165: Linia 165:
 
Zmierzony czas to ok. 1.2 [s].
 
Zmierzony czas to ok. 1.2 [s].
  
Funkcje wbudowane takie jak mnożenie macierzy są automatycznie zrównleglone i nie trzeba pisać dodatkowego kodu.
+
Funkcje wbudowane takie jak mnożenie macierzy są automatycznie zrównoleglone i nie trzeba pisać dodatkowego kodu.
Powyższy przykład pokazuje jak można zrównoleglić obliczenia w Mathematice dla przypadku gdy obliczenia mogą być przeprowadzone w sposób nie zależny od siebie.
+
Powyższy przykład pokazuje jak można zrównoleglić obliczenia w Mathematice dla przypadku gdy obliczenia mogą być przeprowadzone w sposób niezależny od siebie.
  
 
Źródło: https://reference.wolfram.com/language/guide/ParallelComputing.html
 
Źródło: https://reference.wolfram.com/language/guide/ParallelComputing.html

Wersja z 06:52, 30 sie 2016

Mathematica 10.2.0

Przygotowanie inputów

1. Należy się zalogować na wybrany klaster korzystając z polecenia ssh z opcją -X:

ssh -X nazwa_uzytkownika@promehteus.cyfronet.pl

W przypadku korzystania przez użytkownika z systemu Windows, połączenie należy nawiązać przy pomocy programu putty http://www.putty.org oraz należy zainstalować i uruchomić program Xming https://sourceforge.net/projects/xming/

Konfiguracja putty:
Putty new session.pngPutty x11.pngPutty session zapis.png

Użytkownik jest wtedy połączony z maszyną dostepową.

2. Następnie przez polecenie

module load plgrid/apps/mathematica 

należy zładować domyślną wersję Mathematici. Jeżeli istnieje potrzeba załadowania innej dostępnej wersji Mathematici, najpierw należy sprawdzić dostępne wersje na wybranym klastrze

module avail mathematica

lub

module avail plgrid/apps/mathematica 

lub

module spider mathematica

a potem załadować wybrany moduł, np.

module load plgrid/apps/mathematica/9.0

3. W celu uruchomienia Mathematici w trybie graficznym w konsoli należy wpisać

mathematica

4. Utworzenie nowego pliku wsadowego W oknie powitalnym Mathematici należy kliknąć na

"New Document\Package"(Mathematica 10) lub "Create New\Other\Package"(Wcześniejsze wersje Mathematica).

Otwiera się edytor, gdzie można umieszczać polecenia Mathematici.

5. Mathematica wspiera obliczenia równolegełe Dokumentacja: https://reference.wolfram.com/language/guide/ParallelComputing.html

6. Po przygotowaniu pliku należy zapisać plik z rozszerzeniem .m (Mathematica Package). Należy kliknąć:

File\Save as\test1.m

Domyślny katalog docelowy Mathematici to ~/Wolfram Mathematica. Można sprawdzić zawartość katalogu przez polecenie w konsoli

ls ~/Wolfram\ Mathematica

7. Kończymy pracę z Mathematicą w trybie graficznym zamykając edytor i okno powitalne.

8. Odpinanie modułu

module unload plgrid/apps/mathematica

lub jeżeli była załadowana inna wersja Mathematici niż domyślna to (odnośnie wcześniejszego przykładu)

module unlod plgrid/apps/mathematica/9.0

ewentualnie w celu odpięcia wszystkich modułów załadowanych przez użytkownika

module purge

9. Przygotowanie pliku sbatch (np. o nazwie mathematica_test_task) do uruchomienia zadania na klastrze. Przykładowy skrypt do uruchomienia zadania dla Mathematici można przygotować w dowolnym edytorze tekstu: gedit, nano lub vim

#!/bin/bash
#SBATCH -N 1
#SBATCH -n 24
#SBATCH -p plgrid
#SBATCH --time 01:00:00
#SBATCH --ntasks-per-node=24
#SBATCH -J mathematica-test1
#SBATCH --mail-type=FAIL,END
#SBATCH --mail-user=nazwa_uzytkownika@domena

module load plgrid/apps/mathematica

cd $SLURM_SUBMIT_DIR
math -script mathematica_test_task.m

więcej: https://kdm.cyfronet.pl/portal/Prometheus:Podstawy srun https://computing.llnl.gov/linux/slurm/srun.html


Najprościej jest umieścić plik wsadowy Mathematici w tym samym katalogu co skrypt do uruchomienia zadania

10. Uruchomienie zadania. Będąc zalogowanym na maszynie dostępowej należy przejść do katalogu gdzie znajduje się plik do uruchamiania zadania i w konsoli wpisać

sbatch mathematica_test_task

Przykłady

Przykładowy skrypt wykonujący mnożenie macierzy w pętli 10k

(* Generowanie macierzy 50x50 *)
a=RandomReal[{-10,10},{50,50}]; 
b=RandomReal[{-10,10},{50,50}];

(* Pomiar czasu wykonania pętli 10k w której mnożone są macierze a i b *)
time = AbsoluteTiming[Do[a.b;,{n,10000}];]; 

(* Zapis czasu do pliku *)
Export["test1.txt",time];

Zmierzony czas to ok. 5.3 [s].

To samo zadanie ale w trybie równoległym.

(* Pobranie informacji o ilości dostępnych rdzeni *)
(* cores = $ProcessorCount; *)

(* Uruchamianie kerneli *)
(* LaunchKernels[cores]; *)
(* Bezpieczniej jest napisać jak poniżej, wtedy uruchomią się kernele na dostępnych rdzeniach i tyle na ile pozwala licencja *)
(* LaunchKernels[]; *)

(* lub wpisać liczbę kerneli *)
LaunchKernels[4];

a=RandomReal[{-10,10},{50,50}];
b=RandomReal[{-10,10},{50,50}];

(* Pomiar czasu wykonania pętli 10k dla operacji mnożenia macierzy a i b w trybie zrównoleglonym *)
time = AbsoluteTiming[Parallelize[Do[a.b;,{n,10000}];];]; 

Export["test2.txt",time];
CloseKernels[]; (* Kończenie pracy kerneli *)

Zmierzony czas to ok. 0.43 [s].

Można również użyć automatycznych funkcji do obliczeń równoległych takich jak np. ParallelTable, ParallelDo. Funkcje te automatycznie uruchamiają kernele.

Poniższy przykład pokazuje jak użyć ParallelTable


a=RandomReal[{-10,10},{50,50}];
b=RandomReal[{-10,10},{50,50}];

time = AbsoluteTiming[ParalleTable[Do[a.b;,{n,2500}];,{i,4}];];

Export["test3.txt",time];

Zmierzony czas to ok. 1.2 [s].

Funkcje wbudowane takie jak mnożenie macierzy są automatycznie zrównoleglone i nie trzeba pisać dodatkowego kodu. Powyższy przykład pokazuje jak można zrównoleglić obliczenia w Mathematice dla przypadku gdy obliczenia mogą być przeprowadzone w sposób niezależny od siebie.

Źródło: https://reference.wolfram.com/language/guide/ParallelComputing.html