Kompilacja aplikacji równoległych: Różnice pomiędzy wersjami

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
 
(Nie pokazano 16 wersji utworzonych przez 2 użytkowników)
Linia 1: Linia 1:
<small>< [[Podręcznik użytkownika KDM]] < [[Kompilacja aplikacji równoległych]]</small>
+
<small>< [[Podręcznik użytkownika KDM]] < [[Kompilacja aplikacji na klastrze]] < [[Kompilacja aplikacji równoległych]]</small>
  
Znakomita większość oprogramowania na klastrze zainstalowana jest tak, aby korzystała z któregoś z protokołów wymiany informacji między procesami ([[MPI |mpi]],[[OpenMP | OpenMP]],[[PVM | PVM]]).
+
Znakomita większość oprogramowania na klastrze [[Bem]] jest zainstalowana w wersji równoległej tak, aby korzystała z jednego ze sposobów wymiany informacji między procesami (m.in. [[MPI|MPI]], [[OpenMP|OpenMP]], [[PVM|PVM]]). Podczas kompilacji aplikacji równoległych należy odnieść się, odpowiednio [[korzystanie z modułów |konfigurując środowisko systemowe]], do bibliotek wspomnianych wyżej środowisk równoległych.
Podczas kompilacji rónoległych aplikacji należy odnieść się, odpowiednio [[korzystanie z modułów | konfigurując srodowisko systemowe]], do bibliotek wspomnianych wyżej protokołów.
 
  
===Odpowiednie ustawienie środowiska pracy polega na:===
+
=== Przygotowanie środowiska pracy ===
* załadowaniu modułu dla wybranego kompilatora np.
+
Przygotowanie środowiska pracy polega na:
  module load intel/12.0  
+
* załadowaniu [[korzystanie z modułów|modułu]] dla wybranego kompilatora np.:
intel/12.0 load complete
+
  module load intel/15.0  
* załadowaniu odpowiednich bibiliotek mpi-owych np.
+
* załadowaniu odpowiednich bibliotek MPI-owych np.:
  module load mvapich2/1.5.1p1
+
module load openmpi/1.10.1-intel15.0
  mvapich2/1.5.1p1 load complete
+
{{uwaga3|Należy pamiętać, aby biblioteki MPI-owe zostały zbudowane wersją kompilatora, na którą wskazują zmienne środowiskowe}}
'''Należy pamiętać, aby biblioteki mpi-owe zostały zbudowane wersją kompilatora, na kŧórą wskazują<br/> zmienne środowiskowe.'''
+
* załadowanie innych bibliotek wymaganych przez kompilowaną aplikację, na przykład matematycznych:
* załadowabnie innych bibliotek wymaganych przez kompilowaną aplikację, na przykład matematycznych:
+
  module load mkl/15.0
  module load mkl/12.0.1.107
 
mkl/12.0.1.107 load complete
 
  
 +
=== Proces kompilacji ===
  
