PVM 기반 Radiance 병렬 구현과 초고속 이미지 분할
초록
본 논문은 Parallel Virtual Machine(PVM)을 이용해 Greg Ward의 Radiance 렌더링 코드를 분산 구현한다. 주요 가속 기법인 quincunx 샘플링을 그대로 유지하면서, 장면의 octree와 로컬 앰비언트 값을 모든 워크스테이션에 복제·공유한다. 정적·동적 이미지 파티셔닝 기법을 설계해 스캔바와 윈도우 단위로 작업을 나누고, 서버‑클라이언트 구조에서 자동 부하 균형을 적용한다. 8대 워크스테이션 네트워크에서 7.5배 이상의 가속을 얻었으며, 애니메이션 시퀀스에서는 초선형 속도 향상을 달성하였다.
상세 분석
Radiance는 전역 조명 계산을 위해 광선 추적, 경로 추적, 몬테카를로 적분을 혼합한 복합 렌더러이며, 성능을 높이기 위해 세 가지 가속 기법을 사용한다. 첫째, 장면을 octree 구조로 계층화해 광선‑객체 교차 테스트를 효율화한다. 둘째, 간접 조명 계산 결과를 로컬 앰비언트 값으로 저장하고, 이를 다시 활용해 재연산을 최소화한다. 셋째, 기본 이미지 샘플링 단계에서 quincunx 기법을 적용해 기본 광선 수를 크게 줄이면서도 품질을 유지한다. 논문은 이 세 가지 가속 요소를 손상시키지 않으면서 병렬화를 달성하는 것이 핵심 과제라고 정의한다.
PVM 기반 구현에서는 클라이언트‑서버 모델을 채택한다. 서버는 장면 octree를 생성하고 이를 모든 클라이언트에 복제한다. 로컬 앰비언트 값은 각 클라이언트가 계산한 뒤 브로드캐스트 방식으로 동기화되며, 이는 순차 코드보다 빠른 수렴을 가능하게 한다. 이미지 파티셔닝은 두 가지 형태로 제시된다. 정적 파티셔닝에서는 스캔바(여러 연속 스캔라인) 단위로 작업을 나누고, 각 스캔바의 계산 비용을 사전 레이 샘플링을 통해 추정한다. 추정된 비용을 기반으로 균등한 작업량을 갖도록 스캔바를 그룹화하고, 부하가 큰 클라이언트가 작업을 절반씩 나눠 아이들 프로세스에 재분배하는 동적 부하 균형 메커니즘을 서버가 관리한다.
동적 파티셔닝은 작업 풀(pool)에서 스캔바 혹은 윈도우(고정 크기 이미지 블록)를 꺼내어 처리하고, 클라이언트가 작업을 마치면 즉시 새로운 블록을 요청하도록 설계했다. 이때도 quincunx 샘플링을 보존하기 위해 각 블록의 경계선(공통 스캔라인)은 반드시 두 클라이언트가 공유하도록 하여 중복 계산을 방지한다. 애니메이션 시퀀스 렌더링에서는 프레임 간에 로컬 앰비언트 값을 재사용하고, 프레임이 끝날 때마다 최신 값을 브로드캐스트함으로써 초선형 속도 향상을 얻었다.
실험 결과는 8대의 이기종 UNIX 워크스테이션(네트워크 대역폭은 제한적)에서 정적 파티셔닝 시 7.5배, 동적 파티셔닝 시 8배에 가까운 가속을 기록했다. 특히 복잡도가 높은 장면에서는 동적 파티셔닝이 정적 파티셔닝보다 일관된 부하 분산을 보여, 전체 실행 시간이 크게 감소하였다. 그러나 모든 프로세스가 동일한 octree를 메모리에 보관해야 하므로, 메모리 용량이 제한적인 경우 장면 규모에 제약이 있다는 점이 한계로 지적된다. 또한, 로컬 앰비언트 값의 브로드캐스트가 네트워크 트래픽을 증가시켜, 매우 큰 클러스터에서는 통신 오버헤드가 성능에 영향을 미칠 수 있다.
전반적으로 논문은 Radiance의 핵심 가속 구조를 보존하면서도 PVM 기반 메시지 전달 모델을 활용해 효율적인 이미지 파티셔닝과 부하 균형을 구현한 점이 가장 큰 공헌이다. 특히 quincunx 샘플링을 그대로 유지한 설계는 결과 이미지의 재현성을 보장하고, 정적·동적 파티셔닝을 비교·조합함으로써 다양한 하드웨어 환경에 적용 가능한 유연한 병렬 프레임워크를 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기