Пользовательский распределитель статической тяги?

Пара фактов по настройке:

  • Thrust не работает на месте для всех своих операций.
  • Вы можете предоставить пользовательские распределители для thrust::device_vectors.

Я просмотрел thrust::system и thrust::system::cuda и не нашел ничего похожего на статический системный распределитель. Под этим я подразумеваю, что не вижу способа заменить распределитель, который тяга использует внутри для выделения дополнительной памяти для неуместных алгоритмов.

Мне также трудно поверить, что функции, которые не находятся на месте, используют распределители для данного thrust::device_vectors для распределения рабочей памяти.

Вопрос: Есть ли в thrust способ замены внутреннего распределителя на определяемый пользователем?

Связанные вопросы:

подразумевает, что тяга работает неуместно

пример пользовательского распределителя thrust


person maxywb    schedule 22.08.2012    source источник


Ответы (1)


Пример Thrust custom_temporary_allocation демонстрирует, как создать собственный настраиваемый распределитель для временного хранилища, используемого внутри алгоритмов Thrust. В примере используется схема кэширования для выполнения распределения, но в принципе вы можете использовать любую стратегию, которая вам нравится.

По сути, идея состоит в том, чтобы создать собственный бэкенд, производный от бэкенда CUDA, специально для настройки распределения. Затем, когда вы хотите использовать алгоритм с вашим настраиваемым распределителем, вы указываете Thrust на свой пользовательский сервер при вызове алгоритма.

Обратите внимание, что для этой функции требуется Thrust 1.6 или выше.

person Jared Hoberock    schedule 22.08.2012
comment
Спасибо. Этот пример имеет смысл, но у меня стоит 1.4, поэтому он у меня не работает. Есть ли способ убедиться, что внутренние компоненты тяги используют правильный распределитель в более старых версиях тяги? - person maxywb; 23.08.2012
comment
Я не уверен, что вы подразумеваете под правильным распределителем. Версии Thrust старше 1.6 не могут настраивать временное распределение. - person Jared Hoberock; 23.08.2012
comment
Да, я тоже. У меня не было полного понимания того, как распределяется тяга, когда вы передаете device_vector с настраиваемым распределителем в функцию тяги. Игра с примером с распределителем выше ответила мне. Спасибо еще раз. - person maxywb; 23.08.2012