为什么默认情况下每个 SYCL 设备都位于单独的上下文中?

Why every SYCL device by default comes in separate context?

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

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

可以附加到同一上下文的设备取决于平台,而不是 user-defined。如果同一平台报告它们,您可以为来自同一平台的许多设备构建上下文,但如果它们在不同平台上,那么您将无法。

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