Предложение расписания в OpenMP - PullRequest
7 голосов
/ 16 июня 2010

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

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

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

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

1 Ответ

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...