Я понимаю, что когда операция копирования между хостом и устройством начинается с использования cudaMemcpy, указатель узла закрепляется автоматически. Тогда в чем смысл и необходимость наличия отдельного API cudAHostAlloc() для выделения закрепленной памяти хоста?Прикрепленная память в CUDA и cudamemcpy()
2
A
ответ
2
Две операции не совпадают, и указатель хоста, который вы проходите до cudaMemcpy
, не «закреплен автоматически».
Для передачи из доступной памяти памяти устройства host memory is copied to a staging buffer. Затем промежуточным буфером является цель любых передач.
Это делает переносимую для переносимой памяти память медленнее (обычно), чем перенос с закрепленных буферов памяти. Использование закрепленной памяти также allows for other possibilities, например, наличие сопоставленной памяти, которая напрямую доступна устройству, без явной (API-уровня) передачи.
Смежные вопросы
- 1. Прикрепленная память в Nvidia CUDA
- 2. CUDA cudaMemcpy: недопустимый аргумент
- 3. CUDA cudaMemcpy Структура массивов
- 4. Cuda cudaMemcpy "invalid argument"
- 5. Прикрепленная память в OpenACC (с использованием компилятора PGI)
- 6. CUDA Копирование нескольких массивов структур с cudaMemcpy
- 7. CUDA cudaMemCpy не копируется, несмотря на CudaSuccess
- 8. CUDA: cudaMemcpy возвращает cudaErrorInvalidValue для массива __device__
- 9. Копирование массива указателей в память устройства и обратно (CUDA)
- 10. Bank конфликт CUDA разделяемая память?
- 11. CUDA закреплена память и коалесцирует
- 12. делать события CUDA время cudaMalloc и cudaMemcpy исполнение?
- 13. Копирование структуры в память устройства CUDA
- 14. Память CUDA не возвращается на хост
- 15. Недопустимый аргумент в cudaMemcpy
- 16. Cuda Распределение/Память tTime большого изображения
- 17. cuda: Является ли общая память всегда полезной?
- 18. Как правильно копировать память с устройства на хост в CUDA?
- 19. CUDA разделяемая память
- 20. Как управляется память CUDA?
- 21. cuda общая память перезаписывается?
- 22. CUDA Simple Array Search - Общая память
- 23. В CUDA, как скопировать массив указателей устройств на память устройства?
- 24. «cudaErrorUnknown» в вызове функции cudaMemcpy
- 25. CUDA разделяет память, пишет необъяснимые длительные задержки
- 26. CUDA Profiler: Рассчитать память и вычислить использование
- 27. cudaMemcpy заменить существующие значения?
- 28. Функция ядра и cudaMemcpy
- 29. cudaMemcpy неверные аргументы
- 30. Использование функции Cudamemcpy
Я думаю, что ваше понимание неверно. Копирование в нерастянутую память включает в себя промежуточный буфер, управляемый драйверами, поэтому он медленнее. – talonmies
Значит, вы имеете в виду от хоста, данные сначала помещаются в управляемый драйвер (закрепленный) буфер, а затем оттуда он переносится на устройство? – gpuguy
@gpuguy: да. Вы можете выделить свой собственный буфер хранения cudaMallocHost() и использовать события CUDA для написания своей собственной подпрограммы memcpy. http://cudahandbook.to/GH9evr – ArchaeaSoftware