KR101499804B1 - 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치 - Google Patents

범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치 Download PDF

Info

Publication number
KR101499804B1
KR101499804B1 KR1020130042618A KR20130042618A KR101499804B1 KR 101499804 B1 KR101499804 B1 KR 101499804B1 KR 1020130042618 A KR1020130042618 A KR 1020130042618A KR 20130042618 A KR20130042618 A KR 20130042618A KR 101499804 B1 KR101499804 B1 KR 101499804B1
Authority
KR
South Korea
Prior art keywords
hologram
gpu
thread
general
light source
Prior art date
Application number
KR1020130042618A
Other languages
English (en)
Other versions
KR20140125037A (ko
Inventor
서영호
김동욱
이윤혁
Original Assignee
광운대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 광운대학교 산학협력단 filed Critical 광운대학교 산학협력단
Priority to KR1020130042618A priority Critical patent/KR101499804B1/ko
Publication of KR20140125037A publication Critical patent/KR20140125037A/ko
Application granted granted Critical
Publication of KR101499804B1 publication Critical patent/KR101499804B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/04Processes or apparatus for producing holograms
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/04Processes or apparatus for producing holograms
    • G03H1/0443Digital holography, i.e. recording holograms with digital recording means
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/02Details of features involved during the holographic process; Replication of holograms without interference recording
    • G03H2001/0208Individual components other than the hologram
    • G03H2001/0224Active addressable light modulator, i.e. Spatial Light Modulator [SLM]
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H1/00Holographic processes or apparatus using light, infrared or ultraviolet waves for obtaining holograms or for obtaining an image from them; Details peculiar thereto
    • G03H1/04Processes or apparatus for producing holograms
    • G03H1/08Synthesising holograms, i.e. holograms synthesized from objects or objects from holograms
    • G03H1/0808Methods of numerical synthesis, e.g. coherent ray tracing [CRT], diffraction specific
    • G03H2001/0833Look up table
    • GPHYSICS
    • G03PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
    • G03HHOLOGRAPHIC PROCESSES OR APPARATUS
    • G03H2226/00Electro-optic or electronic components relating to digital holography
    • G03H2226/02Computing or processing means, e.g. digital signal processor [DSP]

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Holo Graphy (AREA)

Abstract

3차원 영상의 광원으로부터 CGH의 홀로그램 생성 수식을 이용하여 홀로그램 영상을 생성하되, 범용 GPU를 이용하여 홀로그램 생성 수식을 병렬로 처리하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 관한 것으로서, 적어도 하나의 범용 GPU; 및, 3차원 영상의 광원에 대하여 홀로그램 영상의 각 화소의 강도를 구하는 홀로그램 생성 수식을 이용하여, 광원 영상으로부터 홀로그램 영상을 생성하되, 상기 홀로그램 생성 수식의 연산을 상기 범용 GPU를 통해 병렬로 처리하게 하는 제어기를 포함하고, 상기 범용 GPU는, 하나의 쓰레드를 처리하는 스트림 프로세서(SP)를 다수 구비하고, 하나의 공유메모리를 구비한 다수의 스트림 멀티프로세서(SM); 및, 상기 SM이 공유하는 하나의 상수메모리를 포함하고, 상기 홀로그램 생성 수식은 상기 홀로그램 영상의 한 화소의 강도를 모든 광원 각각에 대한 연산(이하 단위 연산)을 누적하여 구하고, 상기 제어기는 상기 단위 연산을 하나의 쓰레드로 정하여 상기 범용 GPU로 하여금 병렬 연산을 수행하게 하는 구성을 마련한다.
상기와 같은 디지털 홀로그램 콘텐츠 고속 생성 장치에 의하여, 최적의 GPU 동작을 수행하게 함으로써, 연산량이 많은 홀로그램 생성을 빠른 시간 내에 처리할 수 있다.

Description

범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치 { A High-Speed Generation Device of Digital holographic Contents based on GPGPU }
본 발명은 3차원 영상의 광원으로부터 CGH의 홀로그램 생성 수식을 이용하여 홀로그램 영상을 생성하되, 범용 GPU를 이용하여 홀로그램 생성 수식을 병렬로 처리하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 관한 것이다.
홀로그래피는 1948년 Gabor에 의해 최초로 제안된 이래 3차원 정보를 기록할 수 있다는 특징 때문에 많은 연구자들의 관심을 끌어왔다. 기존의 홀로그래피는 홀로그램 필름에 3차원 정보를 기록하고, 현상된 필름을 사용하여 3차원 물체를 복원하는 방식을 사용함으로써 그 응용이 크게 제한되었다. 이러한 단점을 극복하기 위한 새로운 접근방법으로 1966년 이후 많은 연구자들이 컴퓨터에 의한 홀로그램의 제작을 연구해 오고 있다[비특허문헌 1].
CGH(Computer Generated Hologram)를 이용하여 하나의 홀로그램을 생성하기 위해서는 많은 연산량이 필요하다. 따라서 고속의 홀로그램 생성을 위한 방법이 개발되어 오는데 크게 두 가지로 분류 된다. 그중 하나로는 FPGA(field-programmable gate array)를 이용한 하드웨어로의 구현[비특허문헌 2-6]한 연구들이 있다. 또한 최근 GPU(Graphics Processing Units, 그래픽처리장치)의 발전으로 GPU를 이용한 병렬 프로그램을 이용한 방식의 연구들이 있다[비특허문헌 7-12].
FPGA를 이용한 방법으로는 CGH를 연산하기 위한 전용 연산 시스템인 HORN-6 특수 컴퓨터가 제안되기도 하였다[비특허문헌 3]. 또한 100% 파이프라인(pipeline) 구조를 기반으로 하는 CGH 프로세서가 제안되었다[비특허문헌 4]. 프레넬 변환을 수행하기 위한 CGH 셀의 하드웨어 구조를 제안한 후에 이를 확장하여 CGH 커널을 구성하였고, 이를 다시 확장하여 CGH 프로세서를 구현하였다. [비특허문헌 4]의 하드웨어는 [비특허문헌 2]보다 최대 87.32%의 높은 성능을 갖는다. [비특허문헌 5]의 논문에서 사용한 하드웨어는 1920×1080 크기의 HD급의 홀로그램을 실시간으로 생성할 수 있다. [비특허문헌 6]의 논문에서는 이전연구[비특허문헌 5]에서 메모리 접근을 줄이는 알고리즘을 제안하여 같은 성능대비 메모리 접근을 2000배 정도 줄일 수 있었다.
GPU를 이용한 방법으로 싱가폴대[비특허문헌 9]는 CGH 수식을 exponent 함수를 이용한 복소형태로 변환한 후에 연산을 분리하는 알고리즘을 제안하였다. 분리된 항을 각각 룩업 테이블(look-up table, LUT)로 만든 후에 연산을 고속화시켰고, 이를 nVidia의 GPU로 구현하였다. 1K개의 광원으로 구성된 객체에 대해 1024×768크기의 홀로그램을 0.3초당 한 장씩 생성할 수 있었다. 중국 Zhongshan 대학의 Wang[비특허문헌 10]은 3D 메쉬 모델을 기반으로 GPU를 이용해 CGH를 수행한 연구를 발표했다. 또한 일본 Chiba대의 Shimobaba[비특허문헌 11]는 AMD의 GPU를 기반의 GPU 프로그래밍 기법을 활용하여 고속화하였고, HD크기의 홀로그램을 0.31초당 한 장씩 생성할 수 있었다. 한양대[비특허문헌 12]에서는 OpenMP를 활용한 다중 GPU를 이용하여 최적화 방법을 제안하여 CPU대비 9,700배의 성능 개선을 할 수 있었다. 뿐만 아니라 최근에 GPU는 다양한 분야에서 널리 활용되고 있다[비특허문헌 13][비특허문헌 14].
따라서 고속의 CGH연산을 GPU를 이용할 때 적용시킬 수 있는 성능의 개선 방법과 GPU의 자원에 할당에 따른 최적의 연산방법이 필요하다.
[비특허문헌 1] T. Motoki, H. Isono, and I. Yuyama, "Present Status of Three-Dimensional Television Research," Proc. IEEE 83(7): 1009-1021(July 1995). [비특허문헌 2] T. Ito, N. Masuda, K. Yoshimura, A. Shiraki, T. Shimobaba, and T. Sugie, "Special-Purpose computer HORN-5 for a real-time electroholography," Optics Express, Vol. 13, No. 6, March 2005. [비특허문헌 3] Y. Ichihashi, H. Nakayama, T. Ito, N, Masuda, T. Shimobaba, A, Shiraki, and T. Sugie, "HORN-6 special-purpose clustered computing system for electroholography", Optics Express, vol. 17, no. 16, pp. 13895-13903, Aug, 2009 [비특허문헌 4] Y.-H. Seo, H.-J. Choi, J.-S. Yoo, and D.-W. Kim, "An architecture of a high-speed digital hologram generator based on FPGA", Journal of Systems Architecture, Vol. 56. pp. 27-37, Dec. 2009. [비특허문헌 5] Y.-H. Seo, H.-J. Choi, J.-S. Yoo, and D.-W. Kim, "A New Parallelizing Algorithm and Cell-based Hardware Architecture for High-speed Generation of Digital Hologram", Journal of Systems Architecture, Vol. 16. pp. 54-63, Jan. 2011. [비특허문헌 6] Y.-H. Lee, Y.-H. Seo, J.-S. Yoo, and D.-W. Kim, "Hardware architecture of high-performance digital hologram generator on the basis of a pixel-by-pixel calculation scheme", Applied Optices, Vol. 51. pp. 4003-4012, June. 2012. [비특허문헌 7] N. Masuda, T. Ito, T. Tanaka, A. Shiraki, and T. Sugie, "Computer generated holography using a graphics processing unit," Optics Express, Vol. 14, No. 2, January 2006. [비특허문헌 8] L. Ahrenberg, P. Benzie, M. Magnor, and J. Watson, "Computer generated holography using parallel commodity graphics hardware," Optics Express, Vol. 14, No. 17, August 2006. [비특허문헌 9] Y. Pan, X. Xu, S. Solanki, X. Liang, R. Bin, A. Tanjung, C. Tan, and T.-C. Chong, "Fast CGH computation using S-LUT on GPU", Optics Express, vol. 17, No. 21, pp. 18543-18555, Oct. 2009. [비특허문헌 10] Y.-Z. Liu, J.-W. Dong, Y.-Y. Pu, B.-C. Chen, H.-X. He, and H.-Z. Wang, "High-speed full analytical holographic computations for true-life scenes", Optics Express, vol. 18, no. 4, pp. 3345-3351, Feb. 2010. [비특허문헌 11] T. Shimobaba, T. Ito, N, Masuda, Y, Ichihashi, and N. Takada, "Fast calculation of computer-generated-hologram on AMD HD5000 series GPU and OpenCL", Optics Express, vol. 18, no. 10, pp. 9955-9960, May. 2010. [비특허문헌 12] J.S. Song, J.S. Park, Y.H. Seo, J.I. Park "Fast Generation of Digital Hologram Based on Multi-GPU", Journal of Korean Society of Broadcast Engineers, Vol. 16, no. 6, pp. 1009-1017, Nov. 2011. [비특허문헌 13] Kirk, David, "Programming Massively Parallel Processor 1'st Edition", Elsevier, 2010. [비특허문헌 14] NVidia Website http://www.nvidia.com [비특허문헌 15] 이승학, 김경혼, 안치영, 최승원, "GPU를 이용한 SDR 시스템 용 LTE MIMO 기지국 기능 구현", 디지털산업정보학회 논문지, 제8권 제4호, pp. -, 2012. 12. [비특허문헌 16] 김태현, 이현석, 최승원, "SDR 시스템에서 GPU를 사용한 Lattice Reduction-aided 검출기 구현", 디지털산업정보학회 논문지, 제7권 제3호, pp. -, 2011. 9.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 고속의 홀로그램 생성을 위한 타일링 기법을 적용하고, 사용하는 메모리 및 데이터 포맷에 대하여 최적화 하여 구성하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치를 제공하는 것이다.
특히, 본 발명의 목적은 3차원 광원으로부터 CGH의 수식을 이용하여 홀로그램 영상을 생성하되, 범용 GPU의 SP개수와 레지스터 개수를 고려하여 수식의 각 단위연산을 다수의 쓰레드로 분할하여, 최적으로 병렬처리하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치를 제공하는 것이다.
또한, 본 발명의 목적은 하나의 광원에 대하여 광원과 홀로그램 화소간의 위치에 관한 항과 광원의 세기의 곱을 누적덧셈을 통하여 각 홀로그램 화소의 강도를 구하되, 홀로그램 화소의 블록 단위로 단위 연산을 나누어 하나의 쓰레드로 처리하게 하고, 이때의 블록 단위의 크기를 범용 GPU의 메모리 및 데이터 포맷에 따라 결정하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치를 제공하는 것이다.
또한, 본 발명의 목적은 상기 광원에 대하여 세기가 0인 광원 화소를 제외하는 타일링을 수행하고, 타일링된 광원에 대해서만 단위 연산을 수행하는 타일링 기법을 적용하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치를 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치로서, 적어도 하나의 범용 GPU; 및, 3차원 영상의 광원에 대하여 홀로그램 영상의 각 화소의 강도를 구하는 홀로그램 생성 수식을 이용하여, 광원 영상으로부터 홀로그램 영상을 생성하되, 상기 홀로그램 생성 수식의 연산을 상기 범용 GPU를 통해 병렬로 처리하게 하는 제어기를 포함하고, 상기 범용 GPU는, 하나의 쓰레드를 처리하는 스트림 프로세서(SP)를 다수 구비하고, 하나의 공유메모리를 구비한 다수의 스트림 멀티프로세서(SM); 및, 상기 SM이 공유하는 하나의 상수메모리를 포함하고, 상기 홀로그램 생성 수식은 상기 홀로그램 영상의 한 화소의 강도를 모든 광원 각각에 대한 연산(이하 단위 연산)을 누적하여 구하고, 상기 제어기는 상기 단위 연산을 하나의 쓰레드로 정하여 상기 범용 GPU로 하여금 병렬 연산을 수행하게 하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 제어기는, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 하나의 광원에 대하여 모든 홀로그램 화소의 위치에 대한 단위 연산을 수행하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 제어기는, 광원의 세기가 0이 아닌 유효 광원만 분리하여 상기 범용 GPU에 전송하여 연산하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 제어기는, 하나의 쓰레드에서 광원 데이터(xj,yj,zjj)를 저장할 4개의 레지스터와 홀로그램의 화소의 좌표(xα,yα)의 2개, 홀로그램 화소의 누적 덧셈의 결과(R(Iα),J(Iα))의 2개, 메모리 접근을 위한 주소의 1개의 레지스터, 및, 중간 값을 저장할 1개의 레지스터의 적어도 10개의 레지스터를 할당하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 제어기는, 하나의 쓰레드에서 연산할 수 있는 홀로그램 화소의 크기인 n×m를 다음 [수식 1]을 만족하도록 설정하는 것을 특징으로 한다.
[수식 1]
Figure 112013033712600-pat00001
단, N과 M은 각각 생성할 홀로그램의 너비 및 높이,
NReg / Thread(Reg)는 쓰레드당 레지스터,
NTotalthread(Thread)는 동시에 실행할 수 있는 총 쓰레드의 개수.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 NTotalthread(Thread)는 SM당 할당한 쓰레드와 상기 범용 GPU 내의 총 SM의 개수의 곱으로 구하는 것을 특징으로 한다.
또, 본 발명은 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서, 상기 홀로그램 생성 수식은 CGH(Computer Generated Hologram)에서 사용하는 수식의 프레즈넬(Fresnel) 근사식인 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 의하면, 구동 GPU의 특성을 파악하여 최대 쓰레드를 개수를 결정 하고 상수 메모리를 사용하여 CGMA의 비를 높이고 타일링을 통하여 최적의 GPU 동작을 수행하게 할 수 있는 효과가 얻어진다.
도 1은 본 발명의 일실시예에 따른 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 대한 구성도.
도 2는 본 발명의 일실시예에 따른 범용 GPU의 구성도.
도 3은 본 발명의 일실시예에 따라 처리되는 연산 단위의 예시도.
도 4는 본 발명의 일실시예에 따른 워프의 실행 스케쥴의 예시도.
도 5는 본 발명의 일실시예에 따른 블록당 쓰레드 할당 방법의 예시도.
도 6은 본 발명의 일실시예에 따른 블록당 레지스터 할당 방법의 예시도.
도 7은 본 발명의 일실시예에 따른 블록당 쓰레드 할당에 의한 SM 연산 스케쥴링의 예시도.
도 8은 본 발명의 일실시예에 따른 범용 GPU의 메모리에 저장되는 데이터 형태로서, (a) 일반적인 형태, (b) 구조체를 이용한 벡터화의 예시도.
도 9는 본 발명의 일실시예에 따른 멀티 쓰레딩 기법을 이용한 다중 GPU 제어 방법의 예시도.
도 10은 본 발명의 일실시예에 따른 단일 쓰레드로 다중 GPU 제어 방법의 예시도.
도 11은 본 발명의 일실시예에 따른 CGH 연산 방식으로서, (a) 광원의 병렬화, (b) 홀로그램 화소의 병렬화 방식의 예시도.
도 12는 본 발명의 일실시예에 따른 광원의 타일링의 예시로서, (a) GPU에 개수에 따른 타일링, (b) 메모리 크기에 따른 버퍼의 타일링의 예시도.
도 13은 본 발명의 일실시예에 따른 홀로그램 타일링의 예시로서, (a) 1×1, (b) 2×2, (c) 4×4에 따른 예시도.
도 14는 본 발명의 실험에 따른 nVidia GTX580의 범용 GPU 특징에 대한 표.
도 15는 본 발명의 실험에 따른 메모리 종류에 따른 연산 시간에 대한 그래프.
도 16은 본 발명의 실험에 따른 메모리 종류에 따른 연산 시간에 대한 표.
도 17은 본 발명의 실험에 따른 블록당 쓰레드 개수에 의한 연산 시간에 대한 그래프.
도 18은 본 발명의 실험에 따른 블록당 쓰레드 개수에 의한 평균 연산 시간에 대한 표.
도 19와 도 20은 본 발명의 실험에 따른 홀로그램 타일링에 의한 연산 시간에 대한 그래프 및 표.
도 21은 본 발명의 실험에 따른 종래 기술과의 성능 비교 표.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명의 일실시예에 따른 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치의 구성에 대하여 도 1을 참조하여 설명한다.
도 1에서 보는 바와 같이, 본 발명의 일실시예에 따른 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치(1)는 제어기(30) 및 적어도 하나의 범용 GPU(40)로 구성된다.
범용 GPU(40)는 하나의 쓰레드를 처리하는 스트림 프로세서들을 다수 구비하여, 다수의 쓰레드를 동시에 병렬 처리하는 통상의 범용 그래픽처리장치이다.
제어기(30)는 3차원 영상의 광원을 입력받아 범용 GPU를 통해 홀로그램 영상을 생성한다. 이때, 홀로그램 영상의 생성은 홀로그램 생성 수식을 CGH(Computer Generated Hologram)에서 사용하는 수식을 이용한다. 바람직하게는 프레즈넬(Fresnel) 근사를 통한 수식을 이용한다.
홀로그램 생성 수식은 홀로그램 영상의 한 화소의 강도를 구하는 수식으로서, 홀로그램 화소의 강도는 모든 광원 각각에 대한 연산을 누적하여 계산한다. 이때, 각 광원에 대한 연산을 단위 연산, 단위 홀로그램 연산 등이라 부르기로 한다.
제어기(30)는 단위 연산을 하나의 쓰레드로 정하여 범용 GPU(40)에게 처리하도록 한다. 이때, 제어기(30)는 홀로그램 생성 수식을 처리하기 위한 많은 수의 단위 연산들을 각각 다수의 쓰레드에 할당하여, 병렬로 처리하게 한다.
또한, 제어기(30)는 입출력의 양이 최소가 되고, 전체 연산이 효율적으로 처리되도록, 단위 연산들에 필요한 상수, 변수값들을 범용 GPU(40)의 메모리에 입출력하게 하거나, 단위 연산들을 블록의 쓰레드로 할당하는 등의 병렬 연산을 위한 스케쥴링을 수행한다.
다음으로, 본 발명에 사용되는 범용 GPU(General-Purpose computing on Graphics Processing Units, GPGPU, 범용 그래픽처리장치)의 구성을 도 2를 참조하여 설명한다.
먼저, 범용 GPU의 구조에 대하여 도 2를 참조하여 설명한다.
고성능 제어기와 적은 ALU(Arithmetic and Logic Unit)을 가지는 CPU의 구조와는 달리 GPGPU는 작은 컨트롤 유닛과 다수의 ALU를 포함하고 있어 연산 능력에서 병렬 화에 유리한 구조를 가진다.
즉, 도 2와 같이 하나의 GPU 내에는 하나의 DRAM(Global Memory, 전역 메모리)과 여러 개의 SM(Streaming Multiprocessor) 및 Load/Store 유닛 등을 가지고 있다. 하나의 SM은 여러 개의 SP(Streaming Processor)와 캐시메모리 등으로 이루어져 있으며, SP에서는 하나의 데이터의 연산을 처리할 수 있는 능력을 가지게 된다.
GPU내의 DRAM은 저장할 수 있는 데이터량은 크지만 여러 SM에서 동시 접근에 대한 병목 현상 및 접근에 대한 대기지연 등의 이유로 접근 속도는 느리다. 하지만 캐시 형태로 되어 있는 상수메모리(Constant Memory)나 SM 내부의 공유 메모리(Shared Memory, Parallel Data Cache)는 저장할 수 있는 데이터 량은 적지만 접근 속도가 빠르다. 따라서 일반적으로 많이 사용되는 파라미터는 상수 메모리나 공유 메모리를 사용하는 것이 유리하다[비특허문헌 15].
다음으로, 범용 GPU의 동작에 대하여 도 3과 도 4를 참조하여 설명한다.
병렬 프로그래밍을 위해, 앞에서 설명한 GPU내의 연산 단위인 SP 또는 SM을 할당하는 단위로 쓰레드(thread)와 블록(block), 및 그리드(grid)로 나눈다. 이때, 바람직하게는, GPU의 커널 코드의 변수를 설정할 수 있는 CUDA 등과 같은 프로그래밍 도구를 이용할 수 있다.
도 3과 같이 하나의 블록은 3차원의 쓰레드로 이루어져 있고, 또한 하나의 그리드는 3차원의 블록으로 이루어진다. 각 쓰레드는 GPU내의 SP에 맵핑되며 연산하는 최소 단위로 하나의 블록내의 최대 쓰레드의 개수는 GPU의 성능에 따라 결정된다. 또한 블록은 하나의 스트림 멀티프로세서(SM 또는 MP)에서만 구성된다. 즉, 하나의 블록이 동시에 2개 이상의 SM에서 구성될 수 없다.
또한 각 쓰레드는 블록 내에서의 인덱스를 가지게 되며 도 4와 같이 워프(Warp) 단위로 동시에 실행된다. 따라서 모든 쓰레드를 효율적으로 실행시키기 위해서는 블록당 쓰레드의 개수를 워프의 배수로 하는 것이 유리하다. 또한 예외처리가 필요한 부분에서는 워프 단위 내에서는 같은 조건으로 예외 처리하는 것이 동시 실행의 병렬성을 유지할 수 있다[비특허문헌 15].
워프는 동시에 스트림 프로세서(SP)가 동작할 수 있는 단위이다. 예를 들어, 워프의 단위가 4이면, 5개의 쓰레드를 동작시키기 위해서는 2개의 워프가 동작을 하게 된다. 그런데, 워프는 동시에 동작할 수 있는 스트림 프로세서(SP)의 단위이기 때문에, 블록당 쓰레드의 개수를 워프의 배수로 해야 최대 SP의 효율을 나타낼 수 있다.
예를 들어, GPGPU의 특성이 SM 내에 SP의 개수가 12개이고 워프 단위가 4일 때 블록당 쓰레드를 8개로 할당하는 경우를 살펴보자, 이때, 하나의 스트림 멀티프로세서(SM)는 하나의 블록을 처리하기 때문에, 하나의 SM에 8개의 쓰레드가 배정된다. 그리고 8개의 쓰레드에 대하여 2개의 워프로 수행되고, 각 워프는 각각 4개의 SP를 사용한다. 따라서 SM 내에 나머지 4개의 SP는 사용되지 않고 낭비된다.
이 경우, 블록당 쓰레드의 개수를 4개로 할당하는 것이 유리하다.
앞서의 예에서, 블록당 쓰레드를 8개로 설정하고 3개의 블록을 동작할 경우 하나의 SM내에 8개씩 SP가 동작을 하게 되고 3개의 SM을 동작하게 된다. 만약 SM이 1개 있는 GPU일 경우에는 8개씩 3번의 동작을 하게 된다. 반면 블록당 쓰레드를 4개로 하고 6개의 블록을 설정하면 하나의 SM내에 SP 12개 모두 동작을 하며 2번의 반복 동작만 하면 된다.
따라서 현재 장착되어 있는 GPGPU의 HW적인 특성(SM,SP 등)을 확인 후 최대 효율을 낼 수 있는 블록과 쓰레드의 개수를 설정해야 한다.
또한, 각 블록은 블록 내의 쓰레드에 따라서 하나 혹은 그 이상의 블록이 하나의 SM으로 맵핑되어 동작한다. 블록 내의 모든 쓰레드 내에 할당된 레지스터의 개수가 SM 내의 총 레지스터의 개수 이하로 될 경우 최대의 블록으로 할당할 수 있다. 즉, SM내에 구성되어 있는 SP의 개수를 확인하여 블록당 쓰레드의 개수를 결정하여 하나의 SM내에 구성할 수 있는 최대 블록을 할당한다.
또한 블록도 쓰레드와 같이 인덱스를 가지게 되며 모든 SM에 할당된 블록의 개수가 그리드당 총 블록의 수보다 적을 경우 모든 할당된 블록의 동작이 끝난 뒤 남은 블록들이 동작이 이루어진다.
다음으로, 본 발명에 따른 제어기에 의해 범용 GPU에서 자원 할당 방법에 대하여 도 5 및 도 6을 참조하여 설명한다.
효율적인 GPU의 동작을 하기 위해서는 GPU의 적절한 자원을 할당하여 동작하여야 한다. 자원을 할당하기 위해서는 동작하는 GPU의 특성 확인을 해야 한다. 효율적인 동작을 위해서는 블록당 쓰레드, 쓰레드당 레지스터의 수 그리고 블록당 공유 메모리의 크기를 할당해야 한다.
첫째로 쓰레드를 할당하기 위해서는 GPU 특성을 통해서 블록당 최대 쓰레드의 개수와 SM당 최대 쓰레드의 개수를 확인하여야 한다. 만약 블록당 최대 쓰레드 개수가 16개이고 SM당 최대 쓰레드는 24개일 경우 도 5와 같이 블록당 쓰레드를 16개로 할당하는 것보다 8개로 할당하는 것이 유리하다. 16개로 할당하면 8개의 할당할 수 있는 쓰레드는 낭비하게 된다. 따라서 블록당 쓰레드를 SM당 최대 쓰레드에 맞추어 8개로 해야 한다. 도 6에 블록당 쓰레드의 할당에 따른 스케쥴링 나타내었다.
SM당 최대 쓰레드의 개수(SP의 개수)가 K개이고 블록당 최대 쓰레드의 개수는 L이라고 할 때, 설정할 블록당 쓰레드의 개수 S는 다음 조건을 만족해야 한다.
S <= L
K=nS (K는 S의 최소의 정수배)
즉, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정한다.
둘째로 쓰레드당 레지스터 할당하기 위해서는 GPU 특성에서 SM당 32비트 레지스터의 수를 확인해야 한다. 블록당 쓰레드 할당을 통하여 SM당 블록의 수를 확인을 할 수 있다. SM당 블록과 레지스터의 수를 통해서 하나의 블록당 레지스터의 최대 개수를 구할 수 있다. 만약 하나의 블록에 모든 쓰레드 내의 레지스터가 최대 개수보다 많을 경우 SM당 블록의 개수를 줄여야 한다. 따라서 도 7과 같이 블록 내에 최대 개수보다 적도록 쓰레드당 레지스터를 결정해야 한다.
GPU 커널 코드에서 정수형 변수를 선언하게 되면 이것이 하나의 레지스터를 할당하게 된다. 불필요한 레지스터는 최대한 줄이는 것이 유리하다.
마지막으로 메모리 접근 속도를 높이기 위해서는 공유 메모리 혹은 상수 메모리를 사용하는 것이 유리하다. 공유 메모리의 경우 SM당 저장할 수 있는 데이터량이 정해져 있기 때문에 공유 메모리를 효율적으로 사용하기 위해서는 적절히 할당해야 한다. 공유 메모리를 할당하기 위해서는 GPU의 특성에서 SM당 공유메모리의 크기를 확인해야 한다. 공유 메모리는 블록내의 쓰레드간의 공유할 수 있는 특성을 가지기 때문에 앞의 두 방법으로 SM당 블록의 수를 정한 뒤에 SM당 공유메모리의 최대 크기를 구할 수 있다. 두 번째 할당 방법과 같이 SM내의 모든 블록의 공유 메모리의 크기가 SM당 공유 메모리보다 클 경우 SM당 블록의 수를 줄여 동작을 하게 된다.
상수 메모리는 캐시 형태의 메모리로써 모든 SM에서 접근이 가능한 메모리이다. 캐시 형태로 되어있어 전역 메모리로의 접근에 비하여 매우 빠른 접근 속도를 가진다. 하지만 전역 메모리에 비하여 적은 양의 데이터를 저장할 수 있다. 따라서 적은 양의 데이터나 파라미터 및 행렬 값과 같이 적은 값을 저장하고 반복 연산을 수행하기위한 데이터를 저장하는 것이 효율적이다.
다음으로, 범용 GPU의 메모리 접근에 대하여 도 8을 참조하여 설명한다.
전역 메모리는 DRAM으로 이루어져있다. 따라서 전역 메모리로 접근을 할 경우 지연시간이 발생한다. 따라서 하나의 쓰레드에서 전역 메모리에 접근 할 때 순차적인 메모리 주소를 접근하는 것이 레이턴시를 줄이는 것에 유리하다. 도 8은 하나의 쓰레드에서 전역 메모리에서 데이터를 불러올 때 데이터의 형태를 나타내었다. 한 번의 연산을 위해 전역 메모리에서 불러와야 하는 데이터가 두 개 이상일 경우 이에 해당하는 데이터는 구조체의 배열 형태로 전역메모리로 저장해 놓고 커널에서는 접근 할 때 순차적인 주소로 데이터를 읽어 올 수 있다.
전역 메모리 접근 대역폭 대비 부동 소수점 연산의 비는 CGMA(Compute to Global Memory Access)로 정의되며 장착된 GPU의 DRAM(전역 메모리)의 클록 주파수와 메모리의 대역폭과 부동소수점 연산 능력을 확인할 수 있다. 수학식 1을 통해서 초당 전역 메모리의 접근 대역폭을 구할 수 있다. TAccessMemory/s는 초당 전역 메모리의 접근 대역폭이고 NMemoryBandwidth메모리의 대역폭 그리고 fMemoryClockFreq.는 메모리의 동작 주파수에 해당한다[비특허문헌 16].
[수학식 1]
Figure 112013033712600-pat00002
또한 GPU의 계산능력은 수학식 2를 통해서 초당 부동 소수점 연산능력을 구할 수 있다. Flops는 초당 부동소수점 연산능력이고 NSP는 총 SP의 개수, NOP/Cycle은 1 cycle당 하나의 SP가 연산할 수 있는 능력이고 fClockFreq.은 GPU의 동작 주파수이다.
[수학식 2]
Figure 112013033712600-pat00003

다음으로, 다중 범용 GPU에 대하여 도 9와 도 10을 참조하여 설명한다.
단일 GPU로도 처리하기 힘든 알고리즘이 있을 경우 2대 이상의 GPU를 연결하여 다중 GPU를 이용하여 데이터를 처리하여 속도를 높일 수 있다. 다중 GPU를 구동하기 위한 방법은 CPU의 멀티 쓰레드를 이용하여 다중 GPU 각각을 제어하는 방법과 하나의 쓰레드를 이용하여 GPU와 CPU의 동작을 독립적으로 나누어 제어하는 방법 그리고 위 둘을 동시에 사용하는 방법이 있다.
CPU의 멀티 쓰레딩 기법을 이용하여 각각의 GPU를 제어하는 방법은 도 9에 나타내었다. 각각의 CPU의 쓰레드에서 GPU의 전역메모리에 데이터를 전송하고 커널을 실행시키고 커널이 종료되면 GPU의 전역메모리에서 DRAM(Host)로 데이터를 받아오게 된다.
많은 CPU의 쓰레드를 할당하기 어려울 경우 하나의 쓰레드를 이용하여 다중 GPU를 제어할 수 있다. 도 10에 호스트와 GPU간 독립적인 동작을 하는 타이밍도를 나타내었다. 호스트에서 첫 번째 GPU에 데이터를 전송하고 커널을 개시한 뒤 다음 GPU에 데이터를 전송하고 커널을 개시한다. N개의 GPU에 데이터 전송 및 커널을 개시한 뒤에 다시 처음 GPU부터 N번째 GPU까지 출력 데이터를 호스트의 DRAM으로 데이터를 받는다.
다음으로, CGH 알고리즘을 설명한다.
홀로그램은 광학계를 이용하여도 취득할 수 있지만 광학계 자체를 수학적으로 모델링한 연산에 의해서 구할 수도 있다. 이러한 수학적인 연산을 통해 얻어진 홀로그램을 컴퓨터 생성 홀로그램(computer-generated hologram, CGH)이라고 한다.
파면의 간격이 시간과 공간에 걸쳐 일정하게 유지되는 가간섭성(coherent) 광이 어떤 형태를 가진 물체에 부딪쳐 반사될 때 반사된 광의 파면은 물체의 형태에 비례하여 달라진다. 즉 파면의 위상 변화가 물체의 형상에 따라 변화하게 된다. 그러므로 물체의 형상에 관한 좌표의 정보가 있으면, 형상에 따라 변화하는 파면의 위상변화는 기하광학적인 광선추적에 의해 쉽게 계산된다.
CGH는 수학식 3과 같이 정의되는데 앞서 설명한 것과 같이 홀로그램의 위상으로부터 홀로그램의 강도(Iα)를 얻는 방법이다. 여기서 N은 3차원 객체의 광원수를 뜻한다. k는 참조파의 파수로 2π/λ로 정의되고 λ는 사용된 파의 파장을 나타낸다. xα와 yα는 홀로그램내의 위치를 뜻하고 xj, yj 및 zj는 3차원 객체의 위치를 나타낸다. αj는 객체의 밝기 정보를 나타낸다. p는 홀로그램 평면에서 하나의 화소의 크기를 나타낸다.
[수학식 3]
Figure 112013033712600-pat00004
xαj와 yαj는 각각 xαj= xα - xj 및 yαj= yα - yj로 정의한다.
수학식 3에서 |pxαj,pyαj|≪ zj의 조건인 경우에 Fresnel 근사를 통해서 수학식 4와 같이 근사될 수 있다.
[수학식 4]
Figure 112013033712600-pat00005

다음으로, CGH 병렬화 알고리즘을 도 11을 참조하여 보다 구체적으로 설명한다.
수학식 4와 같이 CGH 수식은 방대한 반복 연산이 이루어진다. 따라서 GPU를 이용하여 병렬 연산을 수행할 경우 속도를 향상시킬 수 있다.
도 11에 수학식 4를 이용하여 CGH 연산 방식에 대하여 나타내었다.
도 11(a)는 하나의 홀로그램 화소를 모든 유효 광원에 대하여 병렬로 연산하는 방법으로 연산 결과를 누적 덧셈이 필요하다. 따라서 연산 결과를 다시 메모리에 저장해야 하기 때문에 메모리 접근 횟수가 늘어나게 되어 속도가 저하 된다. 또한 많은 메모리 접근으로 인하여 메모리 병목 현상이 생기게 된다.
도 11(b)는 유효광원을 모든 홀로그램 화소에 대하여 병렬로 연산하는 방식으로 GPU의 하나의 레지스터에 모든 입력광원에 대하여 연산이 끝날 때까지 누적할 수 있기 때문에 메모리 접근이 줄게 된다. 따라서 모든 GPU의 쓰레드는 홀로그램 화소에 대하여 맵핑되어 연산을 하는 것이 유리하다.
따라서 본 발명의 일실시예에 따른 홀로그램 콘텐츠 고속 생성 장치의 제어기는 하나의 광원(또는 유효광원)에 대하여 모든 홀로그램 화소(화소 위치)에 대하여 병렬 연산하는 방식으로 홀로그램 연산을 수행한다.
수학식 4에서 입력되는 광원이 zj값에 대한 변수 λ/zj와 p2/2λzj는 256레벨의 데이터 이므로 LUT (Look-up table) 형태로 구현할 수 있다. 이 값에 대한 데이터는 화소의 크기 또는 입력 광원의 파장과 256레벨에 맵핑된 zj값이 변하지 않을 경우 항상 같기 때문에 초기 한번만 GPU의 메모리에 적재시켜놓으면 된다. LUT의 데이터는 입력광원의 zj값에 따라서 반복적으로 접근해야 한다. 따라서 GPU 커널이 개시되면 전역 메모리에 저장된 256개의 데이터를 접근 속도가 가장 빠른 공유 메모리에 적재시킨다.
다음으로, 광원의 타일링에 대하여 도 12 내지 도 13을 참조하여 설명한다.
수학식 4에서 홀로그램의 화소를 계산하기 위해서는 광원과 홀로그램 화소간의 위치에 관한 항과 광원의 세기의 곱을 누적덧셈을 통하여 구한다. 하지만 화소의 세기가 '0'일 경우 위치에 관한 연산에 독립적으로 누적 값이 '0'이므로 이는 유효하지 않은 광원이 된다. 따라서 유효 광원만 분리하여 GPU에 데이터를 전송하고 연산함으로써 연산 속도를 향상 시킬 수 있다.
홀로그램 한 프레임에 대하여 연산할 때 광원에 대한 데이터는 많은 접근을 한다. 따라서 전역 메모리 보다는 캐시 형태로 되어있는 상수 메모리 또는 공유메모리를 통한 데이터 전송을 통하여 속도를 향상 시킬 수 있다. 접근 속도가 가장 빠른 것은 공유 메모리에 대한 접근이지만 광원에 대한 데이터는 각 쓰레드에서 한번만 접근하기 때문에 전역메모리에서 한번 적재시켜 반복적으로 사용되는 공유 메모리의 사용은 오히려 전역 메모리에서 한번 적재시켜 연산하는 방법에 비하여 느려진다. 따라서 호스트에서 상수 메모리로 데이터를 전송하고 상수 메모리에서 한번만 적재하여 연산하는 방법을 사용하는 것이 속도 향상을 시킬 수 있다.
하지만 상수 메모리 또한 저장할 수 있는 데이터 량이 제한되어 있기 때문에 메모리 크기와 GPU의 개수에 따라 유효 광원을 타일링하여 전송해야한다. 도 12에서 입력 광원에서 유효광원을 타일링하는 방법에 대하여 나타내었다. 도 12(a)는 유효 광원과 GPU의 개수에 따른 타일링 방법으로 광원의 세기가 '0'이 아닌 광원의 데이터를 GPU의 ID에 따라 나누어 준다. 도 12(b)는 상수 메모리의 크기 또는 연산 속도에 따라 해당 ID의 광원 버퍼를 타일링하는 방법이다.
다음으로, 홀로그램의 타일링에 대하여 도 13을 참조하여 보다 구체적으로 설명한다.
앞에서, 홀로그램의 화소에 대하여 쓰레드를 맵핑하는 것이 유리하다는 것을 보였다. 따라서 블록과 쓰레드를 앞서 설명한 방법을 이용하여 할당하여야 한다.
하나의 쓰레드에서는 최소 상수 메모리에서 읽어온 데이터를 저장할 4개(xj,yj,zjj)(광원 데이터)의 레지스터와 홀로그램의 화소의 좌표(xα,yα)의 2개, 홀로그램 화소의 누적 덧셈의 결과(R(Iα),J(Iα))의 2개, 메모리 접근을 위한 주소의 1개의 레지스터 그리고 중간 값을 저장할 1개의 레지스터가 필요하므로 총 10개 이상의 레지스터가 필요하다.
만약 수학식 5의 두 조건을 만족할 경우, 하나의 쓰레드에서 n×m개의 홀로그램 화소를 생성할 수 있다. NReg / Thread(Reg)는 쓰레드당 레지스터이고 NTotalthread(Thread)은 동시에 실행할 수 있는 총 쓰레드의 개수로 SM당 할당한 쓰레드와 GPU내의 총 SM의 개수의 곱으로 나타낼 수 있다. N은 생성할 홀로그램의 너비이고 M은 높이이다.
하나의 쓰레드에서 여러 개의 홀로그램 화소를 생성할 경우 좌표 항에 대하여 레지스터를 공유할 수 있어 속도를 향상시킬 수 있다. 하지만 한 번에 사용 가능한 쓰레드 보다 타일링된 홀로그램의 블록의 개수가 적을 경우 모든 자원을 쓰지 않는 현상이 생기므로 최소 타일링 개수는 최대 사용 쓰레드 이상으로 해야 한다.
[수학식 5]
Figure 112013033712600-pat00006
도 13에 쓰레드당 맵핑되는 홀로그램 화소를 나타내었다. 도 13(a)는 각 쓰레드에 하나의 홀로그램 화소 하나씩 맵핑되고 (b)는 각 쓰레드에서 2×2블록을 연산하는 방법이고 (c)는 4×4 블록을 연산한다. (b)의 방법에서 쓰레드당 사용하는 레지스터는 20개이고 (c)의 방법은 48개의 레지스터를 사용한다.
m,n이 쓰레드의 개수가 많이 필요할 경우 연산할 수 있는 블록에 대하여 모든 계산이 끝난 후 다음 블록에 대하여 연산하게 된다. 따라서 쓰레드의 최대 개수는 정해져 있지만 블록의 최대 개수는 65536개로 거의 일반 영상의 해상도를 만족할 수 있다.
만약 N이 3n이라고 가정하면 하나의 블록 내에 n×n개의 쓰레드가 할당되며 3×3블록을 할당된다. 이 경우 GPU에서 모든 블록을 할당할 수 없을 경우 할당할 수 있는 모든 블록에 대하여 연산을 하고 남은 블록을 할당함으로써 연산이 수행된다.
N(thread)는 하나의 블록 내에 할당하는 쓰레드의 개수이다. 만약 단위 연산할 쓰레드가 48일 경우 N(thread)가 48이 되거나 우변의 값이 32일 경우는 24로 하여 두 개의 블록이 연산할 수 있도록 해야 한다.
레지스터는 GPU 커널상에서 변수 선언에 의해 자원이 할당되고 SM과 SP는 블록 및 쓰레드의 설정에 따라 할당된다.
다음으로, 본 발명의 실험을 통해 본 발명의 효과를 도 14 내지 도 21을 참조하여 설명한다.
먼저, 본 발명의 실험에 따라 구현한 환경에 대하여 설명한다.
구현한 고속 홀로그램 생성 프로그램은 nVidia사의 CUDA를 이용하여 프로그램 하였고 사용된 범용 GPU(GPGPU)는 GTX 580 두 대를 이용하여 실험 하였다. GTX 580의 특성은 도 14에 나타냈다. 총 DRAM(전역 메모리)의 크기는 1536MB이고 상수 메모리는 64KB, 블록당 공유 메모리는 48KB이고 SM당 32768개의 32비트의 레지스터를 사용할 수 있다. 또한 블록당 최대 쓰레드의 크기는 1024개이고 SM당 사용할 수 있는 최대 쓰레드(SM당 SP의 개수)는 1536개이고 총 SM의 개수는 16개로 이루어져 있고 코어는 1.566GH로 동작 한다. 또한 DRAM은 2.01GHz의 속도로 동작하고 384bit로 데이터를 주고받는다.
다음으로, 본 발명의 실험에 따라 메모리 종류에 따른 홀로그램 생성 결과를 설명한다.
도 15는 GPU의 메모리 종류에 따라 1K의 유효 광원에 따른 1024×]024의 홀로그램을 생성할 때의 시간을 측정한 결과이다. 초기 파라미터 LUT의 계산 시간과 데이터 전송시간을 제외한 20프레임의 홀로그램을 생성하였을 때 평균 시간을 도 16에 나타내었다. LUT와 광원의 메모리를 모두 상수 메모리에 저장을 하고 연산하는 방법이 31.137ms로 가장 효율 적으로 연산하는 결과를 보였다.
다음으로, 본 발명의 실험에 따라 블록 사이즈에 따른 홀로그램 생성 결과를 설명한다.
도 17은 블록당 쓰레드의 개수에 따라 1K광원으로 1,024×1,024홀로그램을 상수 메모리를 이용하여 생성한 결과이다. GTX 580은 SM당 1,536개의 SP를 가지고 있기 때문에 하나의 블록당 512개의 쓰레드로 구성을 할 경우 SM당 3개의 블록을 구성을 할 수 있다. 따라서 1024개의 쓰레드로 구성하는 것보다 512개의 쓰레드로 구성 하는 것이 효율이 좋다. 도 18에 쓰레드의 개수에 따른 생성 시간의 평균을 나타내었다. 메모리 접근 밴드 폭은 96.48 GB/s이고 쓰레드를 512개로 하였을 경우 1,603.584 GFlops의 부동 소수점 연산 능력을 가진다. 따라서 CGMA 비를 16:1이상일 경우 최대 효율을 낼 수 있다. 광원과 LUT는 상수메모리를 사용하기 때문에 실제 CGMA의 비는 모든 커널이 종료 될 때 까지 누적된 홀로그램의 세기를 저장하기위한 두 번의 메모리 접근이 있다. 따라서 1K의 유효 광원을 연산 할 때 10:1의 CGMA가 가능하다.
다음으로, 본 발명의 실험에 따라 홀로그램 타일링에 따른 홀로그램 생성 결과를 설명한다.
도 19는 쓰레드당 홀로그램 화소를 타일링하여 맵핑하였을 때 연산 시간에 대한 결과이다. 1K광원에 대하여 1,024×1,024 홀로그램을 생성하며 상수 메모리를 사용하고 블록당 512개의 쓰레드를 할당하였다. 블록당 최대 레지스터는 32,768이고 블록의 크기를 512개 이므로 쓰레드당 최대 64개의 레지스터를 할당할 수 있다. 따라서 쓰레드당 4×4블록을 연산을 할 경우 48개의 레지스터를 사용한다. 또한 SM당 3개의 블록이고 총 16개의 SM이 존재하기 때문에 한 번에 연산할 수 있는 총 화소의 개수는 393,216개의 화소를 연산할 수 있다. 따라서 1024×1024의 홀로그램을 생성하기 위해서는 총 2.67번의 연산을 수행해야한다. 만약 한 번에 연산할 수 있는 총 화소의 개수가 홀로그램의 총 화소의 개수보다 적을 경우 최대 효율을 내기 어렵다. 따라서 최소의 화소의 개수 보다는 커야 한다.
도 20에서는 앞서 보인 결과를 바탕으로 최적화된 디지털 홀로그램 생성 시간을 보이고 있다. 1K 광원에 대해서 1,024×1,024 크기의 홀로그램을 평균적으로 24ms에 생성할 수 있다. 즉, 실시간으로 디지털 홀로그램 콘텐츠의 생성이 가능한 것이다. 도 21에서는 이전 연구들과의 성능 비교를 요약하였다.
본 발명에서는 GPU의 자원할당에 따른 GPU의 동작에 대하여 설명하고 홀로그램 생성을 위한 최적화 기법에 대하여 가이드라인을 설명하였다. GPU의 커널이 실행될 때 필요한 레지스터 및 실행 쓰레드 및 블록의 개수에 따른 GPU의 동작을 파악하고 최적화된 자원 할당 방법을 설명하였다. 또한 고속의 홀로그램 생성을 위한 타일링 기법과 사용하는 메모리 및 데이터 포맷에 대하여 최적화 하는 방법에 대하여 설명하였다. 실험을 통하여 구동 GPU의 특성을 파악하여 최대 쓰레드를 개수를 결정하고 상수 메모리를 사용하여 CGMA의 비를 높이고 타일링을 통하여 최적의 GPU 동작 점을 확인하였다.
이상, 본 발명자에 의해서 이루어진 발명을 상기 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 상기 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 3D 영상 30 : 제어기
40 : 범용 GPU

