はじめに
現代のコンピューター・アーキテクチャーで高い計算パフォーマンスを達成するには、最適化され、電力-効率に優れた、スケーラブルなコードが必要です。従来のハイパフォーマンス・コンピューティング (HPC) を始めとして AI、ビデオ解析、データ解析においてハイパフォーマンスの需要は増え続けています。
中央処理装置 (CPU) とグラフィックス処理装置 (GPU) は、基本的な計算エンジンです。しかし、計算の需要が進化するにつれて、CPU と GPU の違いや、それぞれのワークロードに最適なものが必ずしも明確ではなくなっています。
現代のワークロードの多様性から、単一のアーキテクチャーですべてのワークロードに対応するには困難になっており、アーキテクチャーも多様化しています。必要とするパフォーマンスを達成するには、CPU、GPU、AI、および FPGA アクセラレーターに配置されたスカラー、ベクトル、行列、および空間 (SVMS) アーキテクチャーの組み合わせが求められます。
今日、CPU とアクセラレーター GPU など() 向けのコーディングには、異なる言語、ライブラリー、そしてツールを利用する(GPU などの必要があります。これは、それぞれのハードウェア・プラットフォームは個別のソフトウェア資産を必要とし、異なるターゲット・アーキテクチャー全体ではアプリケーション・コードの再利用が制限されることを意味します。
oneAPI プログラミング・モデルは、SYCL* と呼ばれるプログラミング言語と最新の C++ 機能を使用して並列処理を表現することにより、CPU とアクセラレーターのプログラミングを簡素化します。SYCL* は、単一のソース言語でホスト (CPU など) とアクセラレーター (GPU など) のコードの再利用を可能にし、実行とメモリーの依存関係を明確にします。SYCL* コード内のマッピング機能により、ハードウェアまたはハードウェア・セットに最適化されたワークロードを実行するためアプリケーションが移行されます。アクセラレーターを使用できないプラットフォームでも、ホストを利用することでデバイスコードの開発とデバッグを簡素化できます。
oneAPI は、既存の C/C++ または Fortran コードで OpenMP* オフロード機能を使用する CPU およびアクセラレーターのプログラミングもサポートします。
CPU と GPU のどちらを使用するか決定する方法の詳細については、CPU と GPU: 両方の最大限に活用する (英語) を参照してください。
oneAPI プログラミング・モデルを理解したら、ソフトウェアの最適化方法については oneAPI GPU 最適化ガイド (PDF) を参照してください。
注
すべてのプログラムにおいて、oneAPI が提供する単一プログラミング・モデルの恩恵を得られるわけではありません。プログラムに適しているかどうかは、設計、実装、およびプログラムで使用する oneAPI プログラミング・モデルを理解する必要があります。
oneapi.com (英語) で oneAPI イニシアチブとプログラミング・モデルの詳細をご覧ください。このサイトでは、oneAPI 仕様、SYCL* 言語ガイドと API リファレンスなど、その他のリソースが提供されます。