Intelは10月4日、「インテル デベロッパー・カンファレンス/ソリューション・デイ 2019」を開催した。定員700人の会場であるが、満員の盛況であった。

  • インテル

    インテル デベロッパー・カンファレンス/ソリューション・デイ 2019の会場。満員の盛況であった

Intelは、汎用CPU、プログラマブルなデータ並列アクセラレータ(GPU)、FPGA、ドメインで最適化されたアクセラレータ(ニューラルネットワークプロセサ)といった各種のプロセサ製品を持っている。

データセンタとして要求される高い性能と柔軟なオプションを提供するためには必要な品揃えであるが、性格の違うこれらの4種のプロセサに対して異なる言語やツールを使ってソフトウェアを開発することは開発エンジニアの負担が大きい。そこで考えられたのが「oneAPIプロジェクト」である。

このoneAPIプロジェクトについて、インテルのシニア・プロダクト・マーケティング・エンジニアのMike Lee氏が説明を行った。

  • インテル

    oneAPIについて講演するIntelのMike Lee氏

Intelは、汎用CPU、GPU(現在の統合型GPU、あるいは開発中のXeグラフィックス)、FPGA、ニューラルネット用のアクセラレータ(Nervana)という4種のプロセサを持っている。

しかし、これらのプロセサの開発環境は異なっており、それらに習熟するのは開発エンジニアの負担が大きいし、同じ機能のプログラムをプラットフォームごとに開発するのは多額の開発費を必要とする。

  • Intel

    Intelは、CPU、GPU、FPGA、ニューラルネットアクセラレータといった4種のプロセサを持つ。これらのソフトウェア開発環境は異なっており、開発を行うエンジニアの負担が大きい (出典:このレポートのすべての図はIntelのMike Lee氏の講演スライドを撮影したものである)

oneAPIプロジェクトはIntel oneAPI言語と最適化されたライブラリで並列処理を表現し、その上に最適化されたミドルウェアやフレームワークを載せる。さらに、その上に最適化されたアプリケーションが載るという構造で実現される。なお、oneAPIツールは共通で動作する。

そして、oneAPIはCPU、GPU、FPGA、AIプロセサをサポートし、業界標準およびオープン仕様ベースで作られる。そして、OpenMPやMPIなどとの相互運用性を維持するので既存のHPC環境との接続も可能である。

  • Intel

    インテルのoneAPIプロジェクトは、異なるアーキテクチャのプロセサも統一されたAPIでプログラムできるようにして、開発を容易にする

oneAPI製品は、データ並列C++で直接記述するやり方とoneAPIライブラリを使って記述するというやり方がある。oneAPIライブラリの組み合わせで実現できれば開発は容易であるが、それでは機能が足りない場合にはデータ並列C++で記述することになる。どちらの方法で作っても、1つのソースからCPU、GPU、AI、FPGA用のコードを生成することができる。

  • Intel

    データ並列C++を使って記述するという方法と、既存のoneAPIライブラリの組み合わせで記述するという方法がある。解析やデバグ用のツールは共通である

データ並列C++は標準ベースのクロスアーキテクチャ言語である。データ並列C++では使い慣れたC++と同じ構文が使えるので、C++での記述と同等の生産性が得られる。そして、OpenGLやOpenCLを開発したKhronos GroupのSYCLを組み込むことでデータ並列処理とヘテロジニアスプログラミングを行うことができるようになっている。

コンパイラの実装としては標準的に使われているClangとLLVMを使っている。

  • Intel

    データ並列C++は新開発のクロスアーキテクチャ言語であるが、使い慣れたC++構文で記述できる。Khronos GroupのSYCLでヘテロジニアスプログラミングをサポートしている

IntelのMath Kernel Library(MKL)は高性能ライブラリとして知られており、この性能、品質をCPUだけでなく、GPU、AI、FPGAプロセサのライブラリについても実現していく。そして、MKLだけではなく、新しい用途であるディープニューラルネットワーク向けのMKL-DNNやデータアナリティック向けのIntel DAALライブラリも開発していく。

  • Intel

    定評のあるIntelのMKLに加えてIntel TBB、MKL-DNN、Intel DAALなどをCPU以外のプロセサにも開発していく

そして、現製品で高い評価を得ているIntel VTuneやIntel AdvisorはGPU、FPGA、AIをサポートするように拡張して行く。

  • Intel

    Intel VTune、Advisorなどの解析やデバグツールもCPU以外のプロセサのサポートを追加していく

まとめであるが、データセントリックなコンピューティングには、CPUだけでなく、GPU、FPGA、AIプロセサなどが必要となる。IntelのoneAPIはCPUと各種のアクセラレータのプログラミングを統一し、開発者の生産性を高めると同時に、妥協のない性能も提供する。

また、oneAPIは業界標準規格およびオープン仕様ベースで他社の協力を得てエコシステムを確立していく。そして、oneAPIは既存のHPCツールと相互運用を可能とする造りとして行くという。

なお会場では、2019年11月にベータ版のoneAPIが公開されることが発表された。

  • Intel

    oneAPIは、CPU、GPU、FPGA、AIプロセサのプログラミング環境を統一して、開発を簡単にすると同時に妥協のないパフォーマンスを提供する。業界標準、オープン仕様ベースで他社と協力して開発を進める

1つのソースからCPU、GPU、FPGA、AIといったアーキテクチャが大きく異なるプロセサ用のアプリケーションを自動(あるいはAdvisorを使って半自動)で作るというIntelのoneAPIプロジェクトは、大きな挑戦である。これが成功すれば、マルチアーキテクチャのプロセサ群を使ったシステムのプログラム開発が容易になり、大きなメリットが得られる。

しかし、マルチアーキテクチャのアプリケーションが自動で作れるかどうかは、正直言って分からない。自動でできたとしても妥協のない性能が得られなければ、そのアーキテクチャに合ったアルゴリズムに作り替える必要が出ることも起こる。そうなると、oneAPIにしても開発工数はあまり減らないかもしれない。

NVIDIAのJensen Huang CEOは、NVIDIAのQ2の決算発表の席で、マルチコア化、マルチGPU化は大変な作業で、プログラミングはPowerPointスライドを作るほど簡単ではないとoneAPIを皮肉っている。