-
Notifications
You must be signed in to change notification settings - Fork 19
Metode de dezvoltare software
Inițializarea MPI-ului
MPI_Init(&argc, &argv);
Aflarea "mărimii lumii" (determină câte procese există)
int size;
MPI_Comm_size(MPI_COMM_WORLD, &size);Aflarea ID-ului procesului curent (0 = primul proces)
int rank;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);Trimite array-ul care începe la adresa buf, având mărime count și elementele de tip dtype și le
trimite la procesul dest cu tag-ul tag aflat în universul comm (de obicei MPI_COMM_WORLD).
int MPI_Send(void *buf, int count, MPI_Datatype dtype, int dest, int tag, MPI_Comm comm);La fel ca mai sus numai că primește buf și mai setează o variabilă status în care este reținut rezultatul apelului.
int MPI_Recv(void *buf, int count, MPI_Datatype dtype, int source, int tag, MPI_Comm comm, MPI_Status *status);-
Dată o matrice cu numere întregi, determinați dacă există o secvență crescătoare de valori într-o formă de L, anume crescătoare pe pozițiile ( (i, j), (i, j+1), (i, j+2), (i+1, j+2) ).
-
Se dă problema înmulțirii matricilor pătrare, cu numere întregi, de dimensiune putere a lui 2. Descrieți informal un algoritm paralel de tip devide-et-impera pentru această problemă, apoi dați o implementare în MPI-pseudocod. Discutați pe scurt eficiența versiunii paralele față de cea secvențială.
Crearea unui thread
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);Așteptarea unui thread să termine
int pthread_join(pthread_t thread, void **retval);Ieșirea dintr-un thread
void pthread_exit(void *retval);Inițializarea unui mutex
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *attr);Blocarea / Deblocarea unui mutex
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);Distrugerea unui mutex
int pthread_mutex_destroy(pthread_mutex_t *mutex);