OpenCL, прямой доступ к памяти хоста из ядра графического процессора

Есть ли способ выделить память на хосте, доступную напрямую из GPU, без копирования?

Как cudaHostGetDevicePointer в CUDA.


person ShPavel    schedule 22.08.2010    source источник


Ответы (1)


Да, используйте clCreateBuffer с флагами, содержащими одно из следующих значений:

  • CL_MEM_USE_HOST_PTR
  • CL_MEM_ALLOC_HOST_PTR

Что делает то, что вы хотите. Для получения дополнительной информации посетите справочную страницу clCreateBuffer.

person Dr. Snoopy    schedule 22.08.2010
comment
извините, я не правильно пояснил - читал об этих опциях, но CL_MEM_USE_HOST_PTR может кэшироваться в памяти устройства - это не разрешено для моей задачи. CL_MEM_ALLOC_HOST_PTR - выделить память из доступной хосту памяти... - будет ли эта память доступна с устройства? cudaHostGetDevicePointer использует сырой DMA через шину, как я знаю - хотелось бы найти что-то похожее - person ShPavel; 22.08.2010
comment
Нет ничего похожего на 100%, OpenCL гораздо более универсален, чем CUDA. Со стороны устройства доступны все буферы CL, в том числе выделенные с помощью CL_MEM_ALLOC_HOST_PTR. - person Dr. Snoopy; 23.08.2010