インテル® インプリシット SPMD プログラム・コンパイラー

CPU および GPU 上のハイパフォーマンス SIMD プログラミング向けオープンソース・コンパイラー

このページは、ispc github に公開されている https://ispc.github.io/index.html の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。

概要

概要

インテル® インプリシット SPMD プログラム・コンパイラー (インテル® ISPC) は、「単一プログラム複数データ (SPMD)」 (英語) プログラミング向けの拡張機能を備えた、C プログラミング言語のバリアント・コンパイラーです。SPMD モデルでは、プログラマーは通常シリアルプログラムのように見えるプログラムを作成しますが、実行モデルでは、ハードウェア上で複数のプログラム・インスタンスが並列に実行されます (この概念を説明する詳しい説明と例については、インテル® ISPC ドキュメントを参照してください)。

インテル® ISPC は、C ベースの SPMD プログラミング言語をコンパイルして、CPU と GPU の SIMD ユニットで実行します。多くの場合、4 レーンのインテル® SSE ベクトルユニットをサポートするアーキテクチャーでは 3 倍以上、8 レーンのインテル® AVX ベクトルユニットをサポートするアーキテクチャーでは 5 倍から 6 倍の高速化が実現でき、組込みコードを記述するような煩わしさはありません。複数のコアを活用する並列処理もインテル® IPSC でサポートされるため、コア数とベクトルユニット幅の両方にスケーリングするパフォーマンス向上を実現するプログラムを作成できます。

インテル® ISPC の設計にはいくつかの重要な原則があります。

  • CPU と GPU 上で SPMD を実行することを望むパフォーマンス志向のプログラマーに、良好なパフォーマンスを発揮する C 言語の拡張セットを提供します。
  • プログラマーとハードウェアの間に軽量な抽象化レイヤーを提供します。特に、プログラマーがコンパイルされたアセンブリー言語とベースとなるハードウェアへのソース・プログラムのマッピングを明確に推論できる実行モデルとデータモデルを持ちます。
  • 組込み関数を直接記述するような極めて生産性の低い作業を行うことなく、SIMD ベクトルユニットの計算能力を活用できます。
  • C/C++ アプリケーション・コードとインテル® ISPC の SPMD コードが同一プロセッサー上で動作する際の緊密な連携を調査します。それには、2 つの言語間での軽量な関数呼び出しを行い、コピーや再構成なしにポインターを介して直接データを共有します。

インテル® ISPC は BSD ライセンス (英語) に基づくオープンソース・コンパイラーです。バックエンド・コードの生成と最適化に優れた LLVM コンパイラー基盤 (英語) を使用し、GitHub* で提供 (英語) されます。ホスト・オペレーティング・システムとして、Windows*、Linux*、および macOS* をサポートし、Android*、iOS*、および PS4*/PS5* をターゲットとすることもできます。現在、x86 (インテル® SSE2、SSE4、AVX、AVX2、および AVX-512)、ARM* (Neon*)、およびインテル® GPU アーキテクチャー (Gen9 とインテル® Xe アーキテクチャー・ベースのグラフィックス・ファミリー) をサポートしています。

インテル® ISPC のサポートは、GitHub* Issues (英語) と GitHub* Discussions (英語) ユーザーフォーラムによって提供されます。

機能

ダウンロード

ドキュメント

リソース

パフォーマンス

共著者