Невозможно выделить буфер, доступный как для GPU, так и для CPU, если вы не используете cudaHostAlloc()
. Это связано с тем, что вы должны не только распределять закрепленную память на ЦП (что вы можете делать за пределами CUDA), но также вы должны отображать память в виртуальную память графического процессора (или, точнее, контекста).
Это правда, что на дискретном графическом процессоре нулевое копирование влечет за собой передачу по шине. Однако, если ваш доступ хорошо слился, и вы используете данные только один раз, когда он все еще может быть эффективным, поскольку альтернативой является передача данных на устройство, а затем считывание их в многопроцессорные системы в два этапа.