NVIDIA가 자율주행 및 로보틱스 플랫폼용 신경 재구성 파이프라인 NuRec(Omniverse NuRec)의 성능 최적화 사례를 공개했다. NuRec은 카메라·라이다 등 다중 센서 데이터에서 실제 환경의 고품질 3D 표현을 구성하는 시스템으로, 가우시안 스플래팅(Gaussian splatting) 기법과 GPU 가속 렌더링을 결합한다. 자율주행 차량이나 로봇이 경험한 실세계 시나리오를 디지털 환경으로 재구성해 NVIDIA Omniverse 내에서 재현·분석·학습 데이터 생성에 활용한다. 문제는 이 재구성 작업이 짧은 장면 하나를 처리하는 데도 수 시간씩 걸릴 만큼 GPU 부하가 크다는 점이었다.
최적화 작업의 첫 단계는 NVIDIA Nsight Systems를 활용한 전체 파이프라인 프로파일링이었다. 분석 결과, 당초 예상과 달리 렌더링 커널이 아닌 `collect_gaussian_parameters` 함수가 렌더링 시작 전 대부분의 시간을 소비하는 것으로 나타났다. GPU는 거의 활용되지 않은 채 CPU가 수많은 소형 커널을 연속 처리하는 비효율 구조였다. 특히 그 안의 `interpolate` 함수가 4.184ms를 차지했으며, 수많은 소형 연산과 메모리 작업으로 GPU를 정체시키고 있었다. 개발팀은 이 함수에 분산된 작업들을 하나의 커널로 통합했고, 그 결과 처리 시간이 4.184ms에서 83.81μs(마이크로초)로 줄어 약 50배 속도 향상을 달성했다. 이어서 `cudaStreamSynchronize` 호출이 CPU가 다음 커널을 GPU에 전달하는 것을 불필요하게 막고 있다는 점도 발견됐다. 이 동기화 지점들을 제거하자 GPU가 지속적으로 작업을 이어받아 처리할 수 있는 구조가 만들어졌다.
커널 단위 최적화에는 NVIDIA Nsight Compute가 투입됐다. 역방향 렌더링 커널 `renderBackward`는 카메라와 라이다 데이터 모두에 사용되지만 점유율이 약 15%에 불과했다. Nsight Compute로 라이다용과 카메라용 커널을 비교 분석하니, 두 경우 모두 스레드당 167개 레지스터를 정적으로 할당하면서도 카메라 커널은 공유 메모리 요청이 약 75% 적었다. 이에 두 커널을 라이다용·카메라용으로 분리한 뒤 각각에 맞게 레지스터 할당(`launch_bounds`)과 공유 메모리 크기를 독립 조정했다. 또한 `cudaFuncSetCacheConfig` API로 두 커널 모두 공유 메모리를 크게, L1 캐시를 작게 운용하도록 설정했다. 이처럼 프로파일링 도구를 체계적으로 활용해 소프트웨어 계층과 커널 내부 양쪽에서 병목을 제거한 것이 이번 최적화의 핵심이었다.
이번 최적화 사례는 대규모 센서 데이터와 PyTorch 기반 학습 루프, 특수 CUDA 커널이 얽힌 복잡한 AI 파이프라인에서 성능 개선이 어떤 경로로 이뤄지는지를 구체적으로 보여준다. NuRec의 장기 목표는 30초짜리 캡처를 30초 안에 재구성하는 실시간 성능이다. 재구성 속도 개선은 엔지니어의 반복 검증 주기를 단축하고, 강화학습과 합성 데이터 생성에 쓰이는 대규모 렌더링 비용을 낮추는 데 직결된다. NVIDIA는 Nsight Systems와 Nsight Compute를 결합한 프로파일링 방법론이 유사한 물리 AI·자율주행 워크로드에 폭넓게 적용될 수 있다고 밝혔다.














