soww

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.