簡単な言葉でコンピュータの構成原理:GPU(下) - 学習の深さは、GPUを使用する必要があるのはなぜ?(講義31)

まず、プライマー

最終講義では、私はあなたがコンピュータの中に3次元グラフィックスのレンダリングプロセスを見てください。このレンダリングプロセス、最終的にプロセス頂点、プリミティブ処理、ラスタライズ、フラグメント処理、及び画素の動作に。プロセスのこのシリーズは、

また、グラフィックスレンダリングパイプラインまたはパイプラインとして知られています。

特にによるマルチピクセルレンダリングのリアルタイムの計算に、グラフィックスアクセラレータカードは、歴史の舞台に乗り込みました。TNT 3DFX NVidiaのようなグラフィックスアクセラレータによって、ブードゥー又は
CPUは、処理画素点プリミティブ処理、ラスタライズ処理、およびこれらの操作の断片に行く必要がありません。3Dゲームも、この時代から開発されています。

あなたはこの絵を見ることができ、これは変更ポリゴンモデリング「トゥームレイダー」ゲームです。この変更は、それが1996年から2016年まで、グラフィックスカードに20年は進歩をもたらしています。

二、シェーダの誕生と、プログラム可能なグラフィックスプロセッサ

CPUが動作しない場合は1、どんなに高速なグラフィックカード、3D画面は同じではないではありません

私はあなたが何も「頂点処理」このステップではありません、TNTとブードゥーグラフィックスレンダリングパイプラインを発見したかどうかを知りません。当時、ポリゴンの線形変化の頂点は、私たちのスクリーンの作業を調整するための変換は、まだCPUによって行われます。
そのため、CPUのパフォーマンスより良い、複数のポリゴン、ポリゴンモデリング実在の人物のように、より自然に対応した効果をサポートすることが可能です。ポリゴンの3Dゲームのパフォーマンスも制限されます

私達のCPUのパフォーマンスで。どんなに速いグラフィックスカード、CPUが好きか、3D画面を動作しない場合。

2は、1999年のNVIDIA GeForce 256枚のグラフィックスカードに発売しました

そこで、我々は、頂点処理コンピューティングパワーを入れ、1999年のNVIDIA GeForce 256枚のグラフィックスカードに発売するだけでなく、内部のCPUにグラフィックスカードに移動しました。しかし、これは、3Dゲームをしたいプログラマのためであることは、十分ではありません
でも、GeForceは256に。全体のプロセスは完了するために固定回線内のハードウェアグラフィックスレンダリングです。アクセラレータカード上のプログラマは、単に異なるグラフィックスレンダリングを実現するために設定を変更、それを行うことができます。あなたは合格した場合
の構成を変更することはできませんを通じて、我々は他の方法を持っていません。

3、プログラマは、我々はいくつかのGPUのプログラマビリティを持っていることを願って

今回は、プログラマは、我々はいくつかのGPUのプログラマビリティを持つことができます願っています。このプログラミング能力はCPUのようではない、非常に一般的な手順があるので、あなたがアクションをしたい何もすることができ、
しかし全体でレンダリングパイプラインいくつかの特別な手順(グラフィックス・パイプライン)、データや操作を処理するために、独自のアルゴリズムを定義することが可能です。だから、2001年の初めから、Direct3Dの8.0、
Microsoftが最初に導入されたプログラマブルパイプラインのコンセプト(プログラマブル機能パイプラインを)されます。

 

プログラム可能なスタートラインには、頂点処理(頂点処理)の処理およびその断片(フラグメント処理)セクションに制限されます。オリジナルと比較してのみ、そのような固定された構成とDirect3Dのグラフィックスおよびグラフィカルインタフェースによって提供することができます

プログラマは最終的に彼らの才能を示し始めるグラフィック効果に始めることができます。

これらは、私たちがシェーダを呼び出すインタフェースを、プログラミングすることができ、中国名はシェーダです。これらは、「プログラマブル」インターフェースのみ修飾頂点及びフラグメント処理プログラムロジック処理部を起動するので、「シェーダ」と呼ばれています。
我々は、色が叫んだように、実行される主光である、明るさ、色、等、を行うために、これらのインタフェースを使用します。

4、シェーダ誕生

