Есть ли проблема? Смотрится нормально.
Возможно, вы захотите проверить пример EstimatePiInlineP, который находится в каталоге MonteCarloCURAND в 3.2 SDK. Он использует стиль передачи C ++ по ссылке, чтобы избежать получения адреса локальной переменной. Вам нужно будет сохранить состояние обратно в память в конце ядра (как вы делаете в своем коде).
Передача по ссылке на C ++ может помочь компилятору, ясно продемонстрировав, что функция может работать с данными непосредственно в исходных регистрах. Получение адреса локального массива в графическом процессоре может отрицательно сказаться на производительности, если компилятор не может быть уверен, что все потоки обрабатывают указатель одинаково (т. Е. Идентичные операции над указателем), и в этом случае он будет проливать массив в локальную память. Это будет работать, но может быть медленнее.