首页 > 解决方案 > 在 dpc++ malloc_shared 我们可以在 2 个 gpus 之间共享一个缓冲区吗

问题描述

在 sycl/dpc++ malloc_shared 中,我知道可以创建一个缓冲区,该缓冲区可以在主机和具有以下功能的单个 gpu 之间共享。

void* malloc_shared(size_t num_bytes,
                    const sycl::device& dev,
                    const sycl::context& ctxt);

或者

int *data = malloc_shared<int>(N, q);

我想知道是否存在可以跨多个 GPU 共享相同数据/缓冲区的东西?类似下面的东西

int *data = malloc_shared<int>(N, q1,q2);

标签: syclintel-oneapidpc++

解决方案


不,没有使用sycl::malloc_shared.

如果您希望在多个设备(和主机)之间使用相同的缓冲区,则需要使用sycl::malloc_host(过载处理sycl::context),但这可能会对性能产生负面影响。


推荐阅读