DOI QR코드

DOI QR Code

CUDA-based Object Oriented Programming Techniques for Efficient Parallel Visualization of 3D Content

3차원 콘텐츠의 효율적인 병렬 시각화를 위한 CUDA 환경 기반 객체 지향 프로그래밍 기법

  • Received : 2012.04.30
  • Accepted : 2012.06.04
  • Published : 2012.06.30

Abstract

This paper presents a parallel object-oriented programming (OOP) platform for efficient visualization of three-dimensional content in CUDA environments. For this purpose, this paper discusses the features and limitations in implementing C++ object-oriented codes using CUDA and proposes the solutions. Also, it presents how to implement a 3D parallel visualization platform based on the MVC (Model/View/Controller) design pattern. Also, it provides sample implementations for integral MLS (iMLS) and signed distance fields (SDFs) based on the Marching Cubes and Raytracing. The proposed approach enables GPU parallel processing only by implementing simple interfaces. Based on this, developers can expect general benefits that are common in general OOP techniques including abstractization and inheritance. Though I implemented only two specific samples in this paper, I expect my approach can be widely applied to general computer graphics problems.

본 논문에서는 3차원 콘텐츠의 효율적인 병렬 시각화 프로그래밍을 위한 CUDA(Compute Unified Device Architecture) 환경에서의 객체 지향 플랫폼을 제안한다. 이러한 목적을 위해 GPU 프로그래밍을 위한 CUDA 환경에서의 C++ 객체 지향 프로그래밍의 특성과 제약을 논의하고 그 해결 방안을 제시하며 MVC (Model/View/Controller) 디자인 패턴에 기초한 3차원 병렬 시각화 플랫폼의 구현을 제안한다. 또한 이 MVC 디자인 패턴에 따라 적분형 MLS(iMLS)와 부호 거리장(SDF)을 이용한 3차원 모델링 기법을 Marching Cubes 및 Raytracing으로 시각화하는 예제의 구현을 논의한다. 제안하는 방법은 간단한 인터페이스의 구현만으로 GPU 병렬 처리가 자동화된다는 특징이 있으며 개발자 입장에서 객체 지향 프로그래밍의 일반적인 장점들, 즉, 코드 관리 용이성, 코드 재활용 등의 이점을 추상화와 상속을 통해 병렬 환경에서도 실현한다. 본 논문에서는 제안하는 플랫폼에 대해 두 가지 사례만 구현했으나 다양한 모델링 기법과 시각화 기법을 조합할 수 있기 때문에 컴퓨터 그래픽스 전반에서 널리 활용 가능할 것으로 기대한다.

Keywords

References

  1. Farber, R., "CUDA Application Design and Development", 1st Ed., pp.109-132, Morgan Kaufmann, 2011
  2. Geoff Wyvill, "Introduction to Implicit Surfaces", Morgan Kaufmann, 1997
  3. 이성호, 박태정, 감형렬, 김창헌, "실수 정의역 데이터 시각화와 그 응용 사례," 한국컴퓨터그래픽스학회 논문지 Vol.16, No.4, 2010.12
  4. http://stackoverflow.com/questions/5722942/usingvirtual-functions-in-cuda-kernels
  5. NVIDA CUDA Zone (http://developer.nvidia.com/category/zone/cuda-zone)
  6. Taejung Park, Sung-Ho Lee, and Chang-Hun Kim, "Analytic Solutions of Integral Moving Least Squar es for Polygon Soups", IEEE Transactions on Visualization and Computer Graphics, PrePrint, 2011
  7. Nokia Qt 공식 사이트: http://qt.nokia.com
  8. Taejung Park, Sung-Ho Lee, Jong-Hyun Kim, and Chang-Hun Kim. "CUDA-based Signed Distance F ield Calculation for Adaptive Grids" In Proceedings of the 2010 10th IEEE International Conference on Computer and Information Technology (CIT '10). IEEE Computer Society, 2010
  9. William E. Lorensen, Harvey E. Cline, "Marching Cubes: A high resolution 3D surface construction algorithm", Computer Graphics, Vol. 21, No. 4, July 1987
  10. Joe Stam, "What Every CUDA Programmer Should Know About OpenGL", NVIDIA GPU Technology Conference, 2009

Cited by

  1. Random Partial Haar Wavelet Transformation for Single Instruction Multiple Threads vol.16, pp.5, 2015, https://doi.org/10.9728/dcs.2015.16.5.805
  2. Evaluation of DES key search stability using Parallel Computing vol.14, pp.1, 2013, https://doi.org/10.9728/dcs.2013.14.1.65