単一ソースコードでメニーコアやGPUやFPGAに対応したクロスアーキテクチャー対応のソフトウェア開発を可能に。インテルの「oneAPI ツールキット 2022」[PR]
今回は「単一ソースコードでメニーコアやGPUやFPGAに対応したクロスアーキテクチャー対応のソフトウェア開発を可能に。インテルの「oneAPI ツールキット 2022」[PR]」についてご紹介します。
関連ワード (価格、用意、製品等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
コンピュータの処理能力を大きく左右するプロセッサの進化は、CPUだけではなくGPUやFPGAなどさまざまなアーキテクチャーにも及んでいます。
特にビッグデータや機械学習のような大規模データ処理のニーズが増してきているなかで、それを高速に処理するための多数のコアや命令群、高速なキャッシュメモリなどを備えたCPU、GPU、FPGAなどの能力を最大限引き出せるかどうかは大変重要です。
その成否がソフトウェアのレスポンス、さらには従量課金制のクラウドのコストなどに大きく関わってくるためです。
しかしながら、ハードウェアの性能を徹底的に引き出すために、特定のプロセッサやアーキテクチャーに依存したアプリケーションを開発してしまうことにも課題があります。
特定のプロセッサやアーキテクチャーに依存したコードは、さらに優れたアーキテクチャーのハードウェアが登場したときに、それらへの移植を難しくしてしまい、将来の性能や効率を改善する機会を失う可能性を高めてしまうのです。
理想は単一のコードで、現在のCPUやGPUやFPGAから将来のプロセッサまで性能を引き出せる、クロスアーキテクチャー対応のソフトウェアを実現できることです。
そしてその理想を実現しようとしているのが、インテルなどが取り組んでいる「oneAPI業界イニシアチブ」です。
oneAPI業界イニシアチブの取り組み
oneAPI業界イニシアチブは、ハードウェアの違いを意識することなくソフトウェアの開発が行えるソフトウェア環境の実現を推進する団体です。
そのためのプログラミング言語やライブラリなどを提供しています。
細かいところまでユーザー自身がプログラミングしたい場合には、「データ並列C++」(DPC++:Data Parallel C++)と呼ばれるC++をベースにしたプログラミング言語が用意されており、効率的な開発を進めたい場合には用途別のライブラリが用意されています。
oneAPI業界イニシアチブは2019年にスタートし、さまざまな企業や団体、学術機関がさまざまなプロセッサやアーキテクチャーへ対応への協力や支援を行っています。
インテル oneAPI ツールキット 2022
このoneAPI業界イニシアチブのソフトウェア群をベースに、インテルのプロセッサやGPUなどのハードウェアの能力を引き出すことに特化したソフトウェアパッケージ製品が「インテル oneAPI ツールキット 2022」です。
インテル oneAPI ツールキット 2022は、「ベース・ツールキット」と、目的別のアドオンとして「HPCツールキット」「IoTツールキット」「AIアナリティクス・ツールキット」「レンダリング・ツールキット」のラインナップが用意されています。
ベース・ツールキットは、DPC++によるダイレクトプログラミングとライブラリによるAPIプログラミングをサポート。パフォーマンスチューニングを行う上で欠かせない解析ツールやデバッグツールも含まれています。
これによりインテルのプロセッサや内蔵GPU、ディスクリートGPU、FPGAなど多様なハードウェアのネイティブコードを完全にサポートします。
ベース・ツールキットの主要な構成要素であるDPC++と、インテルAdvisor、インテルVTuneプロファイラーについて見ていきましょう。
プログラミング言語を学び直すことなく開発可能
DPC++は、標準のC++と、OpenGLなどの標準規格を策定するThe Khronosグループの「Khronos SYCL」をベースに、コミュニティによる拡張が行われたプログラミング言語です。
C++を知っているプログラマであれば新しくプログラミング言語を学び直すことなく、馴染みのある形式でコードを記述しつつハードウェアの性能を最大限に引き出すことが可能となっています。
DPC++では、ホストコードと呼ばれるCPUで実行される部分のコードと、GPUやFPGAのようなアクセラレーターデバイスで実行することを想定したコードを混在して同一のソースコード内に記述できます。
処理がアクセラレーターデバイスでの実行を想定した部分にたどり着くと、GPUやFPGAといった選択したハードウェア上で非同期に処理が行われ、そのあいだホストプログラムは別の処理を実行します。
このハードウェアの選択は開発者が指定できるほか、GPUが使える場合には優先して使うと言った優先度の設定も可能になっているため、実行するマシンのハードウェア構成に適合した実行を行えます。
コードを最適化するためのアドバイザやプロファイラー
ではコードのどの部分をCPU以外のデバイスへオフロードして実行すべきで、それによりどのくらいの速度向上が見込めるのか? これをシミュレーションし、ビジュアルに見せてくれるのが「Advisor」です。
Advisorでは、CPUのマルチコアやキャッシュを最適に使うためのアドバイスや、コードのどの部分をGPUなどにオフロードさせるべきか、その際にどのくらい性能が向上するかの推定もしてくれます。
一方「VTuneプロファイラー」は、コードのどこにチューニングの改善余地があるか、キャッシュへのヒット率の改善から演算内容の改善、処理すべきハードウェアの選択などを実行結果のプロファイルを元に示してくれます。
これらのツールを用いることで、DPC++のコードに関する総合的な最適化がカバーできるわけです。
「インテル oneAPI ツールキット 2022」はほぼ毎年アップデートが継続して行われているoneAPIツールキットの最新版です。
今回の最新バージョンでは最新のインテルデバイスへの対応、Fortranコンパイラの登場、解析ツールの強化により将来のGPUに移行した場合の性能上のメリットを予測するなど、より強力な開発ツールとなっています。
安心して導入できるエクセルソフトの各種サービス
この「インテル oneAPI ツールキット 2022」を日本国内で販売するエクセルソフトは、日本語ドキュメントの提供、セミナーの開催、導入支援など、製品導入に関わるさまざまな施策を実施中です。
これらにより、最新のハードウェア能力を最大限引き出す「インテル oneAPI ツールキット 2022」を安心して導入することができます。
より詳しい製品情報や価格などについてはエクセルソフトの製品公式サイトをご覧ください。
≫インテル oneAPI ツールキット : クロスアーキテクチャー対応の統合プログラミング・モデル | XLsoft エクセルソフト
(本記事はエクセルソフト提供のタイアップ記事です)