我有两个 rtx3090 gpu,我想将它们绑定在一个上下文中。但它抛出错误:
what(): Can't add devices across platforms to a single context. -33 (PI_ERROR_INVALID_DEVICE)
代码的输出:
#include <sycl/sycl.hpp>
int main() {
auto platforms = sycl::platform::get_platforms();
for (auto &platform : platforms) {
std::cout << "Platform: " << platform.get_info<sycl::info::platform::name>()
<< std::endl;
auto devices = platform.get_devices();
for (auto &device : devices) {
std::cout << " Device: " << device.get_info<sycl::info::device::name>()
<< std::endl;
}
}
}
是:
Platform: Intel(R) OpenCL
Device: Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz
Platform: Intel(R) OpenCL
Device: Intel(R) Xeon(R) Gold 5218R CPU @ 2.10GHz
Platform: Intel(R) FPGA Emulation Platform for OpenCL(TM)
Device: Intel(R) FPGA Emulation Device
Platform: NVIDIA CUDA BACKEND
Device: NVIDIA GeForce RTX 3090
Platform: NVIDIA CUDA BACKEND
Device: NVIDIA GeForce RTX 3090
我想知道为什么相同的GPU在不同的平台上
不清楚您在这里使用的是哪个版本的 oneAPI,但据我所知,它看起来确实很旧。早些时候,这个这个补丁被合并了,这应该允许你的用例工作。我这里没有多 GPU 设置来测试这一点,但下载新版本的 oneAPI 有望解决您的问题!