У меня есть:
- Память хоста, которая была успешно закреплена и отображена с помощью
cudaHostAlloc(..., cudaHostAllocMapped)
илиcudaHostRegister(..., cudaHostRegisterMapped)
; - Указатели устройств были получены с использованием
cudaHostGetDevicePointer(...)
.
Я инициирую cudaMemcpy(..., cudaMemcpyDeviceToDevice)
на указателях устройств src и dest, которые указывают на две разные области закрепленной + отображаемой памяти, полученной с помощью описанной выше техники. Все нормально работает.
Вопрос: следует ли мне продолжать это делать или просто использовать традиционный стиль ЦП memcpy()
, поскольку все равно все находится в системной памяти? ... или они одинаковы (т.е. cudaMemcpy
отображается на прямой memcpy
, когда оба src и dest закреплены)?
(Я все еще использую метод cudaMemcpy
, потому что раньше все было в глобальной памяти устройства, но с тех пор переключился на закрепленную память из-за ограничений размера gmem)