マルチアーキテクチャ開発時代の最適解――インテル oneAPI ツールキット 2023活用のヒント

ハードウェア、ソフトウェア、ネットワークなどさまざまな領域ごとの進化の結果、コンピューティング技術の発展は加速度的に進んでいます。一方で、それぞれの領域の進化によって、既存の考え方や概念、開発手法に限界も見えてきました。

これまで特定のCPUに最適化したプログラミングによる個別の開発が中心となってきましたが、昨今のコンピューティングリソースの拡大で、複数のCPU、さらに他のアーキテクチャを意識した開発が必要となっています。

そこで今、開発の考え方として主流になっているのがマルチアーキテクチャに対応した開発手法です。

今回紹介するインテル oneAPI ツールキットは、オープンな標準仕様の1つoneAPIに対応した開発ツールキットで、その最新版であるインテル oneAPI ツールキット 2023 では、最新CPU/GPUへの対応など、注目のアップデートが行われています。

今回の記事では、こうした開発のトレンドの背景をふまえながら、これからのマルチアーキテクチャ開発の有用性、そして、その選択肢として、インテル oneAPI ツールキット 2023のメリットについて紹介します。

時代とともに変わる開発の概念と求められるパフォーマンス

私たちの身の回りを見渡すと、大なり小なりコンピュータが必ず存在している状況となりました。言い換えれば、コンピュータの進化が進むことは、私たちの生活がさらに便利に、そして、豊かになっていくことを意味します。

最近では、ChatGPTをはじめとした言語モデルAIの進化はめざましく、人間が考えるという行為が大きく変わろうとしています。この言語モデルAIの品質を支えるのも、コンピュータ、もっと突き詰めれば、コンピュータに搭載されるGPUなどのアクセラレータです。

コンピュータが誕生した当初は1つのCPUに対して最適化したソフトウェア開発を行うことで、コンピュータを有効活用できましたが、CPU自体やその周辺にさまざまなアクセラレータが登場、さらに扱うデータが、スカラー、ベクトル、行列、空間と多様化し、開発が進んだことで、シングルプロセッサ向けの開発では、求める結果を得ることが難しくなってきました。

そこで今、開発者たちが注目しているのが、マルチアーキテクチャ開発、いわゆるヘテロジニアスシステムをターゲットにした開発手法と開発環境です。

ヘテロジニアスシステムとは

ヘテロジニアスシステムとは、CPUに加え、CPU以外のアーキテクチャ(GPUやFPGA、その他アクセラレータ)まで利用した計算手法全般を意味します。

たとえば、画像処理であれば、画像処理を得意とするGPUを利用することで処理速度、処理能力を向上させることが可能です。

こうした異なる種類と性質のデータ(スカラー、ベクトル、行列、空間)を対象としたアーキテクチャをまとめてSVMSアーキテクチャと呼び、それぞれに最適化されたチップやアクセラレータが存在しています。

つまり、ヘテロジニアスシステムに向けた開発手法と開発環境とは、言い換えれば「SVMSアーキテクチャを意識し、それらに最適化した開発」を意味します。

汎用的な開発環境に向けた標準仕様――oneAPI

SVMSアーキテクチャに最適化された開発環境が整備されれば、SVMSそれぞれの領域の処理能力が向上し、良い結果につながりますが、そう都合良くいくものではありません。

中でも大きな課題となるのが、それぞれのアーキテクチャごとに開発の仕様が異なるため、進化が進むごとに特定のアクセラレータやベンダ依存になってしまうことです。

この課題を解決するために、標準仕様を策定する動きが出ています。それが、世界最大の処理装置・半導体メーカであるIntel(インテル)が中心となって進めているオープンな標準仕様「oneAPI」です。