これらは、私たちが呼ぶインタフェース、プログラミング可能なシェーダを、中国の名前は、シェーダです。これらは、「プログラマブル」インターフェースのみ修飾頂点及びフラグメント処理プログラムロジック処理部を起動するので、「シェーダ」と呼ばれています。
我々は、主に光である、明るさ、色、等、を行うために、これらのインタフェースを使用し実行される、いわゆるシェーダ

頂点シェーダとシェーダフラグメントシェーダは、これらの2つのタイプは、ハードウェア回路とは独立しています

今回GPUは、頂点シェーダとフラグメントシェーダである2種類のシェーダが、あります。我々は話、我々は、多角形の頂点を操作したときに行わ頂点処理を参照して、動作中の断片、場合
我々は、画面上の画素を操作します。断片より通常より複雑な頂点のために。したがって、最初は、これらの2つは、独立したプログラミング・インターフェースを有する、独立したシェーダハードウェア回路です。そうなので、
ハードウェア設計は、GPU上でより多くのシェーダを収容することができ、はるかに簡単です。

図5に示すように、ハードウェア回路の問題は無関係です

しかし、その後、私たちはすぐに頂点処理とフラグメント処理上の私たちの固有のロジックが同じではないが、ことがわかったが、同じセットで使用することができる命令セット。また、独立したとバーテックスシェーダフラグメントシェーダが、
あなたは、ハードウェア設計の複雑さを軽減するだけでなく、廃棄物をもたらしたことができ、半分シェーダが使用されていません。全体のレンダリングパイプライン、時間Vertextシェーダーの実行では、フラグメントシェーダは、何もしないそこに停止します。
フラグメントシェーダは、実行時に、Vertextシェーダもボーッとそこに停止します。

図6に示すように、統一されたシェーダアーキテクチャ

もともとGPUは安くはない、回路設計の結果は、半分の時間アイドル状態にあります。ハードウェアエンジニアは慎重に毎分のうち、摘み取ら計画したいと、当然のことながら、パフォーマンスを立つことはできません。このように、統合されたシェーダアーキテクチャ(統合シェーダアーキテクチャ)がされて入ってきました。

私たちが使用しているので、命令セットは、統一されたスケジューリング、頂点処理、処理プリミティブを通じて、同じシェーダハードウェア回路内部のGPU上の番号を入れて、した方が良いです、同じである、これらのタスクの断片は、これらのシェーダに対処するために引き渡され、

できるだけ忙しい全体のGPU。このデザインは、現代のGPUデザインが統一されたシェーダアーキテクチャです。

7、ユニバーサルグラフィックスプロセッサ

興味深いことに、これは内部のPCでGPUの初登場ではなく、ゲームコンソールからMicrosoftのXbox 360があります。その後、このアーキテクチャは内側のみATIとNVIDIAのグラフィックスカードを使用しました。今回は「シェーダー」の役割、そして
実際には、その名前とはほとんどを持っていますが、名前を一般的な抽象計算モジュールとなりました。

シェーダは、「ユニバーサル」モジュールになるので、それは、汎用コンピューティングのさまざまな操作を行うために使用されるGPUの使用のみが、つまり、正確にはGPGPU(汎用グラフィックスプロセッシングユニットのコンピューティングON、GPGPU)。
GPUは、汎用コンピューティングのさまざまなを作るために使用することができるので、正確に過去10年間の唯一の火の深さの研究です。

 

現代のGPUの第三に、3つのコアのアイデア

現代のGPUの進化の歴史を終え、次のは、我々はグラフィックスレンダリング上の理由現代のGPUを見て、深さが非常に速く学ぶことができます

1、薄いチップ

慎重に近代的なCPUを説明する話の多くを費やす前のは、背中を見てみましょう。トランジスタにおける現代のCPUは、実際には、「計算する」コア機能を達成するために使用されていない、より多くの、より複雑になりますが、プロセスは、オーダー実行、達成するために使用される
分岐予測をした後、我々はメモリにしたいですキャッシュセクションを話します。

