Wielowątkowość (inne pytanie brzmialo poziomy watkow)
Poziomy wsparcia wątków/wielowątkowości:
- MPI_THREAD_SINGLE – brak wsparcia dla wielu wątków (tylko jeden wątek będzie wykonywany)
- MPI_THREAD_FUNNELED – proces może mieć wiele wątków, ale tylko główny wątek może wykonywać zapytania MPI (tylko wątki zainicjalizowane przez MPI_Init_thread będą mogły
wywoływać funkcje MPI)
- MPI_THREAD_SERIALIZED – proces może mieć wiele wątków, wszystkie wątki mogą wysyłać wiadomości MPI, ale nie wszystkie na raz (tylko jeden wątek będzie mógł korzystać z MPI w tym samym
czasie)
- MPI_THREAD_MULTIPLE – brak ograniczeń (wiele wątków może korzystać z MPI naraz)
Żeby używać wielowątkowości trzeba zainicjalizować MPI przy użyciu funkcji
int MPI_Init_thread (int *argc, char ***argv, int required, int *provided)
z parametrem required na poziomie, co najmniej MPI_THREAD_FUNNELED.
Następnie można użyć biblioteki pthreads (posix threads) pamiętając o ograniczeniach, jakie niesie wybrany poziom wsparcia wątków w MPI.