У меня есть часть кода (которая является частью приложения), которую я пытаюсь оптимизировать с помощью OpenMP, я пытаюсь использовать различные политики планирования. В моем случае я заметил, что предложение schedule(RUNTIME)
имеет преимущество над другими (я не указываю chunk_size). У меня два вопроса:Назначение расписания в OpenMP
Когда я не указываю chunk_size, есть разница между
schedule(DYNAMIC)
иschedule(GUIDED)
?Как OpenMP определяет планирование выполнения по умолчанию, которое хранится в переменной
OMP_SCHEDULE
?
я узнал, что, если не указана схема планирования, то по умолчанию schedule(STATIC)
используются. Поэтому, если я не изменяю переменную OMP_SCHEDULE
и не использую schedule(RUNTIME)
в моей программе, будет ли схема планирования schedule(STATIC)
все время или у OpenMP есть разумный способ динамически разрабатывать стратегию расписания и время от времени менять ее?
Thanks Mark. В моих тестах, DYNAMIC был несколько пунктов выше GUIDED, и RUNTIME был победителем все время. – Sayan
Я получил этот ответ от доброго пользователя на форуме OpenMP - http://openmp.org/forum/viewtopic.php?f=3&t=880 – Sayan
OpenMP, который представляет собой набор директив времени компиляции, может генерировать код, который контролирует производительность и корректирует расписание на основе этой информации. Я не говорю, что это сейчас, но это нельзя исключить просто потому, что это набор директив времени компиляции. – Shahbaz