Смешайте пользовательское управление памятью и Thrust в CUDA

В моем проекте я реализовал специальный распределитель памяти, чтобы избежать ненужных вызовов cudaMalloc после того, как приложение «прогреется». Более того, я использую собственные ядра для базового заполнения массивов, арифметических операций между массивами и т. Д. И хотел бы упростить свой код, используя Thrust и избавившись от этих ядер.Каждый массив на устройстве создается и доступен через необработанные указатели (на данный момент), и я хотел бы использовать методы device_vector и Thrust для этих объектов, но я обнаружил, что конвертирую между необработанные указатели и device_ptr <> постоянно, что несколько загромождает мой код.

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

5
задан Cœur 30 January 2019 в 04:10
поделиться