CUDA Stream compactación: entender el concepto

Estoy usando CUDA / Thrust / CUDPP. Según tengo entendido, en la compactación de Stream, ciertos elementos de una matriz se marcan como no válidos y luego se "eliminan".

Ahora, ¿qué significa realmente "eliminación" aquí? Supongamos que la matriz originalA y tiene una longitud 6. Si 2 elementos no son válidos (en cualquier condición que podamos proporcionar) entonces

¿El sistema crea unanuev matriz de tamaño 4 en la memoria GPU para almacenar los elementos válidos para obtener el resultado final?

OR ¿elimina físicamente los elementos no válidos de la memoria y reduce la matriz original A al tamaño 4 manteniendo solo los elementos válidos?

Para cualquier caso, ¿eso no significa que la asignación de memoria dinámica está sucediendo bajo el capó? Pero había escuchado que la asignación dinámica de memoria no es posible en el mundo CUDA.

Respuestas a la pregunta(2)

Su respuesta a la pregunta