oneAPIは、ヘテロジニアスシステムを対象としたソフトウェア開発のためのマルチアーキテクチャプログラミングモデルで、IntelのCPUやアクセラレータ以外に、AMD CPU/GPU、Nvidia、Arm、Huawei Ascend AIチップなど、ワールドワイドで利用されている各種アーキテクチャとの互換性を持った実装環境の提供を目的としており、oneAPI業界イニシアチブという形で、マルチアーキテクチャ開発のエコシステムが今、まさに成長、進化している最中です。

図1 oneAPIで実現する標準化
図

インテル oneAPI ツールキットオーバービュー

オープンな仕様であるoneAPIを、開発者たちが手軽に活用するために用意されているのが、インテルが提供する「インテル oneAPI ツールキット」になります。

インテル oneAPI ツールキットは、マルチアーキテクチャプログラミングの実現に向け、ベース・ツールキットをメインに据え、開発用途に合わせたアドオンと組み合わせた4つのタイプが用意されています。

ベース・ツールキット データ並列 C++ コンパイラとパフォーマンスライブラリ
ベース & HPC ツールキット ベース・ツールキット+C/C++、Fortranコンパイラ&MPI開発ツール
ベース & IoT ツールキット ベース・ツールキット+IoT 開発ツール
ベース & レンダリング・ツールキット ベース・ツールキット+レンダリング・ツール
図2 インテル oneAPI ツールキット構成図
図

それではまず、インテル oneAPI ツールキットの特徴について3つの視点から紹介します。

マルチアーキテクチャを念頭に置いた基本概念(SVMSアーキテクチャ展開の開発)

第一に、SVMSアーキテクチャを念頭に置いた開発ツールが準備されていることです。これにより、ベンダ依存から解放されます。また、C、C++ with SYCL、Python、OpenMP、Fortran、MPIなど既存の言語やプログラミングモデルとの互換性を高めており、さまざまな言語スキルを持った開発者たちにとって利便性が高い点が強みです。

とくにオープンで標準ベースであるSYCLの採用により、各種ハードウェアアクセラレータでのプログラミングの生産性を向上させることが可能です。

ダイレクトプログラミングおよびAPIプログラミングのサポート

インテル oneAPI ツールキットは、インテル提供のツールのため、各種インテルプロセッサおよび互換プロセッサ、第9世代および第11世代インテルプロセッサ・グラフィックス、インテルIris Xe MAXグラフィックス、インテルArria 10 FPGAおよびインテル Stratix 10 SX FPGAなどを含む多様なハードウェアにわたって、ネイティブコードを完全にサポートする統一された言語とライブラリが提供されています。

中核をなすインテル oneAPI ベース・ツールキットは、ダイレクトプログラミングモデルとAPIベースのプログラミングモデルに対応できる要素で構成されており、開発とパフォーマンス・チューニングを支援する解析およびデバッグツールも備えています。

図3 インテル oneAPI ベース・ツールキット構成要素
図

マルチアーキテクチャ対応だから実現できる、幅広い対象領域~AI、HPC、エッジコンピューティング

基本概念であるSVMSアーキテクチャにより、次のような演算手法が異なる領域をカバーできるのもインテル oneAPI ツールキットの特徴です。

  • HPCやデータセンターを対象とした集約型コンピューティング領域
  • ML/DLによるAIおよびビジュアライゼーション領域
  • 組込みシステムおよびIoTによるエッジコンピューティング領域

たとえば、HPCのような大規模演算において求められる集約型コンピューティング領域から、組込みやIoTなどのエッジコンピューティングのように、まったく異なる処理(およびそれに紐づく計算時間や使用電力)を意識した開発を、1つのツールキット内で提供できるため、開発者は自分たちの得意スキルを活かしながら、開発成果を実現可能となります。

図4 HPCやAI、エッジコンピューティングまで多領域をカバー
図

最新インテル oneAPI ツールキット 2023の新機能紹介

続いて、2022年12月19日に発表された、最新のインテル oneAPI ツールキット 2023のおもな特徴を紹介します。

最新CPU/GPUアーキテクチャおよび機能サポート

