В PyCUDA нет такой вещи, как сборка мусора. Если вы хотите освободить память, используемую для выделения, вы должны явно освободить ее самостоятельно.
Когда контекст уничтожается, все ресурсы, использованные этим контекстом, освобождаются. Этот процесс происходит на уровне драйвера графического процессора и прозрачен для программиста.