如何有效地将内核 malloc 数据返回到 CPU
How do I efficiently return kernel malloc data back to cpu
假设我在内核中malloc
一些结构,在那里我执行了一些计算。然后我想返回这些变量,但是当我初始化内核时它们没有作为指针发送,所以如果我想返回这些值。我将如何去做?示例代码如下。
我只是作为一个一般性问题来问这个问题,而不是解决下面的代码。我还有其他问题,我遇到了这个问题,我不知道最好的方法是什么。我知道你可以扔一个指针并将结果复制到上面。但是,如果结果的大小不是预先确定的,则很难有效地做到这一点。所以我问是否有更好的方法。
__global__ void addKernel()
{
int* c = (int*)malloc(sizeof(int) * 32);
#pragma unroll
for (int i = 0; i < 32; i++){
c[i] += 1;
}
}
使用设备端分配(new
、malloc
或 cudaMalloc
)分配的指针不能由主机端 API 调用使用。因此,传输存储在设备运行时分配的内存中的数据的唯一方法是将其复制到内核中由主机分配的内存并传递给正在运行的内核。
运行时支持设备到设备内存副本的memcpy
和cudaMemcpyAsync
。我怀疑在这种情况下,这些将是你最好的选择。应仔细研究文档的这一部分,以便了解设备运行时 API 的限制。
相关文章:
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 从函数返回任意简单类型的数据
- 通过 NIF 从C++返回自定义数据结构
- 为什么我们使用在C++中返回数据结构的函数?
- 将传入的网络"char*"数据转换为"uint8_t"并返回的安全方法是什么?
- 如何在模板中返回正确类型的数据?
- H5Tget_member_type() 返回复合 HDF5 数据类型的奇怪值
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 在C++中,运算符 sizeof 返回什么数据类型?
- 函数重载并根据相同的输入返回不同的数据类型
- 从新实例的向量中检索数据返回 0
- 类类型中的访问器函数未从 C++ 中的私有数据返回正确的值
- c++ 函数,将数据返回到引用向量
- UNIX域套接字C++服务器无法将数据返回到客户端
- 获取和设置内部数据:返回类型,错误情况下的行为
- 存储在char数组中的双精度数据返回浮点值
- QtCreator QMediaPlayer元数据返回空白QString
- 直接使用变量(数组中的数据返回相同)或与指针一起使用