В чем преимущество "#pragma omp master "в отличие от" #pragma omp single"?
В OpenMP любой код внутри #pragma omp master
директива выполняется одним потоком (master) без подразумеваемого барьера в конце области. (См.раздел о главной директиве в учебнике LLNL OpenMP).
Это похоже на#pragma omp single nowait
(за исключением того, что вместо "master" любой поток может выполнять одну область).
при каких обстоятельствах, если таковые имеются, полезно использовать #pragma omp master
?
2 ответов
на single nowait
конструкция большую часть времени эквивалентна master
конструкция:
на
master
конструкция может использоваться внутри конструкции совместного использования работ, если возникнет какая-либо необходимость. Это не относится кsingle nowait
построить, так как две конструкции совместного использования не могут быть вложены в одну и ту же параллельную областьнекоторые библиотеки хотят, чтобы основной поток выполнял определенные операции. Например, библиотека MPI при инициализации с помощью уровень поддержки потока, равный
MPI_THREAD_FUNNELED
, позволяет только основным потокам совершать вызовы MPI
в дополнение к ограничениям вложенности single
конструкция может быть реализована медленнее, чем master
построить, потому что он более сложный и гибкий. Вы можете проверить свою конкретную реализацию, но в целом master
может быть реализован быстрее, поэтому несколько его вызовов могут принести пользу по сравнению с single nowait
строительство.