Пункт расписания в OpenMP

У меня есть часть кода (который является частью приложения), что я пытаюсь оптимизировать 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 имеют некоторый интеллектуальный способ динамично разработать стратегию расписания и время от времени изменять его?

7
задан chrisaycock 4 March 2013 в 14:00
поделиться

1 ответ

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

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

5
ответ дан 7 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: