Если я хочу переместить нижерасположенную структуру 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 мне нужно использовать эту структуру для наложения на носитель, чтобы имитировать, как частицы будут перемещаться по этому носителю. Каждый из миллионов частиц перемещается из тетраэдра в тетраэдр (каждый тетраэдр обладает свойствами среды, в которой он находится).
Линеаризация структур будет проще, а затем скопировать их на устройство.
В новых CUDA 6 глубоких копиях будет намного проще, если ваша вычислительная способность равна 3.x или выше с Unified Memory.