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

Просто пара фактов для настройки:

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

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

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

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

Смежные вопросы:

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

пример кастома thrust распределитель

1 ответ

Решение

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

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

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

Другие вопросы по тегам