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

Z KdmWiki
Przejdź do nawigacji Przejdź do wyszukiwania
Linia 16: Linia 16:
 
  mkl/12.0.1.107 load complete
 
  mkl/12.0.1.107 load complete
  
Na przykład, linkowanie z bibliotekami mvapich2 (jedna z implementacji standardu [[MPI | mpi]]-2) budowanymi intelowskimi kompilatorami można uczynić na dwa sposoby:
 
*'''przy pomocy wrapera na kompilator'''
 
module load mvapich2/1.5.1p1
 
mvapich2/1.5.1p1
 
echo $PATH
 
'''/usr/local/mpi/intel/mvapich2-1.5.1p1-intel_composerxe-2011.1.107/bin/'''
 
which mpif90
 
'''/usr/local/mpi/intel/mvapich2-1.5.1p1-intel_composerxe-2011.1.107/bin/mpif90'''
 
  
:Wraper '''mpif90''' odpowiednio ustawia flagi kopmilatora ifort (standard - fortran90), tak aby aplikacja korzystała z komunikacji międzyprocesowej.
+
===Proces kompilacji===
*'''ręcznie ustawiając odpowiednie flagi'''
 
  
Na klastrze [[Nova | Supernova ]] zainstalowano wiele bibliotek implementujących standardy[[MPI | mpi]], [[MPI2 | mpi-2]] oraz [[OpenMP | OpenMP ]] przy użyciu pakietów kompilatorów opensource`owych (gcc) oraz dostarczonych od intela.
+
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 | bibliotek
 
+
współdzielonych]]
Na przykład.
 
* openmpi/1.4.3
 
* openmpi/1.4.3-intel_10.1
 
* openmpi/1.4.3_gcc412
 
* openmpi/1.4.3_gcc453
 
* mvapich2/1.5.1p1
 
* mvapich2/1.6
 
* mvapich2/1.6_gcc
 

Wersja z 13:32, 30 sie 2011

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

Znakomita większość oprogramowania na klastrze zainstalowana jest tak, aby korzystała z któregoś z protokołów wymiany informacji między procesami (mpi, OpenMP, PVM). Podczas kompilacji rónoległych aplikacji należy odnieść się, odpowiednio konfigurując srodowisko systemowe, do bibliotek wspomnianych wyżej protokołów.

Odpowiednie ustawienie środowiska pracy polega na:

  • załadowaniu modułu dla wybranego kompilatora np.
module load intel/12.0 
intel/12.0 load complete
  • załadowaniu odpowiednich bibiliotek mpi-owych np.
 module load mvapich2/1.5.1p1
 mvapich2/1.5.1p1 load complete
Należy pamiętać, aby biblioteki mpi-owe zostały zbudowane wersją kompilatora, na kŧórą wskazują
zmienne środowiskowe.
  • załadowabnie innych bibliotek wymaganych przez kompilowaną aplikację, na przykład matematycznych:
module load mkl/12.0.1.107
mkl/12.0.1.107 load complete


Proces kompilacji

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 | bibliotek współdzielonych]]