lmmp.net
当前位置:首页 >> CUDA 二维数组操作 >>

CUDA 二维数组操作

还是你的意思是你的最后一行代码执行时会报错?还是数值不对? 内核函数 最后操作_GPU_IN[y][x] = _GPU_IN[y][x]*4; 整个没有用到_GPU_RET。 我不明白你程序的目的。

向 Kernel 中传的参数 ,应该使用 cudaMalloc(); 分配的吧!我看你上面的代码是用malloc(); 函数分配的, 可以用 一维的数组表示 二维的 情况并且操作起来比较简单。

既然是嵌套的,你内部函数也可以获得外部的地址啊

去查一下cudaMallocPitch()和cudaMemcpy2DToArray()这两个函数吧,一个分配空间,一个复制。 去下一份CUDA官方给的入门手册,里面就有。 我也是新手,没有环境,没法调程序,太细的东西也不清楚,所以只能说的大概了。

如果只做矩阵加法没有必要用到共享内存(shared memory)来做缓存。用一位数组存储矩阵,然后直接用strided loop就行了,这样可以保证代买的scalability。提速可以依靠Kepler架构的L1 缓存来实现自动的缓存。 __global__ void MatrixAdd( // Inp...

你好, 错误的地方如下: // 1. CUDA kernel 不接受二维数组// 2. N = 16, 然而你的a只有4x4个元素,而不是16x16float a[N][N]={{1,2,1,4},{3,6,7,9},{6,5,4,3},{1,2,1,8}};float b[N][N];// 3. odata和b的位置反了cudaMemcpy(odata,b,sizeof(fl...

网站首页 | 网站地图
All rights reserved Powered by www.lmmp.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com