Claims (8)

  1. 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치에 있어서,
    적어도 하나의 범용 GPU; 및,
    3차원 영상의 광원에 대하여 홀로그램 영상의 각 화소의 강도를 구하는 홀로그램 생성 수식을 이용하여, 광원 영상으로부터 홀로그램 영상을 생성하되, 상기 홀로그램 생성 수식의 연산을 상기 범용 GPU를 통해 병렬로 처리하게 하는 제어기를 포함하고,
    상기 범용 GPU는,
    하나의 쓰레드를 처리하는 스트림 프로세서(SP)를 다수 구비하고, 하나의 공유메모리를 구비한 다수의 스트림 멀티프로세서(SM); 및,
    상기 SM이 공유하는 하나의 상수메모리를 포함하고,
    상기 홀로그램 생성 수식은 상기 홀로그램 영상의 한 화소의 강도를 모든 광원 각각에 대한 연산(이하 단위 연산)을 누적하여 구하고,
    상기 제어기는 상기 단위 연산을 하나의 쓰레드로 정하여 상기 범용 GPU로 하여금 병렬 연산을 수행하게 하고,
    상기 제어기는, 하나의 쓰레드에서 연산할 수 있는 홀로그램 화소의 크기인 n×m를 다음 [수식 1]을 만족하도록 설정하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
    [수식 1]
    Figure 112014071309144-pat00029

    단, N과 M은 각각 생성할 홀로그램의 너비 및 높이,
    NReg/Thread(Reg)는 쓰레드당 레지스터,
    NTotalthread(Thread)는 동시에 실행할 수 있는 총 쓰레드의 개수.
  2. 제1항에 있어서,
    상기 제어기는, 블록당 쓰레드의 개수의 정수배가 SM 당 최대 쓰레드의 개수가 되고, 블록당 쓰레드의 개수가 블록당 최대 쓰레드의 개수보다 작도록, 상기 블록당 쓰레드의 개수를 정하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
  3. 제1항에 있어서,
    하나의 광원에 대하여 모든 홀로그램 화소의 위치에 대한 단위 연산을 수행하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
  4. 제1항에 있어서,
    상기 제어기는, 광원의 세기가 0이 아닌 유효 광원만 분리하여 상기 범용 GPU에 전송하여 연산하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
  5. 제1항에 있어서,
    상기 제어기는, 하나의 쓰레드에서 광원 데이터(xj,yj,zjj)를 저장할 4개의 레지스터와 홀로그램의 화소의 좌표(xα,yα)의 2개, 홀로그램 화소의 누적 덧셈의 결과(R(Iα),J(Iα))의 2개, 메모리 접근을 위한 주소의 1개의 레지스터, 및, 중간 값을 저장할 1개의 레지스터의 적어도 10개의 레지스터를 할당하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
  6. 삭제
  7. 제1항에 있어서,
    상기 NTotalthread(Thread)는 SM당 할당한 쓰레드와 상기 범용 GPU 내의 총 SM의 개수의 곱으로 구하는 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
  8. 제1항에 있어서,
    상기 홀로그램 생성 수식은 CGH(Computer Generated Hologram)에서 사용하는 수식의 프레즈넬(Fresnel) 근사식인 것을 특징으로 하는 범용 GPU 기반 디지털 홀로그램 콘텐츠 고속 생성 장치.
