用cudaMalloc分配内存

oli*_*dev 1 cuda

如果我声明一个变量:

define SIZE = 900; // width and height of an image

float ** abc;
Run Code Online (Sandbox Code Playgroud)

所以,如果我想在GPU上为它分配内存,我应该像这样分配吗?

cudaMalloc(&abc, SIZE * SIZE * sizeof(float));
Run Code Online (Sandbox Code Playgroud)

因为我收到警告:整数运算结果超出范围.

如果我这样声明:

cudaMalloc(&abc, SIZE * sizeof(float));
Run Code Online (Sandbox Code Playgroud)

那很好,我不知道是否有数组2维,我应该分配什么?

提前致谢.

Pat*_*k87 7

这段代码会给你同样的警告吗?

  const size_t SIZE = 900;
  float *abc;
  cudaMalloc((void **)&abc, SIZE * SIZE * sizeof(float));
Run Code Online (Sandbox Code Playgroud)

试试这个代码,不是这样的代码......如果这不起作用,我猜是有一个严重的问题不是你的错.

你为什么要声明abc是浮点数的双重间接指针?malloc()和cudaMalloc()只分配连续的内存块...如果你想将abc解释为二维数组,你必须弄清楚这样做的逻辑(转换为/来自二维和线性指数)你自己.你要求nvcc做的是为float*分配3,240,000字节的内存,它应该只需要4个字节来存储.