Skip to main content
QUICK REVIEW

[論文レビュー] A Performance Comparison of CUDA and OpenCL

Kamran Karimi, Neil G. Dickson|arXiv (Cornell University)|May 14, 2010
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のパフォーマンスを評価・比較すること。
  • 実世界の科学技術計算の文脈において、OpenCLがCUDAに比べてどれほどパフォーマンスオーバーヘッドを伴うか、およびポータビリティを評価すること。
  • 異なるコンパイラツールチェーンを用いた場合に、CUDAカーネルをOpenCLカーネルに変換するためのコード変換作業の負荷を分析すること。
  • 両フレームワークにおけるデータ転送、カーネル実行、アプリケーションレベルのタイミングを含むエンドツーエンドのパフォーマンスを測定すること。

提案手法

  • 量子モンテカルロシミュレーションから得た複雑でほぼ同一のカーネルを、CUDAおよびOpenCLに実装すること。
  • NVIDIAのコンパイラツールを用いて、CUDAカーネルを最小限のコード変更でOpenCLに変換すること。
  • 同じカーネルをATIのOpenCLビルドツールに適応させ、より広範なコード変更を要すること。
  • GPUへのデータ転送時間、カーネル実行時間、およびアプリケーション全体の実行時間のベンチマークを実施すること。
  • 同一の計算ワークロードを用いて、NVIDIAおよびAMDのGPU上でパフォーマンスを評価すること。
  • 転送遅延、カーネル実行、全体のアプリケーションスループットといった複数のメトリクスを用いて結果を比較すること。

実験結果

リサーチクエスチョン

  • RQ1計算集約的な科学的計算カーネルにおいて、NVIDIA GPU上でのCUDAとOpenCLのパフォーマンスはどのように比較されるか?
  • RQ2異なるベンダーツールチェーンを用いた場合、CUDAカーネルをOpenCLにポーティングする際のコード変換コストはどの程度か?
  • RQ3OpenCLの汎用性が、同じハードウェア上でのCUDAに比べて顕著なパフォーマンスペナルティをもたらすか?
  • RQ4実際のHPCワークロードにおいて、CUDAとOpenCLの間でデータ転送時間とカーネル実行時間にどのような差が生じるか?
  • RQ5OpenCLは、異なるGPUベンダー間でパフォーマンスのポータビリティをどの程度維持できるか?

主な発見

  • NVIDIA GPU上ではCUDAがOpenCLを上回るパフォーマンスを示し、一部のベンチマークではカーネル実行時間が最大15%速かった。
  • NVIDIAのツールを用いたCUDAからOpenCLへの変換には最小限のコード変更で済み、NVIDIAハードウェア上での相互運用性が良好であることが示された。
  • ATIのOpenCLツールに同じカーネルを移植するには、著しく多くのコード変更が必要であり、ベンダー固有の最適化の課題が浮き彫りになった。
  • データ転送時間はCUDAとOpenCLで同等であり、顕著なパフォーマンス差は観察されなかった。
  • エンドツーエンドのアプリケーション実行時間は、カーネル実行のオーバーヘッドが低く、より最適化されたカーネルのおかげでCUDAが優勢であった。
  • NVIDIAハードウェアと同等のAMDハードウェア上では、OpenCLのパフォーマンスはCUDAに比べて著しく低く、パフォーマンスギャップが顕著に現れた。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。