Publications

Detailed Information

CUDA와 OpenCL 간 자동 코드변환기 : Bi-directional source-to-source translator between CUDA and OpenCL

Cited 0 time in Web of Science Cited 0 time in Scopus
Authors

주진영

Advisor
이재진
Major
공과대학 전기·컴퓨터공학부
Issue Date
2014-08
Publisher
서울대학교 대학원
Keywords
CUDAOpenCL코드변환기GPUTranslator
Description
학위논문 (석사)-- 서울대학교 대학원 : 전기·컴퓨터공학부, 2014. 8. 이재진.
Abstract
컴퓨터에서 계산은 중앙처리장치(CPU)에서 대부분 수행했다. 최근에 CPU의 계산을 돕는 추가장치를 부착한 컴퓨터들이 늘고 있다. 이러한 추가장치를 가속기라고 하는데 GPU, FPGA, Intel Xeon phi 등의 가속기가 있다. 가속기를 사용하여 연산을 수행하면, CPU만 사용하는 것보다 훨씬 많은 계산을 더 짧은 시간, 더 적은 전력으로 할 수 있다. 가속기를 장착한 컴퓨터를 이종 계산 시스템이라고 하는데, 슈퍼컴퓨팅 분야에서 이종 계산 시스템을 사용하는 것이 점점 대중화 되고 있는다. 이종 계산 시스템을 제대로 활용하기 위해서는 병령 프로그래밍을 해야하고, 이 때 가장 보편적인 사용하는 프로그래밍 모델이 OpenCL과 CUDA이다. CUDA는 NVIDIA에서 개발하여 NVIDIA GPU에서만 동작하는 프로그래밍 모델이다. OpenCL은 공개 병렬 프로그래밍 표준으로, Khronos group이 유지 및 관리하고 있다. 초기의 OpenCL은 CUDA와 유사했고, GPU라는 같은 가속기 구조를 목표로 했지만, 두 모델이 따로 발전하면서 다른 점이 많아졌다. 이것은 CUDA와 OpenCL 각각의 모델로 작성된 코드는 상호간의 변환이 어렵다는 의미다. 현재 두 프로그래밍 언어를 사용하는 많은 유저들이 있고, 많은 예제들이 있다. 그래서 두 언어 상호간의 소스 코드를 변환하는 것은 각각의 언어로 작성된 프로그램을 다른 언어로 변환하여 사용할 수 있기 때문에 의미 있는 일이 될 수 있다. 본 논문에서는 앞서 언급한 두 모델간의 공통점과 차이점을 분석하고, 모델 상호간의 자동 코드변환기의 구조와 구현방법을 소개한다. 또한, Rodinia, NVIDIA SDK, SNU NPB 등의 벤치마크를 통해 원본 코드와 변환된 코드간의 성능 차이가 거의 없음을 확인하였다.
Central Processing Unit(CPU) is main compute device. These days, computers that have accelerator are widely used for supercomputer. There are several kinds of accelerators, GPU, FPGA, Intel Xeon phi, etc. If you use accelerator to run compute intensive jobs, you can save energy and get better performance. Computers that have accelerators are called heterogeneous system. To use heterogeneous system, we need new programming model for parallel programming. The most popular programming models are CUDA and OpenCL. CUDA is a proprietary parallel computing framework for NVIDIA GPUs specically. While OpenCL is a standard and open parallel computing framework for various compute devices. Even though early OpenCL and CUDA were very similar, they are not compatible with each other. In this paper, we present similarities and differenes between the two programming models. And based on this comparison, we propose an automatic translator for both OpenCL to CUDA and CUDA to OpenCL. We show that our translator achieves comparable performance with three benchmark suites:Rodinia, NVIDIA SDK, SNU NPB. There are many CUDA and OpenCL application. Our translator is meaningful because we can translate OpenCL application to CUDA application, and vice versa. Through this work, we can reuse applications without any modications and widen code base.
Language
Korean
URI
https://hdl.handle.net/10371/123092
Files in This Item:
Appears in Collections:

Altmetrics

Item View & Download Count

  • mendeley

Items in S-Space are protected by copyright, with all rights reserved, unless otherwise indicated.

Share