[ Pobierz całość w formacie PDF ]
argument. Plikiem wyjściowym jest plik wykonywalny nazwany tak jak pierwszy argument (czyli
kompilacja mpitest.cpp spowoduje utworzenie pliku mpitest.exe):
@ECHO OFF
REM --- ścieżka do katalogu kompilatora
SET GPP_PATH=C:\MinGW
REM --- ścieżka do katalogu z MPI
SET MPI_PATH=C:\Dev-Cpp\DeinoMPI
%GPP_PATH%\bin\g++ %1 %MPI_PATH%\lib\cxx.lib %MPI_PATH%\lib\mpi.lib -I %MPI_PATH%\include
-o %~n1.exe
REM --- usuwanie zmiennych
SET GPP_PATH=
SET MPI_PATH=
Można jeszcze pokusić się o sprawdzanie, czy aby na pewno podano argument. Poprawiony kod
będzie wyglądał następująco:
7/12
MPI pod Windows XP Maciej Tarkowski
@ECHO OFF
REM --- ścieżka do katalogu kompilatora
SET GPP_PATH=C:\MinGW
REM --- ścieżka do katalogu z MPI
SET MPI_PATH=C:\Dev-Cpp\DeinoMPI
IF (%1) == () GOTO E_BRAK_PARAM
%GPP_PATH%\bin\g++ %1 %MPI_PATH%\lib\cxx.lib %MPI_PATH%\lib\mpi.lib -I %MPI_PATH%\include
-o %~n1.exe
GOTO KONIEC
:E_BRAK_PARAM
ECHO Brak parametru! Podaj nazwę pliku do kompilacji.
:KONIEC
REM --- usuwanie zmiennych
SET GPP_PATH=
SET MPI_PATH=
Skrypt wklejamy np. do Notatnika i zapisujemy np. jako mpiCC.bat. Zauważmy, że skrypt nie
bierze pod uwagę ścieżki pliku zródłowego. Ja zapisałem swój skrypt w katalogu z różnymi
kodami, zatem wywołanie kompilacji ogranicza się jedynie do przejścia do katalogu z plikiem
zródłowym i wywołania skryptu:
8/12
MPI pod Windows XP Maciej Tarkowski
5. Dev-C++ na usługach
Podobnie jak w przypadku powyższym, konieczne jest podpięcie pewnych bibliotek na etapie
linkowania. Ponieważ Dev-C++ nie umożliwia innego rozwiązania tego problemu, zmuszeni
jesteśmy tworzyć oddzielny projekt dla każdej aplikacji.
Rozpoczynamy od utworzenia nowego projektu. W tym celu z menu plik wybieramy
Nowy -> Projekt. W oknie wybieramy typ aplikacji (oczywiście Cosole application ), podajemy
nazwę projektu, oraz określamy język programowania:
Po kliknięciu OK przechodzimy do dobrze znanego edytora.
Następną czynnością jest skonfigurowanie projektu tak, aby radził sobie z kompilacją musimy
przekonać linkera, aby łączył pewne biblioteki. Przechodzimy do Projekt -> Opcje projektu. W
otwartym oknie przechodzimy do zakładki Parametry i za pomocą przycisku Dodaj plik
dołączamy do konsolidatora biblioteki cxx.lib i mpi.lib umieszczone w folderze lib
DeinoMPI (u mnie: C:\Dev-Cpp\DeinoMPI\lib):
9/12
MPI pod Windows XP Maciej Tarkowski
Musimy jeszcze poinformować kompilator o konieczności zerkania do katalogów z bibliotekami i
plikami nagłówkowymi. Można to zrobić na dwa sposoby.
Pierwszy polega na dodaniu odpowiednich ścieżek do list dostępnych w zakładce Pliki/katalogi
Opcji projektu . Korzystanie z tego sposobu oznacza jednak każdorazowe wprowadzanie tych
ścieżek przy tworzeniu nowego projektu:
Drugim rozwiązaniem jest dodanie tych samych ścieżek w konfiguracji globalnej kompilatora.
Przechodzimy do Narzędzia -> Opcje kompilatora, zakładka Katalogi :
Wspomniane ścieżki to:
biblioteki: \lib (u mnie: C:\Dev-Cpp\DeinoMPI\lib)
pliki nagłówkowe C/C++ \include (u mnie: C:\Dev-
Cpp\DeinoMPI\include).
10/12
MPI pod Windows XP Maciej Tarkowski
Uff, i to by było na tyle konfiguracji. Teraz możemy oddać się przyjemności programowania w C++
z wykorzystaniem MPI.
Wklejmy przykładowy kod z rozdziału 3 i skompilujmy projekt (F9). Kompilacja powinna
zakończyć się powodzeniem.
Nastąpi automatyczne uruchomienie aplikacji. I tu pojawia się ciekawostka wynikająca ze specyfiki
środowiska MPI. Otóż jeśli korzystasz z firewalla, musisz się liczyć z jego interwencją w tym
momencie. Programy wykorzystujące MPI odwołują się bezpośrednio do procesów, co może nie
spodobać się firewallowi:
Dopiero kliknięcie Allow powoduje uruchomienie aplikacji.
Firewall często może interweniować w następnej fazie, czyli przy uruchamianiu wielu procesów.
11/12
MPI pod Windows XP Maciej Tarkowski
6. Uruchamianie
W celu uruchomienia wielu procesów tej samej aplikacji możemy skorzystać z omawianego
wcześniej programu DeinoMPIWin: w zakładce Mpiexec wskazujemy exe'ka, ustawiamy liczbę
procesów i klikamy execute . Dopilnujmy również wyboru konta credental store .
Jak wspominałem, firewall może w tym momencie bardzo protestować.
Opisana zakładka programu DeinoMPIWin jest graficzną nakładką na uruchamiany z wiersza
poleceń program mpiexec, znajdujący się w katalogu bin .
Uruchomienie naszej aplikacji z poziomu linii komend, jest równie proste. Podstawowa składnia
przedstawia się następująco:
mpiexec -np
Koniec.
12/12
[ Pobierz całość w formacie PDF ]