Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Acest post va fi dedicat diferitelor aspecte ale colaborării cu cea mai populară bibliotecă pentru dezvoltarea programelor paralele - MS-MPI.

Similar cu algoritmul descris mai jos, proiectul este configurat pentru MPICH2, cu excepția altor căi de bibliotecă și mpiexec. Configurarea proiectului și executarea programelor paralele nu este diferită în cea de-a zecea versiune a Visual Studio.

În acest manual, computerul care compilează și execută programul are numele de domeniu hnwindows.

1 - Creați un proiect C ++

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

(În versiunea rusă a Visual C ++ => General, "Empty Project")

Deschideți proprietățile proiectului.

2 - Modificați valoarea câmpului subsistemului în Linker => System to CONSOLE (/ SUBSYSTEM: CONSOLE) (pentru versiunea rusă VS: Linker => System => Subsystem)

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

3 - Adăugați calea către biblioteci suplimentare la linker (în versiunea rusă a VS trebuie să mergeți la fila General)
Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

4 - Adăugați dependențe suplimentare la linker. Introduceți msmpi.libWs2_32.lib. Acest program folosește o dependență suplimentară Ws2_32.lib, această bibliotecă este utilizată pentru comunicații în rețea, în alte proiecte nu pot fi implicate.
Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

5 - adăugați un fișier C ++ la proiect (în acest manual vom folosi programul Hello World), faceți clic dreapta pe numele proiectului, Add => Adăugați un element, unde să alegeți fișierul C ++:

6 - Apelați proprietățile proiectului, va apărea o nouă filă C / C ++. Adăugați pe traseele compilatorului căile pentru fișiere suplimentare (pentru versiunea rusă: directoare de includere suplimentară):

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

7 - Pentru ca nodurile să lanseze cu succes programul, este necesar să ne compilam programul cu toate dependențele. Pentru a face acest lucru, valoarea "Utilizarea MFC" trebuie modificată la "Utilizați MFC într-o bibliotecă statică".

8 - Compilați programul. Construiți proiectul (în versiunea rusă) <имя проекта>).

Este necesar să se acorde atenție că, în cazul în care proiectul "se întâlnește" fără a specifica "MFC ca o bibliotecă statică", dimensiunea fișierului binar este foarte diferită. În cazul acestui program - fără MFC static de aproximativ 28 kb, cu - aproximativ 600 kb.

Trebuie de asemenea remarcat faptul că, dacă sunt necesare calcule multiprocesoare, atunci nu este necesară "colectarea" MFC într-o formă statică - toate bibliotecile necesare sunt pe calculatorul pe care are loc dezvoltarea. În cazul aceluiași start pe clusterul MFC într-o formă statică, este pur și simplu necesar, deoarece nodurile ar putea să nu aibă bibliotecile necesare.

Pentru ca programul să fie accesibil tuturor nodurilor, este necesar să se pună fișierul binar în directorul accesibil prin rețea la toate nodurile clusterului.

Rularea programului MPI în diferite moduri

mpiexec -n 10 \\ hnwindows \ share \ MyMPIProject.exe

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Utilizarea programului mpiexec (lista completă a opțiunilor poate fi numită mpiexec / help2)

mpiexec [opțiuni] executabil [args] [. [opțiuni] exe [args]. ]

mpiexec -configfile

-n <количество процессов>

-env <название переменной> <значение переменной>

-wdir <директория, в которой хранятся файлы>

-găzduiește host1 [m1] host2 [m2]. hostn [mn] [listă de computere în cazul utilizării clusterului, sintaxă: -hosts 1 node-12 2 nod-13 3 nod-14 etc.)

-miezuri <количество ядер, которое нужно задействовать, на каждом процессоре>

În cazul adăugării cu succes, trebuie să apară inscripția:

Jobul a fost trimis. ID: [].

Exemple de adăugare manuală a sarcinilor:

mpiexec -hosts 1 server1 master. - la 8 lucrători

job submit / numere: 16 mpiexec \\ hnwindows \ share \ MyMPIProject.exe

executați sarcina pe 16 nuclee

executați sarcina parametrică, cu: 6-12 - intervalul valorilor care trebuie modificate, 3 - pasul dintre ele, * - locul pentru înlocuirea valorilor. În consecință, această comandă va începe trei sarcini:

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Executarea sarcinilor utilizând Managerul de cluster

Pentru calculele de succes într-un cluster, fișierul programului și toate datele de intrare trebuie să fie accesibile tuturor nodurilor. În acest caz (și în orice altul), este optimă utilizarea fișierelor situate în rețea, unde toate nodurile (inclusiv nodul principal) au acces.

Pentru a adăuga sarcini, trebuie să utilizați consola din partea dreaptă a acțiunilor, submeniul de depunere a lucrărilor. În funcție de tipul de activitate, puteți selecta o nouă lucrare, o nouă lucrare cu o singură sarcină, o nouă lucrare Parametric de ștergere

New Job: dialog pentru crearea unei sarcini în care pot fi mai multe sub-sarcini. Din câmpurile necesare pentru selectare, să marcăm resursele pentru locuri de muncă: poate fi "nucleu", "soclu", "nod". Utilizarea resurselor alocate exclusiv pentru această lucrare îi spune administratorului de sarcini că resursele selectate vor fi ocupate exclusiv de această sarcină.

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Următoarea fila Listă sarcini este responsabilă pentru adăugarea sub-sarcinilor:

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Puteți adăuga funcția de bază, sarcina parametrică, sarcina din fișier.

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Linia de comandă: cum să porniți sarcina.

Director de lucru: directorul de lucru, care va fi folosit pentru a determina căile absolute pentru intrarea / ieșirea / eroarea standard.

Intrare standard: fișier de intrare

Ieșire standard: fișier pentru datele de ieșire

Eroare standard: fișier pentru erorile de execuție.

După ce faceți clic pe Trimiteți, dacă totul a fost completat corect, sarcina va apărea în fila Activ:

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

După finalizarea calculelor, sarcina își va schimba starea fie la Terminat:

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Deoarece fișierul pentru datele de ieșire nu a fost specificat, le putem vedea făcând dublu clic pe proprietățile de activitate din fereastra din partea de jos.

Exemplu de rulare a unei sarcini parametrice din linia de comandă:

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Integrarea Visual Studio și mpiexec.

Există, de asemenea, o modalitate suplimentară de a integra Visual Studio și mpiexec, una non-standard, dar vă permite să efectuați calcule de clustere direct de la Visual Studio, fără a rula HPC Cluster Manager, mpiexec etc.

Deci, în submeniul Instrumente este secțiunea Alte instrumente (în versiunea rusă Instrumente => Instrumente externe).

Ms-mpi - - studio vizuală - Windows hpc server - blog de dezvoltare rusă pentru hpc

Command - calea spre mpiexec de la implementarea MPI necesară. În argumente, trebuie să specificați calea către proiect ($ (TargetPath)), în directorul inițial - directorul proiectului.

Dintre opțiunile suplimentare utile, trebuie notat utilizarea ferestrei de ieșire - utilizați consola pentru a afișa rezultatele.

Comandă: C: \ Program Files \ pachetul HPC HP \ Bin \ job.exe

Desigur, acest exemplu nu ilustrează toate opțiunile de configurare ale instrumentelor externe. Acest instrument este suficient de puternic pentru a conecta în mod eficient mediul de dezvoltare la cluster-ul însuși (în plus, puteți realiza configurația pe care o puteți trimite la stația de lucru pentru a calcula banda de susținere a clusterului) și acest aspect va fi dedicat unui post separat.

Articole similare