Как скопировать древовидную структуру тетраэдра в память устройства CUDA?

0

Если я хочу переместить нижерасположенную структуру TetrahedronStruct в память устройства CUDA, как мне следует продолжить?

struct TetrahedronStruct {
  int index;
  int region;
  TriangleFaces Faces[4];
  Vertex Vertices[4];
  struct TetrahedronStruct *adjTetrahedrons[4];
};

typedef struct {
  long double Nx, Ny, Nz;
  long double d;
  Vertex V[3];
} TriangleFaces;

typedef struct {
  long double x, y, z;
} Vertex;

Детали:

Предусмотрены детали сетки (количество узлов, тетраэдров, координат и областей). Создание дерева выполняется в цикле for. В принципе, каждое лицо находится и расположено в дереве соответственно с его координатами и смежностью.

В устройстве CUDA мне нужно использовать эту структуру для наложения на носитель, чтобы имитировать, как частицы будут перемещаться по этому носителю. Каждый из миллионов частиц перемещается из тетраэдра в тетраэдр (каждый тетраэдр обладает свойствами среды, в которой он находится).

  • 0
    @talonmies Я буду искать, чтобы делать то, что вы предлагаете здесь: stackoverflow.com/questions/6564016/… Спасибо!
  • 0
    Здесь недостаточно информации, чтобы конструктивно ответить на этот вопрос. Объясните, как структура была размещена в памяти хоста и какова цель на устройстве, как только оно будет у вас в памяти устройства CUDA.
Теги:
cuda
memory-management
tree

1 ответ

0
Лучший ответ

Линеаризация структур будет проще, а затем скопировать их на устройство.

В новых CUDA 6 глубоких копиях будет намного проще, если ваша вычислительная способность равна 3.x или выше с Unified Memory.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню