在opencl中是否有像memcpy这样的机制。我想在gpu上复制一个指针结构,因为我们不能直接从主机到设备复制它们,所以我决定为每个指针创建sepeprate缓冲区,然后将它们全部放在设备的一个结构中。所以,我希望有一个像memcpy
这样的机制将数据从一个缓冲区复制到另一个缓冲区。有什么类似的吗?
struct Grid_gpu {
cl_uint3 dims;
cl_uint* elements_beg_index;
cl_uint n_element_cells;
cl_uint* element_cells;
};
答案 0 :(得分:0)
所以,为此,我在我的设备上定义了一个结构如下:
typedef struct {
uint3 dims;
__global uint* element_begIndices;
__global uint n_element_cells;
__global uint* element_cells;
} Grid;
然后我只使用以下内核来填充Grid
类型的内存:
// a kernel to fill a grid acceleration structure.
__kernel void fill_grid_accel(
uint3 dims,
__global uint* element_begIndices,
uint n_element_cells,
__global uint* element_cells,
__global Grid* grid){
grid->dims.x = dims.x;
grid->dims.y = dims.y;
grid->dims.z = dims.z;
grid->element_begIndices = element_begIndices;
grid->n_element_cells = n_element_cells;
grid->element_cells = element_cells;
}
现在,grid
内存包含指针填充了所需的数据。