在CUDA内核内存调用中使用array[i][j]
using array[i][j] in a CUDA kernel memcpy call
我有一个以下设计的数组:color[100][3]
。我想在内核中填充这个数组,然后在主机代码中使用它。我怎样才能做到这一点呢?我只需要cudaMemcpy()
调用来发送和接收。
这是我要发送给device的内容:
err = cudaMallocPitch(&d_color, &pitch, 3 * sizeof(unsigned char),100);
这是我现在从设备(编辑)中获取的内容:
err = cudaMemcpy2D(color,100*3,d_color,pitch,3 *sizeof(unsigned char),3, cudaMemcpyDeviceToHost);
最后一次调用cudaMemcpy2D抛出错误:
"无效的论点"
如何获得color[100][3]
阵列的螺距?我应该假设它是3+1
填充的吗?
err = cudaMemcpy2D(
color,
pitch,
d_color,
sizeof(unsigned char) * 100 * 3, // <<< WRONG - source pitch, not it's size!
3 * sizeof(unsigned char),
100 * sizeof(unsigned char), // <<< Shouldn't it be number of rows, not column size in bytes?
cudaMemcpyDeviceToHost
);
Btw -使用uchar3类型不是更容易吗?
相关文章:
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- CUDA内核和数学函数的显式命名空间
- 码头化的C++应用程序是否向后兼容早期的内核版本
- C++内核出现Jupyter笔记本错误
- C++11 中不同类型的对象的 std::array 的替代方案
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- constexpr begin of a std::array
- C++如果必须在编译时确定大小,std::array 有什么意义?
- OpenGL VBO Indexing ( How to compute Index Array)
- 内存围栏是否涉及内核
- 标准::unordered_map 中的 std::array 的值初始化
- 将 2D 推力::d evice_vector 复矩阵传递给 CUDA 内核函数
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 确保编译时的特定 std::array 位置
- std::array的长度有大小限制吗?
- 将 std::array 移动到另一个 std::array
- OpenCL 内核参数中的字符***?
- 具有可分离内核的 2D 模糊卷积
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 在CUDA内核内存调用中使用array[i][j]