Memory Efficient Parallel Ray Casting Algorithm for Unstructured Grid Volume Rendering on Multi-core CPUs
Duksu Kim · Journal of KIISE · 2016
본 논문은 비정렬 격자 볼륨 렌더링을 위한 다중 코어 CPU기반의 메모리 효율적 광선 투사병렬처리 알고리즘을 제안한다. 본 연구는 Bunyk 광선 투사(ray casting) 알고리즘에 기반을 두며, Bunyk 알고리즘의 높은 메모리 소모량 문제를 개선하기 위해 스레드별로 고정된 크기의 지역 버퍼를 할당한다. 지역 버퍼는 최근 방문된 면(face)의 정보를 저장하며, 이 정보는 다른 광선들에 의해 재사용되거나 다른 면의 정보로 대체된다. 지역 버퍼에 저장된 정보의 활용률을 높이기 위해 본 연구는 이미지 평면을 기반으로 일관성(coherency)이 높은 광선들을 하나의 광선 그룹으로 묶고, 생성된 광선 그룹들을 스레드들에게 분배한다. 각각의 스레드들은 할당 받은 광선 그룹들을 지역 버퍼를 활용하여 독립적으로 처리한다. 본 연구는 또한 지역 버퍼 활용률을 더욱 높이기 위해 면의 번호에 기반을 둔 해시 함수를 제안한다. 본 연구의 효용성을 확인하기 위해 제안하는 알고리즘을 서로 다른 크기의 비정렬 격자에 적용하였으며, 면 정보 저장을 위해 Bunyk 알고리즘 대비 약 6%의 메모리만 사용하여 정확한 볼륨 렌더링을 수행할 수 있었다. 이처럼 훨씬 적은 메모리 사용에도 불구하고 Bunyk 알고리즘과 대등한 성능을 보여주었으며, 대용량 데이터에 대해서는 최대 22% 높은 성능을 보여주었다. 이는 본 연구의 효용성 및 대용량 데이터의 볼륨 렌더링에 대한 적합성을 증명하는 결과이다.