GPUに対応した強力なライブラリー群や便利なツール群
oneAPIベース・ツールキットには強力なライブラリー群が用意されており、その中にはGPUに対応したものも含まれている。例えば「oneAPIマス・カーネル・ライブラリー(oneMKL)」は、行列の演算やフーリエ変換などに対応する数値演算ライブラリーだ。
今まで使っているものを再リンクするだけで、CPUとGPUに自動的に仕事を振り分けてくれるため、おおむね最高の結果が得られるようになっている。
その他にもユニークなツールとして黒澤氏が挙げたのが、「VTune プロファイラー」と「Advisor」だ。VTune プロファイラーは作業を効率化するツールで、DPC++で作られたプログラムの解析に対応する。「CPUとGPUの処理の割合を測定してくれるほか、どこが遅くなっているのかなども自動的に検出してくれる。単純に走らせるだけで、問題点を発見してくれるので非常に便利」(黒澤氏)
一方のAdvisorは、「これから開発する人向け」と黒澤氏は言う。今までCPUで動かしていたものをGPUで変換させた場合、どのくらい早くなるのかなどを予測してアドバイスしてくれる。例えばプログラムの中にはCPUで処理が完結しているが、GPUの方に処理を出した方が速くなるものも存在する。Advisorはそのようなプログラムを自動的に解析し、「このプログラムはCPUではなく、GPUでやると5割ぐらい早くなる」ということを、人がテストで書くことなくツールを走らせるだけで、情報を得ることができるようになる。「DPC++はこれからの技術なので、その不安を拭い去るような機能が準備されている」(黒澤氏)
このようなツールで構成されるoneAPIの強みは、これからのデータ中心のワークロードに合ったハードウェア活用ができるようになるだけではない。先述した世に「従来までの資産を生かせる」ことも強みだと言える。新しい研究やより早く計算させたいというニーズに合わせて、既存のものからスタートすることもできる。もちろん新たなCPUやGPUのためのソフトウェアを作る場合は、最初からDPC++に対応したアプリケーションを開発できるというわけだ。
NVIDIA GPUやAMD GPUもサポート、コードの80~90%を自動的に移行できる
oneAPIはインテルの製品だけを対象にしたプロジェクトというわけではない。例えばDPC++はオープンソースとして提供されており、昨今、さまざまなところで採用されているNVIDIA GPUにoneAPIが対応できるようColdPlayがサポートを発表。さらに、独ハイデルベルグ大学がoneAPIでAMD GPUをサポートすると発表している。「将来的にはこれらの機能をまとめたものを作り上げるのか、また並行して開発していくのかはわからないが、オープンソース版が存在していることが、この技術をさらに成長させてくれるはず」と黒澤氏は語る。
さらにNVIDIA GPUの開発者にとってうれしいのが、CUDAで記述されているコードをDPC++に移行するための互換性ツールが提供されていることだ。このツールで処理すると、コードの80~90%を自動的に移行できるようになるという。互換性ツールを使えば、若干の調整をするだけで、これまでのCUDAのソースコードをDPC++コードに転換できるのだ。
海外の大学機関など、さまざまな開発現場で活用が進む「oneAPI」
すでにoneAPIはさまざまな開発現場で活用が進んでいる。例えば露ロバチェフスキー州立大学では、大規模なシミュレーション処理向けのCPUやGPU、FPGAに対応したアプリケーション開発に活用。米イリノイ大学では、COVID-19のシミュレーションに活用したり、ハイデルベルグ大学ではCPUやGPU、FPGAに対応したアプリケーションをDPC++で開発してサーバで運用しているという。「インテルのリーズナブルなGPUでも、十分な性能を達成しているという報告は聞こえてきている」(黒澤氏)
そのため、開発者の関心も非常に高く、黒澤氏によると問い合わせはひっきりなしにきているという。ここまでの話を聞いて、ぜひoneAPIツールキットを試してみたいと思う人もいるだろう。そういう人向けにインテルでは、「DevCloud」という開発サンドボックスを用意している。
Parallel Studio XEのように、評価版をダウンロードすることなくインテルのCPUやGPUやFPGAが搭載された、多くのノードのクラウドサービスが利用できる。インテルのホームページで評価版を申し込むことはできるが、エクセルソフトの評価版を申し込むと、製品と全く同じ日本語のサポート付で30日間使用できるそうだ。評価版を使用しているときに何か問題があれば、インテルにエクセルソフトからまとめて報告を挙げてくれる。「最高のハードウェアで実行させることができるので、ぜひ、oneAPIの良さを試して実感してほしい」と黒澤氏は言う。
現在、oneAPIツールキットはC、C++、Fortran、Java、Go、Pythonに対応している。「JavaとGoはそれぞれの実行環境だが、Pythonはインテルが最適化した実行環境が含まれており、インストールするだけでバージョンセットを考えることなく、TensorFlow・PyTorchが利用できるようになっている」と黒澤氏。
インテルでは、AIやレンダリングなどの分野にも広げていき、より多くの開発者に使ってもらえるようなツール展開をしていくという。エクセルソフトでもoneAPIを幅広い開発者に使ってもらえるよう、トレーニングなどを充実させていくそうだ。AIの分析などで新しいハードウェアを検討している方はもちろん、現在、Parallel Studio XEを使っており、より生産性の高いソフトウェア開発を検討している方も、一度oneAPIを試してみてはいかがだろう。
データ並列 C++ (DPC++) プログラミング・セミナー・シリーズ
~ インテル oneAPI によるヘテロジニアス環境への移行方法を紹介 ~
このセミナーでは、インテル oneAPI でダイレクト・プログラミングを実現するためのデータ並列 C++ (DPC++) プログラミング・モデルについて紹介します。 DPC++ の動作の仕組みをはじめ、DPC++ によるプログラミング方法、インテル ライブラリーからインテル oneAPI ライブラリーへの移行方法、ヘテロジニアス環境への移行方法、パフォーマンス・チューニングの取り組み方、そして C および Fortran ユーザー向けのプログラミング方法について説明します。
パート 1:「さあはじめよう!データ並列 C++ の動作の仕組み」
[日時] 1月 26日 (火) ~ 1月 28日 (木) [開催方法] オンライン、無料
パート 2:「さあはじめよう!データ並列 C++ プログラミング」
[日時] 2月 2日 (火) ~ 2月 4日 (木) [開催方法] オンライン、無料