SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

開発生産性向上に寄与するツール大研究(AD)

インテルが新たに進める「oneAPI」とは? 多様化するアーキテクチャで最大限のパフォーマンスを発揮

  • このエントリーをはてなブックマークに追加

 今や多くの企業が取り組んでいるデジタルトランスフォーメーション(DX)。この言葉が表しているように、ビジネスの世界ではAIを活用したデータドリブン経営が主流になりつつある。つまり膨大なデータをいかに収集、分析し、ビジネスに生かしていけるかが、企業が成長するカギを握るようになっている。このように、よりデータ中心のワークロードは多様化しており、それに伴いデータを処理するコンピューティング・アーキテクチャも多様化している。そんな多様化するアーキテクチャにおいて、最大限のパフォーマンスを引き出すことを容易にするソフトウェアソリューションがインテルから登場した。それが「oneAPI」ツールキットだ。

  • このエントリーをはてなブックマークに追加

さまざまな課題をオールインワンで解決! インテルが進める「oneAPI」とは

 現在、企業は日々、生み出された大量のデータを蓄積している。そのデータをビジネス価値につなげていくには、AIの活用が不可欠になる。大手半導体メーカーのインテルでは、AIとデータ分析のワークロードに焦点を合わせ、ハードウェアおよびソフトウェア、エコシステムの提供を行っている。

 そんなインテルが進めているのが「oneAPI」プロジェクトだ。昨今、AI関連の処理はもちろん、ゲームやシミュレーションでも高度な処理が求められている。例えばシミュレーションも従来であれば、CPUの中で処理していたが、今はGPUやFPGAを使う方が有効だという方向にシフトしてきている。このようなデータ処理のワークロードは多様性に富んでおり、「CPUだけ」という単一のアーキテクチャではすべてのワークロードに対応するのは困難になっている。

 そこでCPU、GPU、FPGAなどに配置されたスカラー、ベクトル、行列、および空間というSVMSアーキテクチャの組み合わせに対応し、それらのアーキテクチャのパフォーマンスを最大限引き出すソフトウェアが求められるが、現在は各アーキテクチャに向けた個別のプログラミング・モデルとツールチェーンが必要になっている。これらアーキテクチャ向けプログラミングの課題を解決するのが、「oneAPI」である。

oneAPI
oneAPI

 oneAPIは複数のアーキテクチャ向けソフトウェア開発を容易にし、かつ最適なハードウェアを自由に選択できるクロスアーキテクチャ・プログラミング・モデルである。「1つの開発ツールからいろんなソリューションを展開するという意味がこの名前には込められている」と、インテルの開発用ソフトウェアの正規代理店として、国内での販売を展開しているエクセルソフト株式会社の黒澤一平氏は語る。

 oneAPIの特徴はそれだけではない。業界標準とオープンな仕様に基づいており、複数のアーキテクチャとベンダーでコードを再利用することも可能だ。もちろん最新のハードウェアの最先端のパフォーマンス機能を活用できる。

効率的なソフトウェア開発を支援するツールキット

 oneAPIでは効率的なソフトウェア開発を可能にするため、さまざまなツールキットを用意している。「oneAPIベース・ツールキット」はインテルのCPU、GPU、FPGA でハイパフォーマンスなアプリケーションを開発するための基本ツールとライブラリーの基本セットであり、対象は「さまざまな業界の開発者」だそうだ。

 これをベースにドメイン固有のアドオンツールキットとして、「oneAPI HPCツールキット」「oneAPI IoTツールキット」「oneAPI レンダリングツールキット」を用意。さらに、AI補助ツールとして、「AIアナリティクス・ツールキット」、エッジからクラウドまでハイパフォーマンス推論とアプリケーションをデプロイするための「OpenVINO ツールキット」などを提供している。

 これらのツールキットは従来、インテルが提供していた「Parallel Studio XE」の後継である。最大の違いは、「これまでの製品は主な開発対象がCPU向けで、今回はGPU、FPGAやその他のアクセラレターに対応している点」と黒澤氏は語る。つまり、oneAPIツールキットでは、実行できる状態のものをユーザーに作ってもらえるようにするため、コンパイラーを提供している。それが「データ並列C++(DPC++)/C++コンパイラー」だ。