GPUにおいて、冗長回路が少ない、GPUの全体のプロセスは、ストリーミング処理(ストリーム処理)Aです。分岐条件がそんなに、または複雑な依存関係ではないので、
我々は唯一の命令フェッチ、命令デコードを残して、少し薄いを行う、これらに対応するGPUの回路を除去することができる置くことができ、及びALUは、これらの計算が必要で実行しますレジスタやキャッシュだけで罰金。一般的に、これらの回路は、我々は、次の図にフェッチとデコード命令、およびALUの実行コンテキスト、つまり、三つの部分に抽象化されます。

 

図2に示すように、マルチコア平行とSIMT

1、マルチコアパラレル

その結果、当社のGPUの回路は、CPUよりもはるかに簡単です。従って、我々はここで、GPUは、平行プラグGPU演算回路のような数を達成することができ、もし同じマルチコアCPU内部のCPU。
CPUと異なるが、我々は独立したマルチスレッド・コンピューティングを実現するために必要がないものです。操作は、GPUの並列ので自然です。

 

最後の講義では、実際には、両方のプロセスにおけるポリゴンの頂点のために見ている、または各画素が各点を計算するために処理される画面は独立しています。したがって、単にGPU多核を追加、
加速並列に行うことができます。しかし、この加速は十分な光ではない、エンジニアは、性能だけでなく、空間の更なる圧搾を感じました。

2、SIMTテクノロジー

私たちは、SIMDと呼ばれるものがあります、最初の27の内部応力が、CPUの処理技術について話しました。この技術は、我々の命令が実行されるベクトル計算を行う際に同じ命令のデータが異なっていたことを除いて、同じであるといわれています。
GPUではこの技術はの偉大な使用を行うことができるレンダリングパイプライン。

画面光と色にそれが頂点に線形変換されているかどうか、またはポイントに隣接する画素は、命令の同じ流れを使用して計算されます。だから、GPUと呼ばれるSIMT(単一命令、複数のスレッド)技術で、SIMD内のCPU上で描画します。SIMTそれはSIMDよりも柔軟です。SIMD内側、実行するための1つの命令で登録するに固定長データの複数のCPU時間抽出。SIMTは、あなたがに対処するための別のスレッドに複数のデータを置くことができます。

同じであるが、異なるデータに応じて変えることができるスレッドの命令の実行プロセス、異なる条件分岐が来ます。したがって、同じコードと同じプロセスは、異なる特定の命令を実行することができます。これは、スレッドは、分岐を行った場合は、条件である
別のスレッドが他に歩いたが、条件分岐です。

したがって、我々はGPUさらに進化を設計することができ、すなわち、命令フェッチ、命令デコードステージ、命令フェッチバック異なるパラレルALU演算の複数に与えることができます。このように、当社のコアGPU年代の一つは、
あなたは同時により多くの並列コンピューティングでは、より多くのALUを置くことができます。

 

3、「ハイパースレッディング」でGPU

主にGPU内部数値計算ベースが。しかし、以来、それはすでにこの条件があれば...他の枝になります避けることができないGPUの「ユニバーサル・コンピューティング」アーキテクチャです。しかし、GPU我々は、このCPUの予測回路を分岐することはできません。
我々が遮断されていた「チップ小型化」上記のこれらの回路。

だから、説明書ではGPUとCPUは、同様の「パイプラインのストール」の問題が発生することがあります。パイプラインのストールを考えて、あなたは覚えておくことができるはず、我々は内部のハイパースレッディング・テクノロジーのCPU前に約話しました。GPU上で、我々はまだ似た何かを行うことができ、
それが停止に来たときには、現在のALUにはいくつかの他のコンピューティングタスクのスケジューリングです。

そして、ハイパースレッディングは、それは以上のさまざまなタスクをスケジュールしたい場合として、我々はより多くの実行コンテキストを提供し、このタスクに対処する必要があります。だから、実行コンテキスト内のコアの数は、我々はALU以上のものを必要とします。

 

四、学習の深さのGPU性能差


薄い、SIMT実行コンテキストおよびそれ以上のチップでは、並列GPUコンピューティングの暴力でより良いを持っています。このチップは、使用シナリオの今日の深研究のためにも適しています。

一方で、GPUはのための可能なフレームワークである「汎用コンピューティング、」我々は、GPU上の異なるアルゴリズムを実装するようにプログラムすることができます。一方、今の学習の深さを計算し、彼らは大きなベクトルと行列で、学習サンプルの質量を計算します。
全体の演算処理は、このGPUの並列コンピューティングアーキテクチャ強力な能力のために非常に適した複雑なロジックおよび分岐、存在しません。

