【问题标题】:OpenCL subbuffers, why is important?OpenCL 子缓冲区,为什么重要?
【发布时间】:2012-03-26 02:34:13
【问题描述】:

我尝试实现一个多 GPU OpenCL 代码。在我的模型中,GPU 必须进行通信并且 交换数据。

我发现(我不记得在哪里,已经有一段时间了)一种解决方案是处理 子缓冲区。谁能尽可能简单地解释为什么子缓冲区很重要 在 OpenCL 中?据我所知,只使用缓冲区也可以做到这一点。

非常感谢, 乔戈斯

补充问题: 在 GPU 之间交换数据的最佳方式是什么?

【问题讨论】:

    标签: communication opencl multi-gpu


    【解决方案1】:

    我不确定(或者我不知道)在处理多个 GPU 时,子缓冲区将如何为您的问题提供解决方案。 AFAIK 子缓冲区提供了一个缓冲区视图,即单个缓冲区可以分为较小缓冲区(子缓冲区)的块,提供一层软件抽象,子缓冲区在您需要保留偏移量第一个元素的相同情况下是有利的为零。

    为了解决多 GPU 或多设备问题,OpenCL 1.2 提供了 API,您可以使用 clEnqueueMigrateMemObjects OpenCL API 调用 http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/clEnqueueMigrateMemObjects.html 将内存对象直接从一个 GPU 复制到另一个 GPU

    【讨论】:

    • 感谢您的回复。那么,仅当有人需要保持偏移量时才使用子缓冲区?沟通有没有用?我知道 clEnqueueMigrateMemObjects,但据我所知,nVidia 尚未实现 1.2 版。
    猜你喜欢
    • 2013-07-27
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-17
    • 2023-03-15
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多