为啥默认情况下每个 SYCL 设备都在单独的上下文中?

Posted

技术标签:

【中文标题】为啥默认情况下每个 SYCL 设备都在单独的上下文中?【英文标题】:Why every SYCL device by default comes in separate context?为什么默认情况下每个 SYCL 设备都在单独的上下文中? 【发布时间】:2019-05-28 18:59:14 【问题描述】:

当我使用 cpu_selector 和 gpu_selector 时,这两个设备默认属于 2 个不同的上下文?为什么在相同上下文中拥有设备时默认设置有助于缓冲区的高性能内存访问(没有将数据复制到不同上下文的开销)?

【问题讨论】:

【参考方案1】:

SYCL 上下文只能封装来自单个平台的设备,不能使用来自两个或多个不同平台的设备创建。

可以附加到相同上下文的设备是平台相关的,而不是用户定义的。如果同一平台报告它们,您可以为来自同一平台的许多设备构建上下文,但如果它们位于不同平台上,则您将无法这样做。

如果您想了解详细信息,可以阅读SYCL规范https://www.khronos.org/registry/SYCL/specs/sycl-1.2.1.pdf#page=54的这一部分

【讨论】:

以上是关于为啥默认情况下每个 SYCL 设备都在单独的上下文中?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SYCL 内核中提取控制流?

如何从 SYCL 内核中提取控制流?

有没有办法可以创建一个 cl::sycl::pipe 数组?

有没有办法可以创建一个 cl::sycl::pipe 数组?

为啥默认情况下不需要 mongoose 中的所有字段?

在 C# 应用程序中同时执行多个任务,每个任务都在一个单独的 Windows 用户帐户下