cuda - 内存分配崩溃

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cuda - 内存分配崩溃相关的知识,希望对你有一定的参考价值。

好吧我试图在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)!
", cudaGetErrorString(err));
    exit(EXIT_FAILURE);
   }


    cudaMemcpy(d_points,points ,nBytes ,cudaMemcpyHostToDevice);
    puts("memory allocated successfully");

}

我尝试打印points阵列的第一个元素,以及nchunksize,它出来正确。

这是它似乎崩溃的点(我禁用了其余部分)。无论调试打印如何,它都会崩溃。

我唯一能想到的是尺寸。

n是250,000,chunksize是64,000,我打算分配125块,每块512个线程。

我不知道这是不是一个好主意,但这是一个副主题,因为我可以;甚至达到内核调用。

答案

重启visual studio解决了这个问题

以上是关于cuda - 内存分配崩溃的主要内容,如果未能解决你的问题,请参考以下文章

每日一练5

CUDA中常量内存的动态分配

无法为cufftComplex数据类型分配CUDA设备内存

CUDA C

分配给设备内存的 CUDA 全局(如 C 语言)动态数组

CUDA统一内存