MPI / openMP: возможно ли, что один процесс использует ресурсы других процессов в ожидании - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть программа на C ++, которая использует MPI и openMP и работает примерно так:

Some_stuff_done_by_all_ranks();
Comm.Barrier(); //wait until stuff is done by all ranks
if (rank==0)
 {
  very_slow_function(); //but efficiently parallelizable with openMP
 }
Comm.Barrier() //All ranks wait until the function is done
Comm.Bcast(result_of_for_loop,0) // Bring the result of very_slow_function() from rank 0 to other ranks
Some_more_stuff_done_by_all_ranks();

Когда выполняется very_slow_funtion (), все другие процессы MPI ожидают его результата, поэтому в основном все эти процессоры ничего не делают. Мне было интересно, есть ли способ для ранга 0 временно получить ресурсы, выделенные для остальных процессов MPI, чтобы эта функция могла работать быстрее.

Большое спасибо,

Joan

...