gpt4 book ai didi

c - 如何确定缓冲区是在 GPU 还是 CPU 上?

转载 作者:行者123 更新时间:2023-12-02 11:15:27 25 4
gpt4 key购买 nike

在 C/CUDA 中,如果传递一个指针,我如何以编程方式确定该指针是指向 CPU 还是 GPU 上的内存?是否有用于此目的的 CUDA 函数?

最佳答案

我不知道 CUDA 4.0 的情况如何,但在 3.2 中,你根本无法仅根据存储在其中的地址来推断它是 CPU 还是 GPU 指针。

解决这个问题的方法是创建一个类 CudaPtr<T> ,隐藏一个指针并提供基本功能(例如 memsetmemloadmemstorememalloc 等,这些功能又会使用 CUDA 的东西)。

然后,如果您有一个可以在主机或设备上运行的函数,您可以轻松地重载它 T*CudaPtr<T> .

<小时/>

更新:自从统一内存寻址和新的 CUDA 工具包出现以来,情况发生了一些变化。看来您现在可以通过 cuPointerGetAttribute 在运行时进行这样的区分

关于c - 如何确定缓冲区是在 GPU 还是 CPU 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338985/

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