PyCUDA mem_get_ipc_handle给出LogicError:cuIpcGetMemHandle失败:不支持操作

时间:2018-09-01 03:05:42

标签: cuda ipc pycuda

我正在尝试执行代码here。我收到以下错误:

orig:  [0.36975162 0.08511397 0.16306844 0.4015488  0.25104857 0.30606773 0.24524205 0.13792656]
Process Process-1:
Traceback (most recent call last):
  File "C:\Program Files\Python27\lib\multiprocessing\process.py", line 267, in _bootstrap
    self.run()
  File "C:\Program Files\Python27\lib\multiprocessing\process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\My\Desktop\test_codes\pycuda4.py", line 28, in func1
    h = drv.mem_get_ipc_handle(x_gpu.ptr)
LogicError: cuIpcGetMemHandle failed: operation not supported

我在Windows 7 x64环境中使用Python 3.7,CUDA 9.2。 Windows不支持CUDA IPCMemoryHandle吗?还是我想念什么?

1 个答案:

答案 0 :(得分:2)

here记录的内容是仅Linux才支持CUDA IPC功能。

但是,驱动程序API(基于PyCUDA的驱动程序)docs指出:

  

IPC功能仅限于支持在Linux和Windows操作系统上进行统一寻址的设备。 Windows上的IPC功能仅限于TCC模式下的GPU

因此,如果您可以将Windows GPU放入TCC mode(通过nvidia-smi工具)中,那么我认为它应该可以工作/受支持。 GeForce GPU无法置于TCC模式。大多数Titan和Quadro GPU都可以置于TCC模式。 Windows上的大多数Tesla GPU都应自动处于TCC模式。请注意,将您的GPU置于TCC模式意味着它无法再托管显示器。