gpt4 book ai didi

cuda - 如果 cudaMalloc() 分配全局内存,那我为什么需要 cudaMemcpy()?

转载 作者:行者123 更新时间:2023-12-01 07:28:01 27 4
gpt4 key购买 nike

我在学习cuda,目前了解到cuda有cudaMalloc()为全局对象分配内存的函数。但是现在在一些矩阵乘法代码中,我看到他们正在使用另一个名为 cudaMemcpy() 的函数。它将对象从主机复制到设备或反之。但我不明白为什么需要它?自 cudaMalloc()正在分配全局内存,所有设备内核都应该可以访问它,不是吗?

我的误会在哪里?

最佳答案

查看 this deck 中的幻灯片 10、11 和 12 .它们说明了基本的处理流程。通常出现在内核调用之前的 cudaMemcpy 对应于幻灯片 10 中的事件。内核调用本身由幻灯片 11 表示。幻灯片 12 表示发生在内核调用之后的 cudaMemcpy。 GPU cudaMalloc类似于 CPU malloc -- 它只分配空间,但不填充任何数据。使用 cudaMalloc 在 GPU 上分配空间后, 需要使用 cudaMemcpy 将数据复制到其中.在这种情况下,“全局内存”是指设备上的内存,即幻灯片 10、11 和 12 的右侧。设备内核只能处理设备上的数据,即已经移到幻灯片 10、11 和 12 右侧的 DRAM。

关于cuda - 如果 cudaMalloc() 分配全局内存,那我为什么需要 cudaMemcpy()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13854469/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com