対象アーキテクチャに、インテルの最新CPU/GPUおよびそれらの機能サポートが追加されました。具体的には、第4世代インテル Xeon スケーラブルプロセッサおよび高帯域幅メモリを有するインテル Xeon プロセッサマックスシリーズのインテル AMX、インテル データセンター GPUフレックスシリーズ、インテル データセンター GPU マックスシリーズなどです。

マルチアーキテクチャプログラミング対応コンパイラ(SYCLomaticツール)

「インテル oneAPI DPC++/C++ コンパイラ」によるSYCL 2020仕様サポート、⁠インテル oneAPI DPC++ ライブラリ(インテル oneDPL⁠⁠」による標準 C++テンプレートライブラリのSYCLサポート範囲が拡大しました。これにより、マルチアーキテクチャプログラミングにおける移植性と生産性が向上しています。

図5 Nvidia GPU上でのネイティブCUDA(緑)とSYCL(青)の比較。遜色ないパフォーマンスを実現
図

さらに、インテル DPC++ 互換性ツールは、オープンソースのSYCLomaticベースとなりました。この結果、cuBLASやcuDNNといったCUDAライブラリの呼び出しを含むCUDA C/C++のソースコードを、SYCLとoneAPIライブラリの呼び出しを行うコメント付きソースコードへ、短時間で変換できるようになり、ネイティブと互換性の高い標準コードへの移植が容易になりました。

図6 SYCLomaticの利用でCUDAのコードをSYCLのコードへ移植する時間を大幅に短縮
図

パフォーマンスライブラリ、解析ツール、HPC向け最新Fortranコンパイラも

パフォーマンスライブラリに関してもさまざまなアップデートが行われました。⁠インテル oneAPI マス・カーネル・ライブラリ」では、密線形代数演算についてCUDAでの同等のライブラリAPIとの機能互換性が向上し、SYCLおよびC/FortranのOpenMPによるインテルGPU向けオフロードプログラミング対応のインターフェースが実装されています。

その他、インテル VTune プロファイラーのアプリケーションパフォーマンススナップショット機能が拡充、MPIのインバランス問題の特定が可能になるなど、解析ツールが充実しました。

さらにHPC関連で、LLVMベースの新しい「インテル Fortran コンパイラ」は、Fortran 2003、Fortran 2008およびFortran 2018のすべての機能と、OpenMP 5.x機能に対応しました。Co-Arrayの使用により、プログラム内で外部APIを使用せずにマルチプロセスとクラスタ向けの並列化が行えます。

Visual Studioへも順次対応

Windows OSを使う開発者の多くが利用する汎用IDE、Visual Studio(VS)への対応も進んでいます。2023では、VS 2022 17.4.2/VS 2019 16.11.21をサポートしています。

詳しくは対応一覧ページをご覧ください。

インテル oneAPI ツールキットの活用で、多領域の開発パフォーマンス向上を

以上、これからの主流となるマルチアーキテクチャプログラミングを支える「インテル oneAPI ツールキット⁠⁠、その最新版である「インテル oneAPI ツールキット 2023」について取り上げました。

コンピューティングを土台とするビジネスにおいて、これからは、進化スピードが早く、また多様化したアクセラレータに最適化した開発が主流になっていくのは間違いありません。

そこで、マルチアーキテクチャプログラミングを効率的に実現し、高いパフォーマンスを得るためには、今回紹介したように標準仕様に対応したツールを活用していくことが、生産性やパフォーマンスの向上につながり、ビジネスの成功に直結します。

ご興味を持った方は、ぜひ標準仕様に対応した「インテル oneAPI ツールキット」を適材適所で活用し、ご自身の開発体験とアウトプットの品質向上を実現してください。

なお、⁠インテル oneAPI ツールキット」は以下のURLからダウンロード申請すると、14日間の日本語サポートが受けられます。まずは実際に試用されることをおすすめします(※2023年3月17日変更⁠⁠。

インテル ソフトウェア開発製品ダウンロード

おすすめ記事

記事・ニュース一覧