前回の記事(AI/HPCにはなぜ複数種のプロセッサーが必要なのか。カギとなる次世代Xeonスケーラブル・プロセッサーの新機能とは?)では、インテルのXPU(x Processor Unit、複数種類のプロセッサー)戦略に基づいて提供されている、主要なAI/HPC向けのプロセッサーに関して説明した。インテルはCPUのXeonスケーラブル・プロセッサー(Xeon SP)、GPUのPonte Vecchio、AI学習アクセラレータのGaudi/Gaudi2、さらにはFPGAといった複数の種類の異なるプロセッサーを提供しており、多種多様なAI/HPC向け市場において、それぞれのニーズに適した製品を提供している。
そうしたXPU戦略をソフトウェア側から支えるのが、インテルが提唱するオープンアーキテクチャーでクロスプラットフォームのプログラミングモデル「oneAPI」(ワンエーピーアイ)だ。oneAPIは、それぞれのプロセッサー種類に適したプログラミングモデルとミドルウェアを備えており、開発者は1つのプログラミングモデルを学ぶだけで、CPUも、GPUも、FPGAも、そして最終的にはアクセラレーターも含めてカバーすることが可能になる。
オープンアーキテクチャーへシフトするインテル、その象徴がoneAPI
インテルは2018年12月、重要な発表を同社共同創業者である故ロバート・ノイス氏の旧宅で行なった。その発表が「oneAPI」だ。
インテルは、さまざまな種類のプロセッサー(XPU)を用意し、それを異種混合で利用できる環境を用意する。そういった複数の環境を意識せずに利用できるのがoneAPIというプログラミングモデルであり、どんな種類のプロセッサーでも、開発者が1つのプログラミングモデルを学ぶだけ使えるようになる環境の構築を目指すと発表したのだ。
インテルによるXPU戦略とoneAPIの発表は、プロプライエタリなx86一本足打法から、オープンアーキテクチャー路線への転換を意味する。
従来のプログラミングモデルでは、各プロセッサーベンダーが定義する命令セットアーキテクチャー(ISA)、あるいは特定のベンダーの製品にしか使えないプログラミングモデルになってしまい、一度そのプロセッサーを使うと決めると、ほかのプロセッサーにはなかなか移行できないという「ベンダーロックイン」が発生してしまっていた。
それに対して、oneAPIの考え方は実にユニークだ。インテルアクセラレーテッド・コンピューティング・システムズ&グラフィックス事業本部スーパーコンピュート事業部マーケティングマネージャーのブライアン・ゴーレンビワフスキー氏は、「oneAPIはオープンアーキテクチャーのプログラミングモデルであり、インテル製品以外のプラットフォームをサポートしている」点が最大の特徴だと指摘する。
つまり、ベンダーロックインが起きないように、他社製品もカバーできる設計になっているというのだ。実際、oneAPIはオープンソースになっており、開発向けのドキュメントやソースコードなどはGitHubで公開されているので、他のハードウェアベンダーがoneAPIを自社製品向けに利用することも可能になっている。
現代のAI/HPC環境では、CPU、GPU、FPGA、アクセラレータなどの複数のプロセッサーを同時に走らせて最大限の結果を求めるような処理が一般的だが、実際のところ、CPU向けのプログラム、GPU向けのプログラム、FPGA向けのプログラムなどはそれぞれ別の開発環境が用意されており、開発者はそれぞれ別のプログラミングモデルを学んで、プログラムのコードを書く必要がある。
言うまでもないことだが、新しいプログラミングモデルを学ぶのには時間がかかり、それぞれ別々の開発環境を勉強するとなると、その分だけ増えていくことになる。しかし、oneAPIに準拠したコードを書けば、CPUやGPUなどの違いが分からなくても、その対応はoneAPIがやってくれるのだ。
なお、oneAPIには、オープンアーキテクチャーでオープンソースとして利用されるoneAPIと、インテルプロセッサー向けの開発環境としてインテルから提供されるインテル版oneAPIがある。競合他社のプロセッサーも含めてオープンソースで開発する場合には前者を、インテルのプロセッサーをメインターゲットに開発し、かつインテルからサポートを受けたい場合には後者を選択する形になる。
基本ライブラリ群だけでなく、領域に特化したツールキットも提供
oneAPIの構造は上記の図のようになっている。ハードウェアのすぐ上層に、PythonやC/C++、SYCLなどのプログラミング言語があり、その上にoneMKL、oneDNNなどの基本ライブラリ群がある。そしてその上に、アプリケーションの種類別になっている「oneAPIツールキット」が用意される。
プログラミング言語としては、現在一般的に使われているPythonやC/C++、SYCLなどを利用できる。例えば、C++をベースにしたアクセラレータ向けプログラミング言語であるSYCLには、「oneAPI SYCLコンパイラーー」と呼ばれるコンパイラーが提供されており、1つのソースコードからCPU、GPU、FPGAに対応したバイナリを生成可能だ。
インテルはoneAPIの最新版などで、CPUとGPUのクロスアーキテクチャーに対応できるC++/SYCL/Fortran共通のコンパイラーなどを提供するなど、複数プロセッサーに対応できる言語の拡張を続けている。
またoneAPIツールキットは、いわゆる領域に特化したツールキットになっており、例えばHPC向けには「インテル oneAPI HPCツールキット」、AI学習向けには「インテル oneAPI AI/分析ツールキット」、AI推論向けには「インテルディストリビューションのOpenVINOツールキット」などを提供している。開発者がそれぞれドメインに適したツールキットを利用することで、oneAPI上でのアプリケーション開発を容易にしているのだ。
例えば、インテル oneAPI AI/分析ツールキットでは、ディープラーニングやマシンラーニングを活用したAIアプリケーションを、oneAPIを活用してプログラムするためのツールが提供されている。TensorFlowやPyTorchなどのディープラーニングフレームワークを活用してインテルのCPUやGPUに最適化するツールなどが用意されており、それらを利用することで、AI推論や学習向けのアプリケーションソフトウェアを構築しやすくなっている。
富岳のAI学習でoneDNNを活用
oneAPIだが、既に述べた通り、オープンアーキテクチャーであることが最大の特徴になっている。ソースコードや開発文章などはGitHubで公開されており、開発者がそれを利用し、自社のハードウェアに最適化して利用することなども可能だ。
インテルゴーレンビワフスキー氏によれば、理化学研究所の富岳に採用されている富士通製Armプロセッサーへの最適化は、oneDNNを利用して行なわれている。それにより2倍のパフォーマンスアップがあったという。
そうしたことができるのも、oneDNNを含むoneAPIのソースコードが公開されているからだ。インテルによれば、Arm版のoneDNNには、富士通が開発したソースコードがインテル版oneAPIの主要ブランチにも取り込まれており、今やインテルの顧客が利用できるほどに発展しているという。
同様の事例は、x86 CPUやGPUにもある。SYCLを利用している場合に、CUDAソースコードを利用してSYCLのソースコードの90%近くを自動的に変換することが既に可能で、それによりプログラマは、既存のコード資産をそのまま活用して、oneAPI向けのコードを簡単に作成できる。
さらに言えば、富士通がやってみせたように、oneAPIにコードを取り込んだ後、競合他社のCPU、GPUを利用するアプリケーションさえもoneAPIで作成できるようになる。
ソフトウェアのoneAPI、ハードウェアのXPUを両輪で回していくことでデータセンター全体の性能を上げていく
インテルは2018年末にXPU戦略、oneAPIの構想を発表して以来、着々とハードウェアとソフトウェアの開発を続けてきて、今まさにそれが花開こうとしている段階に近づいている。
インテルが5月にテキサス州ダラスで開催した「インテル Vision 2022」において、次世代Xeonスケーラブル・プロセッサーとなるSapphire Rapids(開発コード名)、Ponte Vecchio(同)、Gaudi2などのデモを展示会場で行なった。
Sapphire Rapidsのデモでは、新たに用意されるパッケージ内にHBM2eメモリを搭載したバージョンと競合他社のCPUとの比較のデモが行なわれ、CFD(Computational Fluid Dynamics、数値流体力学)のOpenFOAMを利用したオートバイの風洞実験シミュレーションで約2.8倍の性能を示した。
また、マシンラーニングの業界標準ベンチマークMLPerfのClimate Segmentationでは、Sapphire Rapidsで新たに用意される新命令セットAMXに対応した場合、競合他社のCPUに対して約3倍、競合他社のGPUに対しても約1.3倍というスコアが示されていた。同じようにPonte Vecchioの性能では、金融サービス(Binomialモデル 16M)を利用してのベンチマークで競合他社のGPUに対して約2.6倍となるデータが公表されていた。
今、インテルのデータセンター向けソリューションには、CPUだけでなく、GPU、FPGA、そしてアクセラレータなど、さまざまな選択肢が用意されている。
そしてoneAPIを利用することで、インテル XPUだけでなく、富士通の富岳の事例のように、競合他社のアーキテクチャーのCPUまでもoneAPIを利用することが可能になりつつある。このようなオープン性がXPU+oneAPIの最大の魅力となっているのだ。
コメント