現行の技術
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/25 14:05 UTC 版)
「ヘテロジニアス・コンピューティング」の記事における「現行の技術」の解説
OpenCL Khronos Groupが管理・策定している並列コンピューティングのためのクロスプラットフォームなAPI仕様。 派生規格として、Webブラウザ上でヘテロジニアス・コンピューティングを行なうためのWebCLも標準として策定されているが、2021年3月現在、ネイティブに対応しているブラウザは存在しない。 当初Appleを中心に提唱されたが、その後Appleプラットフォームでは非推奨となった。 SYCL Khronos Groupが管理・策定しているヘテロジニアス・コンピューティング向けの抽象化レイヤー。OpenCLだけでなく、他のバックエンドにも対応する。IntelのCPU/GPU/FPGA開発環境であるoneAPI(英語版)の中心にもなっている。ISO C++との互換性が考慮されている。 CUDA (Compute Unified Device Architecture) NVIDIAによるGeForce / Quadro / Tesla / TegraシリーズGPU用のGPGPU開発・実行環境。C言語を拡張したCUDA Cによる開発を可能にする(Ver.2.2以降はC++言語を拡張したCUDA C++による開発も可能となっている)。NVIDIAによるコンパイラ実装nvccだけでなく、オープンソースコンパイラのLLVMでもCUDAコンパイラの実装が始まっている 。また、PGI社からはCUDA Fortran Compilerが提供されている。 ヘテロジニアス・コンピューティング向け標準C++ライブラリのlibcu++ (NVIDIA C++ Standard Library) も存在する。libcu++はLLVMのlibc++の派生となっている。 HIP (Heterogeneous-Compute Interface for Portability) CUDAに近いカーネル言語およびAPI。AMDによるROCm (Radeon Open Compute) プラットフォームの一環として、オープンソースで提供されている。実行環境としてAMD GPUに対応しているほか、バックエンドにCUDAコンパイラを利用することで、NVIDIA GPU上で動作可能なCUDAコードを生成することもできる。 CUDAコードをHIPコードへと変換するツールHIPIFYもオープンソースで提供されている。 C++ AMP マイクロソフトが策定した、ハードウェアアクセラレートされた並列処理をC++言語で記述できるようにする高レベルのライブラリ・言語拡張。公式の実装としてはDirectComputeをバックエンドとするMicrosoft Visual C++がある。 またオープンソースのC++ AMP実装「HCC」も存在したが、その後非推奨となり、CUDA類似のHIP APIをベースとするHIP-Clangに置き換えられた。 OpenMP (4.0以降) OpenMPは4.0以降offloadに対応するようになった。GCC 5以降やLLVM/Clangなどがこれに対応している。 SPMD Programming Language インテルによって開発された、C言語を拡張したSPMD(英語版)対応言語であり、Intel SPMD Program Compiler (ISPC) でコンパイル可能。ISPCはオープンソースであり、バックエンドにLLVMを使用している。IntelのCPUやXeon Phiだけでなく、NVIDIA Kepler GPUやARMにも対応している。ISPCを導入している例としては、オープンソースのレイトレーシングエンジンであるEmbreeがある。 DirectCompute マイクロソフトが開発・配布しているDirectXテクノロジーのひとつであり、DirectX 11/DirectX 12セットに含まれるGPGPU向けのAPI。GPGPU向けのシェーダーステージとして導入されたDirect3Dコンピュートシェーダー (compute shader) を利用する。HLSLをカーネル記述言語とする。グラフィックス連携用途を重視している。動作環境はWindows Vista以降のWindowsプラットフォームおよびXbox One以降のXboxプラットフォーム。 OpenGLコンピュートシェーダー DirectXに搭載されている前述のコンピュートシェーダー同様、OpenGLでもバージョン4.3でGPGPU向けのシェーダーステージが標準化された。GLSLをカーネル記述言語とする。バージョン4.6のGL_ARB_gl_spirv拡張によりSPIR-V中間表現に対応した。 OpenGL ESではバージョン3.1で導入された。 Webブラウザ向けのOpenGL ES派生規格であるWebGLでは、まだコンピュートシェーダーに対応しておらず、草案の段階である。 Vulkanコンピュートシェーダー OpenGLと同様にVulkanにもコンピュートシェーダーがある。シェーダーコードの中間表現にはSPIR-Vが採用されており、オフラインコンパイルが可能。主にGLSLまたはHLSLをカーネル記述言語に使用する。 Metalコンピュートシェーダー AppleはOpenCLを非推奨とし、代替としてMetal APIのコンピュートシェーダーを推奨している。カーネルの記述にはMetal Shading Language (MSL) を用いる。macOS/iOSなどのAppleプラットフォーム上でのみ利用可能。 OpenACC OpenMPのようにコード中にディレクティブを挿入することで、並列処理のハードウェアアクセラレートを行なえるようにする標準規格であり、Cray (のちにHPEが買収)、NVIDIA、PGI (のちにNVIDIAが買収)、CAPSがヘテロジニアスシステムに向けて設計した。 PGIのコンパイラに初めて搭載され[出典無効]、その後、GCC 5.0以降にも搭載されている。HPEはCCE (Cray Compiling Environment) 10.0.0以降でOpenACCを非推奨とし、OpenMPを推奨するようになっている。 NVIDIAは2020年にOpenACCなどの包括的なサポートを含むHPC SDKを発表した。
※この「現行の技術」の解説は、「ヘテロジニアス・コンピューティング」の解説の一部です。
「現行の技術」を含む「ヘテロジニアス・コンピューティング」の記事については、「ヘテロジニアス・コンピューティング」の概要を参照ください。
- 現行の技術のページへのリンク