KR1020130042618A 2013-04-18 2013-04-18 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치 KR101499804B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130042618A KR101499804B1 (ko) 2013-04-18 2013-04-18 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130042618A KR101499804B1 (ko) 2013-04-18 2013-04-18 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치

Publications (2)

Publication Number Publication Date
KR20140125037A KR20140125037A (ko) 2014-10-28
KR101499804B1 true KR101499804B1 (ko) 2015-03-09

Family

ID=51995002

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130042618A KR101499804B1 (ko) 2013-04-18 2013-04-18 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치

Country Status (1)

Country Link
KR (1) KR101499804B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180036659A (ko) 2016-08-29 2018-04-09 주식회사 내일해 정축 및 탈축 디지털 홀로그램 생성 장치 및 방법
US11175626B2 (en) 2017-12-04 2021-11-16 Naeilhae, Co. Ltd. On-axis and off-axis digital hologram generating device and method
KR20220118984A (ko) 2018-03-09 2022-08-26 주식회사 내일해 정축 및 탈축 디지털 홀로그램 생성 장치 및 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102562779B1 (ko) * 2022-12-09 2023-08-04 재단법인 구미전자정보기술원 GPU 병렬 연산을 이용한 수평 시차 기반 호겔(Hogel) 이미지 생성 방법 및 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100098094A (ko) * 2009-02-27 2010-09-06 한국전자통신연구원 그래픽 프로세서를 이용한 ms―office 파일로부터의 고속 패스워드 복구 시스템 및 방법
US20120050460A1 (en) * 2010-08-26 2012-03-01 City University Of Hong Kong Fast generation of holograms
KR101169367B1 (ko) * 2010-11-02 2012-07-30 광운대학교 산학협력단 고속 홀로그램 생성 장치 및 방법
KR20130021544A (ko) * 2011-08-23 2013-03-06 광운대학교 산학협력단 독립적 홀로그램 화소 연산 방식의 고속 홀로그램 생성 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100098094A (ko) * 2009-02-27 2010-09-06 한국전자통신연구원 그래픽 프로세서를 이용한 ms―office 파일로부터의 고속 패스워드 복구 시스템 및 방법
US20120050460A1 (en) * 2010-08-26 2012-03-01 City University Of Hong Kong Fast generation of holograms
KR101169367B1 (ko) * 2010-11-02 2012-07-30 광운대학교 산학협력단 고속 홀로그램 생성 장치 및 방법
KR20130021544A (ko) * 2011-08-23 2013-03-06 광운대학교 산학협력단 독립적 홀로그램 화소 연산 방식의 고속 홀로그램 생성 장치

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180036659A (ko) 2016-08-29 2018-04-09 주식회사 내일해 정축 및 탈축 디지털 홀로그램 생성 장치 및 방법
US11175626B2 (en) 2017-12-04 2021-11-16 Naeilhae, Co. Ltd. On-axis and off-axis digital hologram generating device and method
KR20220118984A (ko) 2018-03-09 2022-08-26 주식회사 내일해 정축 및 탈축 디지털 홀로그램 생성 장치 및 방법

