好的我正在尝试在gpu上分配一个结构数组,它崩溃了(给出了停止的工作消息)。
这是结构:
typedef struct point_t {
int id;
float x, y;
} point;
这是cuda代码的一部分:
cudaError_t d_LoadPoints(point* points, int n , int chunkSize){
// Error code to check return values for CUDA calls
cudaError_t err = cudaSuccess;
int nBytes = n * sizeof(point);
// Allocate the device input points array
point* d_points;
err = cudaMalloc((void** )&d_points, nBytes);
if (err != cudaSuccess)
{
fprintf(stderr, "Failed to allocate device vector points (error code %s)!\n", cudaGetErrorString(err));
exit(EXIT_FAILURE);
}
cudaMemcpy(d_points,points ,nBytes ,cudaMemcpyHostToDevice);
puts("memory allocated successfully");
}
我尝试打印points
数组的第一个元素,以及n
和chunksize
,并且它正确显示。
这是它似乎崩溃的一点(我禁用了其余部分)。 无论调试打印如何,它都会崩溃。
我唯一能想到的是尺寸。
n
为250,000,chunksize
为64,000,我计划分配125个块,每个512个线程。
我不知道这是不是一个好主意,但这是一个副主题因为我可以;甚至到达内核调用。
答案 0 :(得分:-2)
重新启动visual studio修复了问题