2013-09-26 4 views
0

Я пытаюсь скомпилировать код CUDA C для графического процессора с архитектурой sm_10, который не поддерживает вызов malloc из __global__.Альтернативы malloc для распределения динамической памяти в функциях ядра CUDA

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

Есть ли способ скопировать все дерево с помощью cudaMalloc? Я думаю, что такой подход просто скопирует корень моего дерева.

+1

Можете ли вы показать свой код, пожалуйста? – StormeHawke

+2

Последняя часть вашего вопроса не очень понятна. Что вы подразумеваете под _copy для всего дерева с помощью 'cudaMalloc'_? 'cudaMalloc' используется только для выделения памяти. Не могли бы вы также объяснить, почему вы ожидаете, что с помощью 'cudaMalloc' вы сможете копировать корень своего дерева? – JackOLantern

ответ

3

Цитирование Руководства по программированию CUDA C

динамического глобальное распределения памяти и операция поддерживается только устройствами вычислительных возможности 2.x и выше.

Для вычислительных возможностей раньше, чем 2.0, единственные возможности:

  1. Использования cudaMalloc от принимающей стороны, чтобы выделить столько глобальной память, как вам нужно в __global__ функции;
  2. Использовать статическое распределение, если вы знаете требуемый размер памяти во время компиляции;
Смежные вопросы