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