Постоянные потоки против устройства-очереди / вложенного параллелизма

cuda opencl gpgpu

377 просмотра

1 ответ

Есть ли еще преимущества использования постоянных потоков в GPGPU по сравнению с использованием-enqueue / nested-параллелизм на стороне устройства, если они могут быть применены?

Я читал некоторые старые статьи, где на старом оборудовании требовались постоянные потоки, чтобы получить лучшую производительность, и я не уверен, что использование enqueue / nested-параллелизма на стороне устройства сделало этот метод неуместным?

Я полагаю, в тех случаях, когда дочерние задачи полностью независимы после запуска от своих родителей, постоянные потоки все еще могут быть полезны?

Автор: iam Источник Размещён: 08.11.2019 11:32

Ответы (1)


3 плюса

Решение

Постоянные потоки как методология программирования, вероятно, будут еще некоторое время представлять интерес. Постоянные потоки могут предложить несколько преимуществ по сравнению с вложенным параллелизмом. Вот 2:

  1. Устранение задержки запуска: хотя она небольшая (возможно, всего несколько микросекунд), по крайней мере в случае динамического параллелизма CUDA (CDP) существует задержка запуска, связанная как с запусками ядра узла, так и с запусками дочернего ядра. Для требований с чрезвычайно низкой задержкой (например, обработка сетевых пакетов) модель рабочей очереди производителя / потребителя с постоянными потоками может предложить меньшую задержку и более быстрое выполнение, чем любой механизм, который включает запуск, связанный с получением новой работы.

  2. Оптимизация для использования памяти: новый новый вариант использования для постоянных потоков состоит в том, чтобы избежать шаблонов загрузки / сохранения, связанных с запусками ядра. Хорошее описание примера здесь, Основная идея заключается в том, что для повторной обработки аналогичной рабочей нагрузки мы можем тщательно оптимизировать использование встроенного хранилища данных (включая разделяемую память, а также, в частности, использование пространства регистров графического процессора), чтобы избежать необходимости загружать данные / параметры при запуске ядра, например, из глобальной памяти, а затем (возможно) сохранить обновленные параметры обратно в глобальную память по завершении работы ядра. Это может иметь существенные преимущества обработки для определенных рабочих нагрузок, когда используется большое количество переносимых параметров, и пространство параметров может быть сделано так, чтобы оно «помещалось» на кристалле. Поскольку новые графические процессоры имеют все больше и больше встроенного пространства для хранения регистров, это, вероятно, будет по-прежнему представлять интерес для еще больших рабочих нагрузок.

Вполне вероятно, что есть и другие конкретные случаи использования, где подход с постоянными потоками предлагает явные преимущества по сравнению с подходом запуска на работе. Это всего лишь два примера.

Короче говоря, постоянные ядра не являются общей стратегией для замены других типов парадигм обработки GPU, но в определенных случаях они могут обеспечить преимущества по сравнению с методами, которые запускают ядра повторно. Поэтому некоторый интерес к постоянным ядрам, вероятно, сохранится в течение некоторого времени.

Автор: Robert Crovella Размещён: 20.08.2016 04:22
Вопросы из категории :
32x32