Нет способа динамически расширить ранее выделенную память внутри ядра. Самое близкое, что вы получите, это «новый» и «удалить» на Fermi. Но те выделяют новые чанки, они не расширяют ваш существующий чанк. Однако я не вижу смысла пытаться расширить выделенную память внутри ядра. Просто выделите максимальный объем памяти, который может быть использован ядрами заранее. Если это означает, что у вас недостаточно памяти для завершения обработки данных впоследствии, тогда программа не смогла бы обработать этот случай в любом случае, если бы вы смогли динамически расширить память.
Кроме того, схема, в которой вы будете постоянно расширять выделенную память для хранения новых результатов, потребует большого количества связи между потоками (поскольку все потоки должны знать, сколько результатов было найдено в настоящее время). Вместо этого не пытайтесь создать набор результатов без пропусков в нем. Пусть результаты вашего объединения будут храниться во всей выделенной области, в местах, которые соответствуют индексам потоков. Затем отсканируйте результат с помощью второго ядра или Thrust, чтобы собрать результаты вместе.