2010-06-16 2 views
7

У меня есть часть кода (которая является частью приложения), которую я пытаюсь оптимизировать с помощью OpenMP, я пытаюсь использовать различные политики планирования. В моем случае я заметил, что предложение schedule(RUNTIME) имеет преимущество над другими (я не указываю chunk_size). У меня два вопроса:Назначение расписания в OpenMP

  1. Когда я не указываю chunk_size, есть разница между schedule(DYNAMIC) и schedule(GUIDED)?

  2. Как OpenMP определяет планирование выполнения по умолчанию, которое хранится в переменной OMP_SCHEDULE?

я узнал, что, если не указана схема планирования, то по умолчанию schedule(STATIC) используются. Поэтому, если я не изменяю переменную OMP_SCHEDULE и не использую schedule(RUNTIME) в моей программе, будет ли схема планирования schedule(STATIC) все время или у OpenMP есть разумный способ динамически разрабатывать стратегию расписания и время от времени менять ее?

ответ

5
  1. Да, если вы не указываете размер куска, то DYNAMIC сделает размер всех кусков 1. Но GUIDED сделает минимальный размер порции 1, но и другие размеры порций будет зависит от реализации. Возможно, вы могли бы выяснить свою ситуацию, выполнив некоторые эксперименты или прочитав документацию.

  2. Как я понимаю, если переменная окружения OMP_SCHEDULE не установлена, расписание выполнения зависит от реализации. Я думаю, было бы очень странно, если бы не было одинакового расписания для каждого исполнения программы. Я не считаю, что OpenMP, который является набором директив времени компиляции, имеет какой-либо способ понять производительность вашей программы во время исполнения и выбрать расписание на основе такой информации.

+0

Thanks Mark. В моих тестах, DYNAMIC был несколько пунктов выше GUIDED, и RUNTIME был победителем все время. – Sayan

+0

Я получил этот ответ от доброго пользователя на форуме OpenMP - http://openmp.org/forum/viewtopic.php?f=3&t=880 – Sayan

+1

OpenMP, который представляет собой набор директив времени компиляции, может генерировать код, который контролирует производительность и корректирует расписание на основе этой информации. Я не говорю, что это сейчас, но это нельзя исключить просто потому, что это набор директив времени компиляции. – Shahbaz

Смежные вопросы