Буфферы

Тема в разделе "OpenCL", создана пользователем _qwe8013, 22 окт 2024.

  1. _qwe8013

    _qwe8013 Active Member

    Публикаций:
    2
    Регистрация:
    30 ноя 2016
    Сообщения:
    125
    Имеется набор kernel-ов, которые надо запустить одновременно. Есть буффер, который передаётся всем kernel-ам, каждый kernel обращается (на чтение/запись) к разным участкам этого буффера (участки не пересекаются). Есть вариант разбить этот буффер на большое количество более мелких, но этих мелких буфферов в такой ситуации будет много. Какой вариант эффективнее?
     
  2. MaKsIm

    MaKsIm Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    94
    Тогда в чем проблема. Пускай обращаются. Зачем разбивать? Раздайте всем по собственному указателю на свой участок и пускай сидят в одном буфере.

    Их же в таком случае даже синхронизировать не надо. Достаточно предусмотреть зазоры между буферами и заполнить их контрольными значениями для определения переполнения
     
    _qwe8013 нравится это.
  3. _qwe8013

    _qwe8013 Active Member

    Публикаций:
    2
    Регистрация:
    30 ноя 2016
    Сообщения:
    125
    Я просто подозревал, что там могут быть проблемы с производительностью, раз их нет, то так и сделаю, спасибо за ответ.
     
  4. MaKsIm

    MaKsIm Member

    Публикаций:
    0
    Регистрация:
    11 фев 2008
    Сообщения:
    94
    Если и будут проблемы с производительностью, то это уже не из-за буфера(ов). Избыточная сихронизация (куча мест, в которых простаивают вычислители), слишком много потоков (недостаточно вычислителей), недостаточно пропускной способности (скорости работы памяти/шины передачи данных) итд итп. В любом случае разделением это не решится.
     
  5. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    189
    а что такое кернел?