cudaIPC只能在进程之间使用吗?

cudaIPC只能在进程之间使用吗?,cuda,ipc,nvidia,Cuda,Ipc,Nvidia,我遵循cuda示例来实现cudaIPC。之前我有两台机器,每台都有8个GPU。假设我们有工作进程和服务器进程。在我的例子中,工人必须使用cudaIPC将数据发送到服务器。但是根据项目的需要,现在我们在每台机器上的一个进程中启动工作线程和服务器线程。但是如果我仍然使用旧逻辑,它会报告:检查失败:e==cudaSuccess | | e==cudaerrorucdart卸载CUDA:invalid device ordinal。我想知道cudaIPC是否只能在进程之间使用?就我而言,我应该如何修改我

我遵循cuda示例来实现cudaIPC。之前我有两台机器,每台都有8个GPU。假设我们有工作进程和服务器进程。在我的例子中,工人必须使用cudaIPC将数据发送到服务器。但是根据项目的需要,现在我们在每台机器上的一个进程中启动工作线程和服务器线程。但是如果我仍然使用旧逻辑,它会报告:
检查失败:e==cudaSuccess | | e==cudaerrorucdart卸载CUDA:invalid device ordinal
。我想知道cudaIPC是否只能在进程之间使用?就我而言,我应该如何修改我的实现?

是的,CUDA IPC只在同一台机器上的不同进程之间工作

在您的情况下,如果工作线程和服务器活动是在同一进程的不同线程中创建的,只需删除所有创建句柄的CUDA IPC调用,并直接使用分配(或事件)指针即可