如果我声明一个变量:
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维,我应该分配什么?
提前致谢.
这段代码会给你同样的警告吗?
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个字节来存储.
归档时间: |
|
查看次数: |
6103 次 |
最近记录: |