インテルから「oneAPI」登場。アプリケーション起動時にCPU/GPU/FPGA構成を自動判別、処理を適切なプロセッサに割り振る[PR]
コンピュータが持つ能力を最大限に引き出して高速な処理を実現することは、ビッグデータや機械学習などの処理が広がりつつある中で重要性が高まっています。
例えば、最新のコンピュータであればマルチコアやキャッシュメモリを最大限使えるようにするだけでなく、メインメモリやOptaneメモリのような不揮発性メモリへのデータ配置なども最適化の対象となっています。
さらにコンピュータの能力はつねに新しい技術を取り入れて前進しています。インテルを例にとれば、大手FPGAベンダのアルテラを買収することによるFPGAへの進出、単体GPUへの取り組みなど、プロセッサのマルチアーキテクチャ化によるさらなる性能向上を実現しようとしています。
そうなると、これからのソフトウェアはCPUだけでなく、GPUやFPGAといったさまざまなプロセッサに対して最適化され、その能力を適切に使いこなすことが求められるようになるでしょう。
再コンパイルしなくとも、さまざまなプロセッサの能力を引き出せるように
インテルはこうした複数の種類のプロセッサを最大限に生かすソフトウェアの実現に向けた「oneAPI」と呼ばれるイニシアチブを推進しています。
oneAPIが実現しようとしているのは、ワークロードの内容によって、GPUが得意な処理はGPUへ、FPGAが得意な処理はFPGAへと、適切なプロセッサに処理が振り分けられるようになるというものです。
これによりアプリケーションは、つねにその実行環境を構成するプロセッサの能力を最大限に引き出せるものとなります。
しかもそれは特定の環境に固定されるのではなく、アプリケーション起動時に利用可能なプロセッサの状態を読み取り、CPUだけであればCPUだけで実行され、CPUとGPUがあれば適切な処理をGPUにオフロードし、FPGAがあればさらに適切な処理をFPGAにもオフロードするという、どんな環境であっても再コンパイルなしに、同一バイナリのままでさまざまなプロセッサに柔軟に対応できるソフトウェアとなるのです。
これはすなわち、将来さらに能力の高いプロセッサが登場したときでも、同一バイナリのままでその新たなプロセッサの能力を得られることにもつながります。
こうしたoneAPIのイニシアチブはすでにMicrosoft Azure、Google Cloud、Alibaba Cloud、SUSE、SAP、TensorFlowなどさまざまな組織からも支援を受け、サポート対応やライブラリなどによるエコシステムが構成されているのです。
C++の生産性とデータ並列処理などを実現する「DPC++」
このoneAPIの取り組みを実際のソフトウェア開発ツールとしてインテルが構成し提供する製品が「インテル oneAPIツールキット」です。製品としては「Parallel Studio XE」の後継にあたります。
oneAPIツールキットで新たに追加され、oneAPIイニシアチブの目的を実現する上でも大きな役割を果たしているのが、プログラミング言語「データ並列C++」(DPC++)です。
DPC++は「ISO C++」と、OpenGLなどの標準規格を策定する団体The Khronosグループの「Khronos SYCL*」をベースにしています。これによりC++の生産性と利点を提供しつつ、データ並列処理と、oneAPIの特徴であるCPUやGPU、FPGAなど異種混在のプロセッサに対応するのです。
そのうえでDPC++はLLVMベースのコンパイラを搭載しており、これが起動時にプロセッサを判別してワークロードを振り分ける仕組みを支えています。
そのうえでoneAPIツールキットでは各プラットフォーム向けに最高の性能が得られるように事前最適化された「oneAPIマス・カーネルライブラリー」や「oneAPIディープ・ニューラル・ネットワーク・ライブラリー」「oneAPIビデオ・プロセシング・ライブラリー」「oneAPIデータ・アナリティクス・ライブラリー」など、さまざまな処理用途別のライブラリ、さらにTensorFlowやPyTorchなど機械学習用のライブラリなども整備されています。
すでにCUDA(NVIDIAが提供している並列プログラミングツール)で記述されているソースコードをDPC++へ移行支援するための互換性ツールも用意されています。
これにより通常はコードの約80%から90%は自動的にDPC++へ移行できるため、移行作業の効率化がはかれます。
VTuneプロファイラーやAdvisorによるパフォーマンスチューニング支援
oneAPIツールキットでも、ソースコードの中から実行に時間がかかっている部分などを解析する「VTuneプロファイラー」、コードの最適化に関するアドバイスをしてくれる「Avisor」が用意され、これらもDPC++に対応します。
VTuneプロファイラーでは、CPU/GPU/FPGA/スレッド/メモリ/キャッシュ/ストレージの詳細な稼働状況を観察できるようになっており、どこがボトルネックとなっているのかを把握し、ソースコードのチューニングに役立てることができます。
Advisorでは、ベクトル化やスレッド化のためにコードをどう記述するべきかのアドバイスに加えて、CPUで行っていた処理をGPUなどにオフロードさせるとどのくらい性能が向上するのかを推定してくれる「オフロード・アドバイザー」も備えています。
CPU、GPU、FPGAとoneAPIを試せる「DevCloud」
ここで紹介した「oneAPIツールキット」と、インテルのCPU、GPU、FPGAによるワークロード実行環境をすぐに試せる「インテルDevCloud」が公開されています。これによりoneAPIイニシアチブが目指すところ、そしてoneAPIツールキットの機能を試すことができるでしょう。
そして詳しい製品情報などは、ぜひエクセルソフトの「インテル oneAPI 2021」の製品ページをご覧ください。
(本記事はエクセルソフト提供のタイアップ記事です)
あわせて読みたい
Facebook、リアルタイムにデータをグラフ化する「Visdom」、オープンソースとして公開
≪前の記事
Amazon、アレクサのウェイクワードや声、機能などカスタマイズできる「Alexa Custom Assistant」発表