データ並列C++(DPC++)/C++コンパイラー
データ並列C++(DPC++)/C++コンパイラー

 インテルでは、Fortran向けにもコンパイラーを開発しているが、製品化はされていないとのこと。このDPC++は、LLVMというJavaのような中間形式のバイナリーを生成することで、実行時に搭載されているCPUやGPUなどを判定し、ハードウェアを最大限利用できるよう並列プログラミングの生産性とパフォーマンスを提供する。

 また、DPC++は従来までのC++言語に加え、クロノスグループが作成したSYCL形式のC++をサポートしている。「今までのコンパイラーでも動くのはもちろん、最適化してSYCLの機能を追加して使うこともできる。これまでの資産を有効活用できるようになっている」と黒澤氏は言う。

GPUに対応した強力なライブラリー群や便利なツール群

 oneAPIベース・ツールキットには強力なライブラリー群が用意されており、その中にはGPUに対応したものも含まれている。例えば「oneAPIマス・カーネル・ライブラリー(oneMKL)」は、行列の演算やフーリエ変換などに対応する数値演算ライブラリーだ。

 今まで使っているものを再リンクするだけで、CPUとGPUに自動的に仕事を振り分けてくれるため、おおむね最高の結果が得られるようになっている。

 その他にもユニークなツールとして黒澤氏が挙げたのが、「VTune プロファイラー」と「Advisor」だ。VTune プロファイラーは作業を効率化するツールで、DPC++で作られたプログラムの解析に対応する。「CPUとGPUの処理の割合を測定してくれるほか、どこが遅くなっているのかなども自動的に検出してくれる。単純に走らせるだけで、問題点を発見してくれるので非常に便利」(黒澤氏)

VTune プロファイラー
VTune プロファイラー

 一方のAdvisorは、「これから開発する人向け」と黒澤氏は言う。今までCPUで動かしていたものをGPUで変換させた場合、どのくらい早くなるのかなどを予測してアドバイスしてくれる。例えばプログラムの中にはCPUで処理が完結しているが、GPUの方に処理を出した方が速くなるものも存在する。Advisorはそのようなプログラムを自動的に解析し、「このプログラムはCPUではなく、GPUでやると5割ぐらい早くなる」ということを、人がテストで書くことなくツールを走らせるだけで、情報を得ることができるようになる。「DPC++はこれからの技術なので、その不安を拭い去るような機能が準備されている」(黒澤氏)

Advisor
Advisor

 このようなツールで構成される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++コードに転換できるのだ。

DPC++ 互換性ツールでコードの移行時間を最小化
DPC++ 互換性ツールでコードの移行時間を最小化

海外の大学機関など、さまざまな開発現場で活用が進む「oneAPI」

 すでにoneAPIはさまざまな開発現場で活用が進んでいる。例えば露ロバチェフスキー州立大学では、大規模なシミュレーション処理向けのCPUやGPU、FPGAに対応したアプリケーション開発に活用。米イリノイ大学では、COVID-19のシミュレーションに活用したり、ハイデルベルグ大学ではCPUやGPU、FPGAに対応したアプリケーションをDPC++で開発してサーバで運用しているという。「インテルのリーズナブルなGPUでも、十分な性能を達成しているという報告は聞こえてきている」(黒澤氏)

 そのため、開発者の関心も非常に高く、黒澤氏によると問い合わせはひっきりなしにきているという。ここまでの話を聞いて、ぜひoneAPIツールキットを試してみたいと思う人もいるだろう。そういう人向けにインテルでは、「DevCloud」という開発サンドボックスを用意している。

DevCloud
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日 (木) [開催方法] オンライン、無料

 詳細、参加申込はこちら

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13445 2021/01/28 12:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング