У меня довольно хорошее представление о том, как распределять и копировать линейную память с помощью cudaMalloc()
и cudaMemcpy()
. Однако, когда я хочу использовать функции CUDA для выделения и копирования 2D или 3D-матриц, меня часто опровергают различные аргументы, особенно касающиеся разнесенных указателей, которые всегда присутствуют при работе с 2D/3D-массивами. Документация хороша для предоставления нескольких примеров того, как их использовать, но предполагает, что я знаком с понятием заполнения и подачи, чего я не знаю.
Я обычно в конечном итоге настраиваю различные примеры, которые я нахожу в документации или где-то еще в Интернете, но слепая отладка, которая следует за этим, довольно болезненна, поэтому мой вопрос:
Что такое подача? Как его использовать? Как распределить и скопировать 2D-и 3D-массивы в CUDA?