===Proces kompilacji===
+
Najłatwiej skorzystać z wrapera. Wraper to skrypt, który odwołuje się do właściwego kompilatora i ustawia za użytkownika odpowiednie opcje. Opcje związane są m.in. ze sposobem linkowania [http://pl.wikipedia.org/wiki/Biblioteka_wsp%C3%B3%C5%82dzielona współdzielonych_bibliotek] MPI.
 
 
Najłatwiej skorzystać z wrapera. Wraper to skrypt, który odwołuje się do właściewego kompilatora i ustawia za użytkownika odpowiednie opcje. Opcje związane są m.in. ze sposobem linkowania [http://pl.wikipedia.org/wiki/Biblioteka_wsp%C3%B3%C5%82dzielona współdzielonych_bibliotek](shared objects) mpi-owych.
 
 
 
Pakiet kompilatorów zainstalowanych na klastrze "intel" zawiera nastepujące elementy:
 
*kompilator C - icc
 
*kompilator C++ - icpc
 
*kompilator FORTRAN77 - ifort
 
*kompilator FORTRAN90 - ifort
 
 
 
Sprzężone z nimi w wrapery to:
 
*kompilator C - mpicc
 
*kompilator C++ - mpicxx
 
*kompilator FORTRAN77 - mpif77
 
*kompilator FORTRAN90 - mpif90
 
  
 
{| class="wikitable" style="text-align:right"
 
{| class="wikitable" style="text-align:right"
|+ Tytuł tabeli. Pojawia się bez ramki
+
|+ Nazwy kompilatorów w pakiecie [http://software.intel.com/en-us/articles/intel-composer-xe/ Intel Composer XE 2011] i odpowiadających im wraperów z openmpi dostępnych na klastrze [[Bem]].
nad tabelą i jest wycentrowany
 
 
! nazwa kompilatora
 
! nazwa kompilatora
! symbol kompilatora
+
! polecenie kompilatora
 
! nazwa wrapera
 
! nazwa wrapera
 
|-
 
|-
Linia 46: Linia 29:
 
| kompilator C++
 
| kompilator C++
 
| icpc
 
| icpc
| mpicxx
+
| mpic++
 
|-
 
|-
 
| kompilator FORTRAN77
 
| kompilator FORTRAN77
Linia 53: Linia 36:
 
|-
 
|-
 
| kompilator FORTRAN90
 
| kompilator FORTRAN90
| ifort90
+
| ifort
 
| mpif90
 
| mpif90
 
|}
 
|}
 +
Czasami, gdy nie można, z różnych powodów użyć wrapera, należy ustawić flagi ręcznie. Jest to rozwiązanie zalecane dla zaawansowanych użytkowników, którzy mają pełną świadomość ustawianych opcji.
 +
 +
'''Zobacz też:'''
 +
* [[Korzystanie z modułów]]
 +
[[Kategoria:Podręcznik użytkownika]]

Aktualna wersja na dzień 11:38, 22 lut 2016

< Podręcznik użytkownika KDM < Kompilacja aplikacji na klastrze < Kompilacja aplikacji równoległych

Znakomita większość oprogramowania na klastrze Bem jest zainstalowana w wersji równoległej tak, aby korzystała z jednego ze sposobów wymiany informacji między procesami (m.in. MPI, OpenMP, PVM). Podczas kompilacji aplikacji równoległych należy odnieść się, odpowiednio konfigurując środowisko systemowe, do bibliotek wspomnianych wyżej środowisk równoległych.

Przygotowanie środowiska pracy

Przygotowanie środowiska pracy polega na:

  • załadowaniu modułu dla wybranego kompilatora np.:
module load intel/15.0 
  • załadowaniu odpowiednich bibliotek MPI-owych np.:
module load openmpi/1.10.1-intel15.0

 ! Należy pamiętać, aby biblioteki MPI-owe zostały zbudowane wersją kompilatora, na którą wskazują zmienne środowiskowe

  • załadowanie innych bibliotek wymaganych przez kompilowaną aplikację, na przykład matematycznych:
module load mkl/15.0

Proces kompilacji

Najłatwiej skorzystać z wrapera. Wraper to skrypt, który odwołuje się do właściwego kompilatora i ustawia za użytkownika odpowiednie opcje. Opcje związane są m.in. ze sposobem linkowania współdzielonych_bibliotek MPI.

Nazwy kompilatorów w pakiecie Intel Composer XE 2011 i odpowiadających im wraperów z openmpi dostępnych na klastrze Bem.
nazwa kompilatora polecenie kompilatora nazwa wrapera
kompilator C icc mpicc
kompilator C++ icpc mpic++
kompilator FORTRAN77 ifort mpif77
kompilator FORTRAN90 ifort mpif90

Czasami, gdy nie można, z różnych powodów użyć wrapera, należy ustawić flagi ręcznie. Jest to rozwiązanie zalecane dla zaawansowanych użytkowników, którzy mają pełną świadomość ustawianych opcji.

Zobacz też: