ヘテロジニアス・コンピューティング
ヘテロジニアス・コンピューティング (heterogeneous computing) は、
異種 性
かつて[いつ?]のヘテロジニアス・コンピューティングでは
モダンなコンピューティングシステムでは
異種 CPUトポロジー
このようなトポロジーの
また、Alder Lakeも
プラットフォームの例
ヘテロジニアス・コンピューティングのプラットフォームは、ハイエンドサーバーと
高性能 計算 - Cray XD1
- SRC コンピュータ SRC-6 と SRC-7
組 み込 みシステム (DSP とモバイルプラットフォーム)再 構築 可能 計算 - ネットワーク
- Intel IXP ネットワークプロセッサ
- Netronome NFP ネットワークプロセッサ
- パーソナルコンピュータ
向 け汎用 プロセッサ - その
他 (ゲーム専用 機 など)- IBMのCell Broadband Engine - PlayStation 3に
搭載 [9]- SpursEngine - IBM Cellプロセッサの
派生 型
- SpursEngine - IBM Cellプロセッサの
- IBMのCell Broadband Engine - PlayStation 3に
プログラミング環境 の例
ハードウェアや
現行 の技術
- OpenCL
- Khronos Groupが
管理 ・策定 している並列 コンピューティングのためのクロスプラットフォームなAPI仕様 。 派生 規格 として、Webブラウザ上 でヘテロジニアス・コンピューティングを行 なうためのWebCLも標準 として策定 されているが、2021年 3月 現在 、ネイティブに対応 しているブラウザは存在 しない。当初 Appleを中心 に提唱 されたが、その後 Appleプラットフォームでは非 推奨 となった。- SYCL
- Khronos Groupが
管理 ・策定 しているヘテロジニアス・コンピューティング向 けの抽象 化 レイヤー。OpenCLだけでなく、他 のバックエンドにも対応 する。IntelのCPU/GPU/FPGA開発 環境 であるoneAPIの中心 にもなっている。ISO C++との互換 性 が考慮 されている[10]。 - CUDAコードをSYCLコードへと
変換 するツールSYCLomaticもオープンソースとして提供 されている[11]。 - 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コンパイラの実装 が始 まっている[12][13]。また、PGI社 からはCUDA Fortran Compilerが提供 されている[14]。Intel Xe向 けにコンパイルするためのZLUDAもある[15](開発 停止 中 )。 - ヘテロジニアス・コンピューティング
向 け標準 C++ライブラリのlibcu++ (NVIDIA C++ Standard Library) も存在 する。libcu++はLLVMのlibc++の派生 となっている[16]。 - HIP (Heterogeneous-Compute Interface for Portability)
- CUDAに
近 いカーネル言語 およびAPI。AMDによるROCm (Radeon Open Compute) プラットフォームの一環 として、オープンソースで提供 されている[17]。実行 環境 としてAMD GPUに対応 しているほか、バックエンドにCUDAコンパイラを利用 することで、NVIDIA GPU上 で動作 可能 なCUDAコードを生成 することもできる。 - CUDAコードをHIPコードへと
変換 するツールHIPIFYもオープンソースで提供 されている[18]。 - OpenMP (4.0
以降 ) - OpenMPは4.0
以降 offloadに対応 するようになった。GCC 5以降 [19]やLLVM/Clang[20][21]などがこれに対応 している。 - SPMD Programming Language
- インテルによって
開発 された、C言語 を拡張 したSPMD対応 言語 であり、Intel SPMD Program Compiler (ISPC) でコンパイル可能 [22]。ISPCはオープンソースであり、バックエンドにLLVMを使用 している[22]。IntelのCPUやXeon Phiだけでなく、NVIDIA Kepler GPU[23]やARMにも対応 している。ISPCを導入 している例 としては、オープンソースのレイトレーシングエンジンであるEmbreeがある[24]。 - DirectCompute
- マイクロソフトが
開発 ・配布 しているDirectXテクノロジーのひとつであり、DirectX 11/DirectX 12セットに含 まれるGPGPU向 けのAPI。GPGPU向 けのシェーダーステージとして導入 されたDirect3Dコンピュートシェーダー (compute shader) を利用 する。HLSLをカーネル記述 言語 とする。グラフィックス連携 用途 を重視 している[25]。動作 環境 は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では、まだコンピュートシェーダーに対応 しておらず、草案 の段階 である[26]。 - Vulkanコンピュートシェーダー
- OpenGLと
同様 にVulkanにもコンピュートシェーダーがある。シェーダーコードの中 間 表現 にはSPIR-Vが採用 されており、オフラインコンパイルが可能 。主 にGLSLまたはHLSLをカーネル記述 言語 に使用 する。 - Metalコンピュートシェーダー
- AppleはOpenCLを
非 推奨 とし、代替 としてMetal APIのコンピュートシェーダーを推奨 している。カーネルの記述 にはMetal Shading Language (MSL) を用 いる。macOS/iOSなどのAppleプラットフォーム上 でのみ利用 可能 。 - OpenACC
- OpenMPのようにコード
中 にディレクティブを挿入 することで、並列 処理 のハードウェアアクセラレートを行 なえるようにする標準 規格 [27]であり、Cray (のちにHPEが買収 )、NVIDIA、PGI (のちにNVIDIAが買収 )、CAPSがヘテロジニアスシステムに向 けて設計 した[28]。 - PGIのコンパイラに
初 めて搭載 され[29][出典 無効 ]、その後 、GCC 5.0以降 にも搭載 されている[30]。HPEはCCE (Cray Compiling Environment) 10.0.0以降 でOpenACCを非 推奨 とし、OpenMPを推奨 するようになっている[31]。 - NVIDIAは2020
年 にOpenACCなどの包括 的 なサポートを含 むHPC SDKを発表 した[32][33]。
過去 の技術
- C++ AMP
- マイクロソフトが
策定 した、ハードウェアアクセラレートされた並列 処理 をC++言語 で記述 できるようにする高 レベルのライブラリ・言語 拡張 。公式 の実装 としてはDirectComputeをバックエンドとするMicrosoft Visual C++がある。ただしVisual C++ 2022以降 では非 推奨 となった[34]。 - またオープンソースのC++ AMP
実装 「HCC」も存在 した[35]が、その後 非 推奨 となり[36]、CUDA類似 のHIP APIをベースとするHIP-Clangに置 き換 えられた[36]。 - OpenHMPP (Open Hybrid Multicore Parallel Programming)
- OpenACC
同様 、ディレクティブベースのヘテロジニアス・コンピューティング向 けプログラミング標準 。 - OpenMP LEO (Language Extensions for Offload)
- インテルによるIntel MIC (Many Integrated Core) およびGFXへオフロードするためのOpenMP
拡張 。ICC (Intel C++ Compiler) に実装 されていた[37]。 - Close to Metal(CTM, Close To the Metal)
- AMD
社 によるATI系 GPUのストリームプロセッサインターフェイス。ハードウェアに近 いローレベル制御 を可能 とする[38]。 - AMD Stream(
旧 ATI Stream) - AMDによるATI
系 GPU用 のGPGPU開発 ・実行 環境 。CTMをCompute Abstraction Layer(CAL)[39]によって抽象 化 し、Brook言語 をCAL用 に拡張 したBrook+言語 による開発 を可能 にする。 - なおAMDは「GPGPUでDirectX 11およびOpenCLをフルサポートする」と
発表 し[40] [41]、CCC 11.2でRadeon HDシリーズ以上 のGPU向 けにOpenCLドライバーが標準 搭載 された[疑問 点 ][要 出典 ]。 - その
後 、同社 はHSA推進 とともに、独自 規格 ではなくOpenCLをヘテロジニアス戦略 の中核 とする方向 に舵 を切 り直 した。AMDによるCPU/GPU/APU対応 の総合 基盤 テクノロジーは「AMD Accelerated Parallel Processing」(AMD APP)と呼 ばれており、SDKの名称 もATI Stream SDKからAMD APP SDKに変更 ・統一 されたが、その後 AMD APP SDKは廃止 され、GPUコンピューティングの技術 基盤 はオープンソースのROCmプラットフォームに移行 されることになった。 - Sh (libsh)
- ウォータールー
大学 コンピュータグラフィックス研究 室 の成果 に基 づいた、RapidMindによるシェーダープログラミングおよびGPGPUのためのメタプログラミング技術 。C++言語 による開発 を可能 にする。LGPLライセンスで公開 されている。 - RapidMind
- RapidMindによる
商用 並列 コンピューティング開発 環境 。GPU/マルチコアCPU/Cellプロセッサをバックエンドに利用 できる。C++言語 による開発 を可能 にする。 - BrookGPU (Brook for GPU)
- スタンフォード
大学 コンピュータグラフィックス研究 室 によるストリーム・コンピューティング開発 環境 。GPUおよびOpenMPによるマルチコアCPU演算 をバックエンドに利用 できる。C言語 (ANSI C) を拡張 したBrook言語 による開発 を可能 にする。BSDライセンスおよびGPLライセンスで公開 されている。 - PeakStream
- PeakStreamによる
商用 ストリーム・コンピューティング開発 環境 。GPU / マルチコアCPU / Cellプロセッサをバックエンドに利用 できる。PeakStreamは2007年 6月 頃 までにGoogleによって買収 されている。
出典
- ^ “Heterogeneous Processing: a Strategy for Augmenting Moore's Law” (2006
年 ). 2014年 10月 29日 閲覧 。 - ^ “Hetergeneous System Architecture (HSA) Foundation”. オリジナルの2014
年 4月 23日 時点 におけるアーカイブ。 2014年 11月1日 閲覧 。 - ^ S. Mittal and J. Vetter (2015), A Survey of CPU-GPU Heterogeneous Computing Techniques ACM Computing Surveys
- ^ Venkat, Ashish; Tullsen, Dean M. (2014). Harnessing ISA Diversity: Design of a Heterogeneous-ISA Chip Multiprocessor. Proceedings of the 41st Annual International Symposium on Computer Architecture.
- ^
Anand Lal Shimpi (2014
年 5月 5日 ). “AMD Announces Project SkyBridge: Pin-Compatible ARM and x86 SoCs in 2015, Android Support”. AnandTech 2017年 6月 11日 閲覧 . "Next year, AMD will release a low-power 20nm Cortex A57 based SoC with integrated Graphics Core Next GPU." - ^ “Energy Aware Scheduling”. The Linux Kernel documentation. 2020
年 11月16日 閲覧 。 - ^ A Survey Of Techniques for Architecting and Managing Asymmetric Multicore Processors ACM Computing Surveys 2015
年 - ^ “インテル、
次世代 チップ「Alder Lake」をデモ--2021年 下半期 リリースへ”. CNET Japan (2021年 1月 13日 ). 2021年 3月 14日 閲覧 。 - ^ Gschwind, Michael (2005). A novel SIMD architecture for the Cell heterogeneous chip-multiprocessor (PDF). Hot Chips: A Symposium on High Performance Chips.
- ^ ISO C++ and SYCL Join for the Future of Heterogeneous Programming Codeplay 2020
年 6月 9日 - ^ SYCLomatic: A New CUDA-to-SYCL Code Migration Tool Intel
- ^ “How To Compile CUDA Code With LLVM”. Phoronix (2015
年 11月11日 ). 2015年 11月15日 閲覧 。 - ^ “Compiling CUDA C/C++ with LLVM — LLVM 3.8 documentation”. LLVM Project (2015
年 11月13日 ). 2015年 11月15日 閲覧 。 - ^ NVIDIAのCUDAアーキテクチャGPUにおけるFortranサポート
- ^ ZLUDA: Drop-In Open-Source CUDA Support For Intel Xe / UHD Graphics Phoronix 2020
年 11月24日 - ^ NVIDIA C++ Standard Library Now Available Via GitHub Phoronix 2020
年 9月 19日 - ^ ROCm-Developer-Tools/HIP: HIP: C++ Heterogeneous-Compute Interface for Portability
- ^ ROCm-Developer-Tools/HIPIFY: HIPIFY: Convert CUDA to Portable C++ Code
- ^ OpenMP 4.0 Offloading For Intel MIC Lands In GCC 5 Phoronix 2014
年 11月13日 - ^ OpenMP Support LLVM project
- ^ LLVM 11 Merges AMD Radeon GCN Offloading For OpenMP Phoronix 2020
年 5月 27日 - ^ a b Intel SPMD Program Compiler - Overview Intel Corporation
- ^ Intel SPMD Program Compiler User's Guide - Compiling For The NVIDIA Kepler GPU Intel Corporation
- ^ Embree Overview Intel Corporation
- ^
後藤 弘 茂 のWeekly海外 ニュース - ^ WebGL 2.0 Compute
- ^ OpenACC ディレクティブによるプログラミング by PGI Compilers
- ^ "Nvidia, Cray, PGI, and CAPS launch 'OpenACC' programming standard for parallel computing". The Inquirer. 4 November 2011. 2021
年 3月 14日 閲覧 。 - ^ OpenACC ディレクティブによるプログラミング by PGI Compilers
- ^ OpenACC Changes Merged Today For GCC 5 Phoronix 2015
年 1月 15日 - ^ OpenACC Use Hewlett Packard Enterprise Development
- ^ NVIDIA HPC SDK を
発表 | NVIDIA - ^ High Performance Computing (HPC) SDK | NVIDIA
- ^ C++ AMP Overview | Microsoft Learn
- ^ AMDとMS,GPU
演算 用途 向 けのコンパイラ「C++ AMP v1.2」を発表 - 4Gamer.net - ^ a b HCC Deprecation Notice AMD
- ^ Initiating an Offload on Intel® Graphics Technology Intel
- ^ AMDのGPGPU
戦略 は新 章 へ - ATI Streamの展望 、DirectX Compute Shaderの衝撃 (2) ATI Streamとは? | マイナビニュース - ^ "Close to the Metal", Justin Hensley, AMD Graphics Product Group
- ^ AMD、DirectX 11/OpenCLのGPGPUをフルサポートへ
- ^ AMD Drives Adoption of Industry Standards in GPGPU Software Development