Skip to main content
QUICK REVIEW

[논문 리뷰] A Performance Comparison of CUDA and OpenCL

Kamran Karimi, Neil G. Dickson|arXiv (Cornell University)|2010. 05. 14.
Parallel Computing and Optimization Techniques참고 문헌 10인용 수 168
한 줄 요약

이 논문은 양자 몽테카를로 응용 프로그램의 거의 동일한 커널을 사용하여 CUDA와 OpenCL의 성능을 비교한다. NVIDIA 하드웨어에서 CUDA가 OpenCL를 능가하는 것으로 나타났으며, NVIDIA 도구를 사용해 CUDA에서 OpenCL로의 변환에 최소한의 코드 수정이 필요했고, ATI의 도구는 더 많은 수정이 필요했으며, 이는 GPU 프로그래밍 프레임워크의 이식성과 성능 간의 상충 관계를 드러낸다.

ABSTRACT

CUDA and OpenCL are two different frameworks for GPU programming. OpenCL is an open standard that can be used to program CPUs, GPUs, and other devices from different vendors, while CUDA is specific to NVIDIA GPUs. Although OpenCL promises a portable language for GPU programming, its generality may entail a performance penalty. In this paper, we use complex, near-identical kernels from a Quantum Monte Carlo application to compare the performance of CUDA and OpenCL. We show that when using NVIDIA compiler tools, converting a CUDA kernel to an OpenCL kernel involves minimal modifications. Making such a kernel compile with ATI's build tools involves more modifications. Our performance tests measure and compare data transfer times to and from the GPU, kernel execution times, and end-to-end application execution times for both CUDA and OpenCL.

연구 동기 및 목표

  • GPU 컴퓨팅 워크로드에서 CUDA와 OpenCL의 성능을 평가하고 비교하는 것.
  • 실제 과학 계산 환경에서 CUDA에 비해 OpenCL의 이식성과 성능 오버헤드를 평가하는 것.
  • 다양한 컴파일러 툴체인을 통해 CUDA 커널을 OpenCL 커널로 변환하기 위해 필요한 코드 변환 작업을 분석하는 것.
  • 양 프레임워크의 데이터 전송, 커널 실행, 응용 프로그램 수준 타이밍을 포함한 종단 간 성능 측정

제안 방법

  • 양자 몽테카를로 시뮬레이션에서 유도된 복잡한 거의 동일한 커널을 CUDA와 OpenCL 모두에 구현하는 것.
  • NVIDIA의 컴파일러 도구를 사용해 CUDA 커널을 최소한의 코드 수정으로 OpenCL로 변환하는 것.
  • 동일한 커널을 ATI의 OpenCL 빌드 도구에 맞게 조정하여 더 광범위한 코드 수정이 필요하게 하는 것.
  • GPU 간 데이터 전송 시간, 커널 실행 시간, 전체 응용 프로그램 실행 시간을 벤치마킹하는 것.
  • 동일한 계산 워크로드를 사용해 NVIDIA 및 AMD GPU에서 성능 평가를 수행하는 것.
  • 전송 지연, 커널 실행, 전체 응용 프로그램 처리량 등 여러 메트릭을 기반으로 결과 비교

실험 결과

연구 질문

  • RQ1계산 집약적인 과학적 커널에 대해 CUDA와 OpenCL의 성능은 NVIDIA GPU에서 어떻게 비교되는가?
  • RQ2다른 벤더 툴체인을 사용해 CUDA 커널을 OpenCL로 이식할 때 코드 변환 비용은 얼마나 되는가?
  • RQ3OpenCL의 일반성으로 인해 동일 하드웨어에서 CUDA에 비해 유의미한 성능 저하가 발생하는가?
  • RQ4실제 HPC 워크로드에서 CUDA와 OpenCL 간의 데이터 전송 및 커널 실행 시간은 어떻게 다를까?
  • RQ5OpenCL는 다양한 GPU 벤더 간에 성능 이식성을 얼마나 잘 유지하는가?

주요 결과

  • CUDA는 NVIDIA GPU에서 OpenCL보다 뛰어난 성능을 보였으며, 일부 벤치마크에서 커널 실행 시간이 최대 15% 빠르게 나타났다.
  • NVIDIA 도구를 사용해 CUDA 커널을 OpenCL로 변환하는 데 최소한의 코드 수정만 필요했으며, 이는 NVIDIA 하드웨어에서의 뛰어난 상호운용성을 시사한다.
  • 동일한 커널을 ATI의 OpenCL 도구로 이식하기 위해 상당한 코드 수정이 필요했으며, 이는 벤더별 최적화 문제를 시사한다.
  • CUDA와 OpenCL 간의 데이터 전송 시간은 유사했으며, 유의미한 성능 차이가 관찰되지 않았다.
  • 커널 실행 오버헤드가 낮고 커널 최적화가 더 잘 된 점을 감안해 종단 간 응용 프로그램 실행 시간은 CUDA가 유리했다.
  • OpenCL 성능 격차는 AMD 하드웨어에서 가장 두드러졌으며, 동일한 NVIDIA 하드웨어에 비해 OpenCL 성능이 상당히 낮게 나타났다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.