Я использую CUDA / Thrust / CUDPP. Как я понимаю, при сжатии потока определенные элементы в массиве помечаются как недействительные, а затем «удаляются».
Теперь, что на самом деле означает «удаление»? Предположим, что исходный массив A
имеет длину 6. Если 2 элемента недопустимы (при любых условиях, которые мы можем предоставить), то
Создает ли система новый массив размера 4 в памяти GPU для хранения допустимых элементов для получения окончательного результата?
ИЛИ физически удаляет недопустимые элементы из памяти и сжимает исходный массив
Размер 4, сохраняющий только допустимые элементы?
В любом случае, не означает ли это, что динамическое распределение памяти происходит под капотом?
Но я слышал, что динамическое распределение памяти невозможно в мире CUDA.