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