開発およびチューニングの難しさと移植性とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > 開発およびチューニングの難しさと移植性の意味・解説 

開発およびチューニングの難しさと移植性

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/18 09:34 UTC 版)

GPGPU」の記事における「開発およびチューニングの難しさと移植性」の解説

2015年現在GPGPU対応プログラム開発環境APIとして代表的なものCUDAOpenCL、およびDirectComputeであり、GPGPU黎明期開発環境比べればはるかに開発しやすくなっているものの、依然としてアクセラレーターとなるハードウェア意識したGPGPU特有のプログラミング知識不可欠である。また、規格によってある程度標準化抽象化されているとはいえいずれもデバイスとの通信行なうローレベルのAPI使いこなさなければならないなど、通常の C/C++Fortran用いたソフトウェア開発とは次元異な難しさがあり、導入ハードルが高い。特に OpenCLDirectComputeハードウェアに共通にアクセスできる API規定しているだけであり、CUDAよりもさらにローレベルの抽象度である。この点に関しては、アクセラレーター存在抽象化し従来CPUベース並列プログラミング用の共通規OpenMP に近い高レベルプログラミング環境提供する OpenACCC++ AMP といった規格徐々に整備されつつある。 CPU上で動作するプログラム組み込み環境除きライブラリ含めて高レベル洗練された開発環境整っていることが多い。例えC++JavaC#言語など代表的な高級言語では、単純な連続メモリ配列構造だけでなく、リンクリスト二分探索木ハッシュテーブルといった基本的なデータ構造プログラミング言語標準ライブラリ提供されていることがほとんどだが、GPUプログラミング場合高速に処理できないという理由から[要出典]基本的に配列構造しか用意されていないフォトンマッピング手法開発者であるWann Jensen博士によると、複雑なデータ構造GPU上で扱おうとするとCPUよりもはるかに困難となる場合が多いと評されている。他にも、GPUプログラミング言語であるHLSLGLSL、およびOpenCL CではC++テンプレートのようなジェネリックプログラミング機能サポートされないため、生産性が低い。なおBLASやFFTに関しては、NVIDIAによるCUDA実装cuBLASやcuFFT、およびAMDによるOpenCL実装clMath (clBLAS, clFFT) が存在するそのほか二分探索ソートリダクションスキャンといったよく使われるアルゴリズムに関しては、NVIDIAによるCUDA実装C++テンプレートベース並列アルゴリズムライブラリThrustや、AMDによるOpenCL/C++ AMP実装同等ライブラリBolt存在するが、両者互換性はない。 また、GPU演算した結果CPU読み出し利用する場合従来アーキテクチャではGPUメモリからCPUメモリへのデータ転送が必要となる。その逆もまた然りである。こうしたCPU-GPU間のメモリ転送にかかる処理時間およびプログラミング上の手間が、性能ボトルネックソフトウェア開発難しさにつながるという問題抱えている。これは物理的にメモリ分離されているdGPUCPUによる構成だけでなく、従来型のオンボードグラフィックスやCPU内蔵GPUといった、物理メモリ共有する構成においても同様である。CUDAOpenCLにはソフトウェアドライバーレベルでこの転送の手間を解決する仕組みとして統合メモリ (unified memory) 機能共有仮想メモリ (shared virtual memory) 機能用意されてはいるが、あくまでメモリ空間アドレッシング仮想化して転送処理を自動化するだけの仕組みであり、アプリケーションプログラマーが明示的に転送処理を記述してチューニング最適化する場合比べてパフォーマンス上の問題もある。この点に関しては、AMD推進しているHSA (Heterogeneous System Architecture) におけるhUMA (heterogeneous Uniform Memory Access) といった解決策模索されている。 GPGPUプログラム移植性に関しては、CUDANVIDIAハードウェア専用であり、また DirectCompute (DirectX) はMicrosoftプラットフォームMicrosoft WindowsXbox Oneなど)専用という制約がある。一方でOpenCLは、GPUだけでなく対応するあらゆるハードウェアあらゆるプラットフォーム展開できる高い移植性持っているが、性能に関するポータビリティは必ずしも確保保証されず、場合によってはデバイスチップごとにコードチューニングする必要がある

※この「開発およびチューニングの難しさと移植性」の解説は、「GPGPU」の解説の一部です。
「開発およびチューニングの難しさと移植性」を含む「GPGPU」の記事については、「GPGPU」の概要を参照ください。

ウィキペディア小見出し辞書の「開発およびチューニングの難しさと移植性」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「開発およびチューニングの難しさと移植性」の関連用語

1
8% |||||

開発およびチューニングの難しさと移植性のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



開発およびチューニングの難しさと移植性のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのGPGPU (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS