インテルは、地球上で最も影響力があり革新的なテクノロジー企業の1つですが、ソフトウェア開発について考えるときに頭に浮かぶ最初の名前ではありません。 40年前、Intelの8088プロセッサはPC革命の開始を支援しました。これをデスクトップまたはラップトップで読んでいる場合は、IntelInsideを使用している可能性があります。同じことが、私たちが毎日依存しているサーバーやその他のさまざまなハードウェアにも当てはまります。 AMDや他のベンダーが競争力のある製品を持っていないというわけではありませんが、Intelは依然としてx86CPU市場を支配しています。
ソフトウェアエンジニアは、インテルのハードウェアプラットフォームを何十年も使用してきましたが、通常、その背後にあるソフトウェアやファームウェアについても考慮していません。より多くの仮想化パフォーマンスが必要な場合は、マルチコア、ハイパースレッドCore i7、またはXeon製品を選択しました。ローカルデータベースをいじくり回すために、彼らはIntelSSDを入手することができます。しかし今、Intelは、開発者にも自社のソフトウェアをもっと使い始めてほしいと望んでいます。
入る oneAPI 、CPU、GPU、FPGA、AIアクセラレータなど、さまざまなハードウェアアーキテクチャ間での開発を簡素化することを目的とした単一の統合プログラミングモデルとしてIntelによって宣伝されています。それらはすべて非常に異なる特性を持ち、さまざまなタイプの操作に優れています。
Intelは現在、「ソフトウェアファースト」戦略に取り組んでおり、開発者が注目することを期待しています。 oneAPIの背後にある壮大なアイデアは、さまざまなハードウェアで1つのプラットフォームを使用できるようにすることです。したがって、開発者は、CPUやGPUのコーディング時に、異なる言語、ツール、ライブラリを使用する必要がありません。 oneAPIを使用すると、ツールボックスとコードベースは両方で同じになります。
これを可能にするために、Intelは開発しました データ並列C ++ (DPC ++)特定のハードウェア(GPUやFFPGAなど)のプログラミングに通常使用されるプロプライエタリ言語のオープンソース代替手段として。この新しいプログラミング言語は、さまざまなハードウェアターゲットに展開するコンパイラを含めながら、C ++の生産性と親しみやすさを提供することになっています。
Data Parallel C ++には、KhronosGroupの SYCL データの並列処理とヘテロジニアスプログラミングをサポートします。インテルは現在、インテルへの無料アクセスを提供しています DevCloud 、ソフトウェアエンジニアがツールを試して、クラウドでoneAPIとDPC ++をいじくり回すことができます。
Excel2016のパワーピボット
しかし、待ってください、それは他のベンダーによって作られたハードウェアで動作しますか?ライセンスについてはどうですか、それは無料ですか?はい、はい:oneAPIはハードウェアにとらわれず、オープンソースになるように設計されており、それは変わりません。
oneAPIの詳細については、インテルのアーキテクチャ、グラフィックス、ソフトウェアグループのバイスプレジデントであり、インテルのテクニカル、エンタープライズ、クラウドコンピューティングのゼネラルマネージャーであるSanjiv M.Shahとその起源と将来について話し合いました。
サンジブ: oneAPIの内容については、4つの部分として考えています。 1つは言語と標準ライブラリ、2つ目はディープラーニングツールのセット、3つ目は実際にはさまざまなアクセラレータを抽象化できるハードウェアアブストラクションレイヤーとソフトウェアドライバーレイヤー、4つ目はドメインに焦点を当てたライブラリのセットです。 、Matlabなどのように。これらはoneAPIの4つのカテゴリですが、oneAPIの9つの要素について詳しく説明することができます。これらの9つの要素は、基本的に、Data Parallel C ++と呼ばれる新しい言語とその標準ライブラリです。
2つの学習ライブラリがあります。1つはニューラルネットワーク用で、もう1つは通信用です。ハードウェア抽象化のためにレベル0と呼んでいるライブラリがあり、4つのドメインに焦点を合わせたライブラリがあります。私たちはこれを非常にオープンな方法で行っています。これらすべての仕様はすでに公開されており、利用可能です。それらをバージョン0.5と呼んでいます。 2020年末までに1.0に移行する予定であり、これらすべてのオープンソース実装もあります。繰り返しますが、私たちの目標は、人々がすでにそこにあるものを活用できるようにすることです。ハードウェアベンダーがこの言語を実装したい場合は、オープンソースのものを使用して実行できます。
Q:アルゴリズムと実装に関して、それはどのように機能しますか?
cvvでクレジットカード番号をハックする
私たちが提供しているのは、アルゴリズムが使用するプリミティブ、つまり基礎となる数学的プリミティブと通信プリミティブです。通常、アルゴリズムの革新はそれよりも高いレベルで行われており、基本的な数学、行列の数学、畳み込みの数学などを実際にやり直すことはありません。それは、その数学を使用する新しい方法とコミュニケーションパターンを使用する新しい方法を考え出すことです。私たちの目標は、他の人がその上で革新できるように、プリミティブであるレベル0を提供することです。
Q:ハードウェアレベルではどのように機能しますか?
ハードウェアプロバイダーの場合、AIマトリックス、たとえばAI ASICを構築している人を取り上げましょう。そのハードウェアベンダーがAIエコシステムを「プラグイン」して活用するには、2つの方法があります。 1つは、レベル0と呼ばれるこの低レベルのハードウェアインターフェイスを提供することです。標準APIを使用してレベル0のバージョンを提供する場合は、必要に応じてオープンソースを活用し、その後、上記のすべてのソフトウェアレイヤーを活用できます。それを自動的に活用できます。
レベルゼロの完全な一般性を提供するために、セグメントに焦点を合わせたASICにとってそれは難しいかもしれません。そのため、その代わりに、ドメインとディープラーニングライブラリにある数学カーネルと通信カーネルを提供することもできます。その後、これらのライブラリを高レベルのフレームワークに「配管」する作業を行います。彼らはそれを自動的に取得します。
Q:現在お持ちのバージョンは0.5に指定されており、完全な仕様は2020年末までに準備が整うはずだとおっしゃいました。
したがって、oneAPIイニシアチブには2つの部分があります。 1つは業界の一部であり、もう1つはインテル製品です。業界仕様は0.5で、年の半ば頃には1.0にしたいと考えています。それと並行して、Intelは一連の製品を構築しており、Intelが構築している製品は現在ベータ版であり、0.5仕様を実装しています。年末までに、1.0製品を手に入れたいと考えています。
インテルの製品は、oneAPIの9つの要素を超えています。これは、提供する基本的なプログラミング要素に加えて、デバッガー、アナライザー、互換性ツールなど、プログラマーが実際に必要とするものを提供して、既存の言語からデータに移行できるようにするためです。並列C ++言語。
Q:開発者が移行するのはどのくらい難しいですか?より広い環境は、彼らが何年も使用してきたものと似ていますか?
はい、それは非常に似ています。 Data Parallel C ++について少し説明します。これは、私たちが行っていることの大きな部分だからです。 DPC ++は3つのものです。これは、ISO国際標準C ++言語に基づいています。 SYCLと呼ばれる標準を定義するKhronosと呼ばれるグループがあり、SYCLはC ++の上に階層化されています。 SYCLを取得し、SYCLの上に拡張機能を追加します。 Data Parallel C ++を構築する方法は、実際には拡張機能を備えたC ++であり、これがSYCLです。
すべてのC ++コンパイラでコンパイルできます。 DPC ++の優れている点は、どのコンパイラでもコンパイルできることです。知識のあるコンパイラだけが、その言語の内容を利用してアクセラレータコードを生成できます。この言語を実行する方法は、非常にオープンに実行しているため、Data Parallel C ++に関するすべての議論はSYCL委員会で行われています。実装はオープンソースであり、すべての拡張機能はすでに公開されています。将来のSYCL標準への優れたグライドパスを確保するために、非常に慎重に取り組んでいます。 5〜10年後を見下ろすと、ISO C ++へのグライドパスもあります。
Q:コンパイラとDPC ++への移行に関して、学習曲線はそれほど問題にはならないはずですか?
はい、もちろん、どこから始めているかによります。 C ++プログラマーの場合、学習曲線は非常に小さくなります。 Cプログラマーの場合、C ++を学ぶというハードルを乗り越える必要がありますが、それだけです。非常に馴染みのあるC ++です。 OpenCLのような言語に慣れているプログラマーにとって、それは非常に似ているはずです。
私が強調しなければならないもう1つの部分は、LLVMインフラストラクチャを使用してオープンソースで作業を行っていることです。すべてのソースはすでに開いています。IntelGitHubリポジトリがあり、言語の実装を確認したり、オープンソースコンパイラをダウンロードしたりすることができます。すべてのインテルツール、ベータ版の製品は、誰でも無料で遊んだりダウンロードしたりできます。また、開発者向けクラウドも利用できます。ユーザーは何もダウンロードしたりインストールしたりする必要がなく、コードを記述して、説明したすべてのツールを使い始めることができます。
Q:C ++はパフォーマンスが高く、比較的単純ですが、古くなり、開発が遅く、利害関係者が多すぎるため、すべてが遅くなっていることは誰もが知っています。これは明らかにDPC ++には当てはまりません。反復と更新がはるかに高速になりますか?
あなたは私たちにとって非常に重要なポイントに到達したと思います。それは、標準によって減速されない急速な進化です。ですから、私たちは標準とオープンに話し合いたいので、標準に入る方法がありますが、それも迅速に行いたいと思っています。
言語は、アーキテクチャが進化するにつれて、ユーザーと実装者によって共同設計されたときに最もよく機能します。私たちの目標は、物事を実践し、物事を行うための最良の方法を見つけ、それらを標準にするという、非常に高速な反復コード設計です。したがって、絶対に、高速反復は大きな目標です。
Q:私の同僚の何人かによって提起された1つの質問(彼らは大企業から来るものに対するオープン性についていくらか懸念していることをおそらく理解できます):DPC ++は常にすべてのユーザーとベンダーにオープンなままですか?
レスポンシブデザインのための最高のメディアクエリ
絶対に!仕様はクリエイティブコモンズライセンスで行われます。誰でも仕様を使用し、必要に応じてそれを取得してフォークし、進化させることができます。 oneAPIのすべての要素がオープンソースであるとは限らないことを強調したいと思いますが、私たちはほとんどすべての要素をオープンソースにする道を進んでいます。そのすべてが、誰でも手に入れて活用することができます。実装に利用できます。
コードプレイ 英国以外の企業であるは、DPC ++のNvidia実装を発表しました。私たちは、すべてのハードウェアベンダーとソフトウェアベンダーに移植を行うことを強く推奨しています。私たちは、アクセラレータが複数のベンダーに一般的になりつつある業界でユニークな時期にいます。それが歴史の中で起こったとき、プロバイダーが1つしかないときは、その言語が支配的です。ソフトウェア業界は、標準ソリューションと複数のプロバイダーを必要としています。
ここで私たちがやろうとしているのは、約25年前に私たちがやったことです。 OpenMP 、複数の並列言語がありましたが、単一の本当に支配的な言語はありませんでした。そのすべてを取り入れて、25年後の現在の標準に統合しました。 インクルード HPCをプログラムする方法。
Q:DPC ++は、今後数年間で多くの進化を遂げると言うのは正しいでしょうか?テンソルはどうですか、新しいハードウェアはどうですか?
はい、絶対に、あなたは正しいです。登場する新しいハードウェアをサポートするには、言語を進化させる必要があります。それがより速い反復の目標です。私が強調したいもう1つのポイントは、必要に応じてアーキテクチャ固有の拡張機能をプラグインできるように、データ並列C ++を設計していることです。
そのため、複数のアーキテクチャで実行したい標準言語ですが、オーディエンス、非常に重要なオーディエンスが可能な限り最大のパフォーマンスを必要とする場合があることも認識しています。彼らは、必ずしもアーキテクチャに移植可能であるとは限らない非常に低レベルのプログラミングに飛び込みたいと思うかもしれません。アーキテクチャ固有のテンソルなどの拡張機能を使用できるように、拡張機能とメカニズムを構築しています。
Q:開発者は、ハードウェア用に生成されたコードをどの程度制御できますか?システムとさまざまなアクセラレータ間のメモリ管理をどの程度制御できますか?
ドキュメントデータベースは、ドキュメントを次のような論理グループにグループ化します。
SYCLからバッファの概念を借用しています。これにより、ユーザーに非常に明示的なメモリ制御が提供されますが、それに加えて、次の概念も追加されています。 ユニファイドメモリ 。私たちの目標は、メモリを管理するだけでなく、迅速なコードを生成するために、プログラマーが必要とするレベルの制御を可能にすることです。 SYCLに追加する拡張機能には、サブグループ、リダクション、パイプなどがあります。これにより、さまざまなアーキテクチャ用にはるかに優れたコードを生成できます。
Q:興味深い点は、Python用のoneAPIディストリビューションです。IntelはNumPy、SciPy、SciKitLearnを具体的にリストしています。 oneAPIを介してロックを解除できるパフォーマンスの向上と生産性のメリットに興味があります。それに関する指標はありますか?
それは素晴らしい質問です。そのエコシステムをサポートしています。 Pythonがアクセラレータを使用したいのはなぜですか?数学ライブラリ、分析ライブラリからパフォーマンスを引き出すことです。私たちが行っているのは、NumPy、SciPy、SciKit Learnなどを「配管」することです。これにより、その上にあるライブラリを活用して優れたパフォーマンスを得ることができます。 NumPy、SciPy、SciKit Learnなどのデフォルトの実装は、最適化されたネイティブパッケージで適切に実装されたものと比較して、非常に大きなメリットが見られます。 200倍、300倍などのオーダーの増加が見られました。
Pythonでの私たちの目標は、ネイティブコードのパフォーマンスの80%以内で、2倍以内の妥当な割合で取得したいということです。今日の最先端技術では、頻繁に10倍以上になっています。私たちは、すべての高性能タスクを2倍以内に、実際にはそれよりはるかに高くなるように配管することで、そのギャップを本当に埋めたいと考えています。
Q:どのタイプのハードウェアについて話しているのですか?開発者は通常のワークステーションでこの可能性を解き放つことができますか、それとももう少し強力なものが必要ですか?
いいえ、どこにでもあります。あなたが利益がどこから来ているかについて考えるならば、あなたは理解するでしょう。通常のPythonライブラリは、CPUの仮想化機能を使用していません。 CPUでマルチコア機能を使用していません。それらは最適化されておらず、メモリシステムやその他すべてが最適化されていません。つまり、単純なプログラマーによって作成され、最適化なしでコンパイラーによってコンパイルされた行列乗算になり、それを専門家がアセンブリコードに書き込んだものと比較します。これら2つを比較すると、100倍のゲインが見られます。Pythonの世界では、基本的にそれが起こっています。
Pythonインタープリターと標準ライブラリは非常に高レベルであるため、最終的に得られるコードは非常に単純なコードになります。最適化されたライブラリを適切に使用すると、これらの大きなメリットが得られます。ラップトップにはすでに2〜6または8個のCPUコアがあり、マルチスレッドであり、かなり適切なベクトル化機能を備えています。おそらく256、512です。したがって、ラップトップやワークステーションには多くのパフォーマンスがあります。それをGPUにスケールアップすると、グラフィックが利用可能になると、ゲインがどこから来ているのかを想像できます。
統合されたグラフィックスを見ると、非常に強力になっています。 Ice Lake Gen11を見たことがあると思います。 統合グラフィックスは前世代よりも大幅に優れています 。ラップトップでも、どこからメリットが得られるかがわかります。
Q:DevCloudの可用性についてはどうですか?正しく思い出せば、現時点では誰でも無料で使用できますが、来年ゴールドになった後もそのまま使用できますか?
それは良い質問です。この時点で、正直に言うと、答えはわかりません。この時点での私たちの意図は、それが永遠に無料になることです。それは開発のためであり、遊んでいるためであり、そこにはたくさんの馬力があるので、人々は実際に走ることができます。
Q:では、数千人の開発者に試してもらいてもかまいませんか?
ああ、絶対にありません。私たちはそれが起こることを望んでいます!
console.error( `npmを壊すことが知られているバグ。少なくとも$ {rに更新してください
私たちがやろうとしていることを要約することができます。まず、oneAPIに非常に興奮しています。現在、市場には複数のベンダーが存在するため、マルチベンダーソリューションが軌道に乗る時が来ました。今後登場するGPUだけでなく、ますます強力な統合GPU、およびFPGAロードマップを見ると、これらすべての標準を構築するためのエキサイティングな時期です。私たちの目標は、生産性、パフォーマンス、および業界インフラストラクチャに基づいて構築できるようにすることです。
私が話した3つのオーディエンスについては、アプリケーション開発者はすでに利用可能であるため、物事を簡単に活用できます。ハードウェアベンダーはソフトウェアスタックを利用して新しいハードウェアをプラグインできますが、ツールおよび言語ベンダーはそれを簡単に使用できます。インテルは、世界中のすべての言語とすべてのツールを構築できるわけではないため、他の人が非常に簡単に活用および構築できるオープンソースインフラストラクチャです。
Intel oneAPIは、CPU、GPU、FPGA、AIアクセラレーターなど、さまざまなハードウェアアーキテクチャ間の開発を簡素化することを目的とした単一の統合プログラミングモデルです。
データ並列C ++(略してDPC ++)は、GPUやFFPGAなどの特定のタイプのハードウェアのコーディングに通常使用されるプロプライエタリプログラミング言語に代わるCベースのオープンソースです。
いいえ、oneAPIはハードウェアに依存しないように設計されており、CPU、GPU、およびさまざまなベンダーのさまざまなハードウェアアクセラレータで動作します。
はい、oneAPIはオープンソースイニシアチブであり、そのビルディングブロックのほとんどすべてを自由に使用できます。