私たちは、最後にパワーをどれだけ計算され、NVidiaの2080グラフィックスカードの仕様を参照してくださいに計算することができます。

2080年46 SM(ストリーミングマルチストリーミングプロセッサ)の合計、これは内部SM GPUコアGPU、各SM 64クーダコアの内部に相当します。

あなたはここで、クーダコアは、私たちの上にALUの数やピクセルシェーダーの数を言うすることです、それは2944年シェーダの合計を持っています46x64、と考えることができます。次いで、184 TMUがあり、TMUは、テクスチャマッピングユニット、ある
テクスチャマッピングユニットを計算するために使用され、それはまた、シェーダの別のタイプと考えることができます。

自動オーバークロック(ブースト)、あなたが1700MHzへできれば2080年には、1515MHzでクロックされます。NVIDIAとグラフィックスは、ハードウェアアーキテクチャの設計によれば、各クロックサイクルは、2つの命令を実行することができます。そのため、浮動小数点演算を行う能力は、これです:

(2944 + 184)×1700メガヘルツ×2 = 10.06 TFLOPS

公式の技術仕様は、正確に何10.07TFLOPSが何であるかを制御します。

そのため、最新のIntel I9の9900Kの性能はどのくらいですか?1TFLOPS未満。2080ビデオカードと9900K価格はほぼ同じです。したがって、それは、GPUにかかる時間によって、学習の実際の深さで
、多くの場合、1つまたは振幅減少の二桁。大きな深い学習モデルの計算は、多くの場合、日または数ヶ月かかり、マルチカード平行です。この時間は、CPUと明らかに不適切です。

今日では、GPGPUの打ち上げで、GPUコンピューティングは、単にグラフィックスデバイスではありません、それは数値計算を行うために使用される優れたツールです。学習の同様に、だけでなく、GPUの急速な発展により、過去10年間の繁栄をもたらしたので、深さ

V.概要拡張

そこにこのレッスンでは、私たちが話している、GPUが「プログラマブル」機能の始まりではない、プログラマが唯一のグラフィックスレンダリングを設定するために使用する必要があるように設計することができます。「プログラマブルパイプライン」の出現により、
プログラマが自分のアルゴリズムの頂点処理とフラグメントを実現するために処理することができます。さらにチップ内部のGPUハードウェアの利用率を向上させるためには、マイクロソフトのXbox 360は、最初に「統合されたシェーダアーキテクチャ」を導入しているので、
GPUは「ユニバーサル・コンピューティング」機能アーキテクチャとなっています。

その後、我々はCPUのハードウェアから進んで、GPUは、注文執行と薄くすることに使用される分岐予測回路のうち、何のために削除されます。次いで、自然に平行な頂点処理およびレンダリングパイプラインのフラグメント処理に基づきます。
私たちは、内部のGPUで、コアの多くを追加することができます。

内部の私たちのパイプラインは、命令全体のプロセスが同じであるため、そして、我々は、SIMDのCPUと同様のSIMTアーキテクチャに導入されています。この変更は、さらに内部のGPU ALUの数を増やします。
最後に、我々はGPUは常に忙しく、内部の同じGPUコンピューティングコアに加え、より多くの実行コンテキストである、GPUパイプラインのストールを有効にするために苦しむことはありません。

マルチコア内部のGPUは、マルチコンテキストと組み合わせるALUは、それは強力な並列処理を行います。ちょうど同じ価格以上の10倍のCPUパワーをカウントし、数値計算をする場合、同じアーキテクチャのGPU、。
そして、GPUコンピューティングモデルを作り、この強力なコンピューティング能力だけでなく、「ユニファイドシェーダアーキテクチャ」には、大規模なコンピューティングで深い学習、パラレル簡単に非常に適しており、多くのロジック制御ブランチはありません。

時間を訓練することは、多くの場合1、または大きさであっても2桁に短縮深い学習アルゴリズム、することができ、GPUの深さの学習を使用してください。GPUは、今もますます科学計算や機械学習の様々な使用されているだけでなく、グラフィックスレンダリングに使用。

おすすめ

転載: www.cnblogs.com/luoahong/p/11417549.html