Also Published As

Publication number Publication date
KR20140125037A (ko) 2014-10-28

Similar Documents

Publication Publication Date Title
Cho et al. MEC: Memory-efficient convolution for deep neural network
Hong-Tao et al. K-means on commodity GPUs with CUDA
Pennycook et al. Performance analysis of a hybrid MPI/CUDA implementation of the NASLU benchmark
CN112819682A (zh) 稀疏数据的收缩算术
GB2521155A (en) Configuring thread scheduling on a multi-threaded data processing apparatus
Van Werkhoven et al. Optimizing convolution operations on GPUs using adaptive tiling
KR101499804B1 (ko) 범용 gpu 기반 디지털 홀로그램 콘텐츠 고속 생성 장치
Sirotković et al. K-means image segmentation on massively parallel GPU architecture
Cui et al. Real-time stereo vision implementation on Nvidia Jetson TX2
Chen et al. Improving GPGPU performance via cache locality aware thread block scheduling
Shi et al. Efficient sparse-dense matrix-matrix multiplication on GPUs using the customized sparse storage format
Wu et al. Optimizing dynamic programming on graphics processing units via adaptive thread-level parallelism
Torres et al. Using Fermi architecture knowledge to speed up CUDA and OpenCL programs
Chen et al. Implementation and performance of image filtering on GPU
Walden et al. Memory Optimizations for Sparse Linear Algebra on GPU Hardware
US20220414054A1 (en) Dual pipeline parallel systolic array
Marwa et al. Image processing application on graphics processors
Nie et al. Adaptive sparse matrix-vector multiplication on CPU-GPU heterogeneous architecture
Zhang et al. GPU-accelerated parallel algorithms for map algebra
Guo et al. Novel accelerated methods for convolution neural network with matrix core
KR20210113762A (ko) 연산량에 따른 가변 데이터 동작 주파수 기반 인공지능 연산기 시스템
Dudnik et al. Cuda architecture analysis as the driving force Of parallel calculation organization
Wang et al. Egpuip: An embedded gpu accelerated library for image processing
Zheng et al. Optimizing massively parallel sparse matrix computing on ARM many-core processor
Wozniak et al. Parallel implementation of conjugate gradient method on graphics processors

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180223

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20200302

Year of fee payment: 6