ハむパフォヌマンスコンピュヌティング問題ず解決策

個人のコンピュヌタヌでさえ、コンピュヌタヌはより耇雑になっおいたす。 少し前たでは、すべおがテヌブル䞊でバズヌず音を立おるボックスに収められおいたした。呚波数が高いほど、パフォヌマンスは向䞊したした。 珟圚、システムはマルチコア、マルチプロセッサ、特殊なアクセラレヌタになり、コンピュヌタヌはたすたすクラスタヌ化されおいたす。

なんで この倚様性をすべお理解する方法は

SIMD、SMP、GPGPU、その他の恐ろしい蚀葉の意味はどんどん増えおいたすか

既存の生産性技術の適甚性の限界は䜕ですか



はじめに



なぜそのような困難があるのですか


コンピュヌタの凊理胜力は急速に成長しおおり、垞に、既存の速床ですべおが十分であるず思われたす。

しかし、いいえ-生産性の向䞊により、以前はアプロヌチできなかった問題を解決できたす。 家庭レベルでも、ホヌムビデオの゚ンコヌドなど、長時間コンピュヌタヌをロヌドするタスクがありたす。 産業や科孊には、さらに倚くのそのようなタスクがありたす。巚倧なデヌタベヌス、分子動力孊蚈算、耇雑なメカニズムのモデリング-車、ゞェット゚ンゞンなど、すべおの蚈算にはたすたす匷力な力が必芁です。

過去数幎間、䞻な生産性の向䞊は、マむクロプロセッサヌ芁玠のサむズを瞮小するこずにより、非垞に簡単に提䟛されたした。 同時に、消費電力が䜎䞋し、動䜜呚波数が増加し、コンピュヌタヌはたすたす高速になり、䞀般的にはアヌキテクチャが維持されたした。 超小型回路の補造プロセス技術は倉化しおおり、メガヘルツはギガヘルツに成長し、メガが癟䞇であれば、ギガはすでに1秒あたり10億回の操䜜であるため、生産性が向䞊したす。

しかし、ご存知のように、楜園は氞遠ではないか、誰にずっおもそうではありたせん。コンピュヌタヌの䞖界で終わったのはそれほど昔ではありたせん。 呚波数をこれ以䞊䞊げるこずはできないこずが刀明したした。挏れ電流が増倧し、プロセッサが過熱しおおり、これをバむパスするこずはできたせん。 もちろん、冷华システムを開発したり、ラゞ゚ヌタヌを䜿甚したり、液䜓窒玠で完党に冷华したりできたすが、これはすべおのナヌザヌがアクセスできるわけではなく、スヌパヌコンピュヌタヌやテクノマニアだけが利甚できたす。 たた、冷华を行った堎合、成長の可胜性は小さく、玄2倍になりたした。これは、幟䜕孊的進行に慣れおいるナヌザヌには受け入れられたせんでした。

トランゞスタの数ず関連するコンピュヌタヌのパフォヌマンスが1.5幎から2幎ごずに2倍になったムヌアの法則は適甚されなくなるようです。

考えお実隓する時間です。蚈算の速床を䞊げるために考えられるすべおの方法を思い出しおください。



性胜匏


最も䞀般的な性胜匏を取りたす。







生産性は、1秒あたりに実行される呜什の数で枬定できるこずがわかりたす。

プロセスをより詳现に説明し、クロック呚波数を玹介したす。







受け取った䜜業の最初の郚分は1クロックサむクルIPC、1呜什あたりの呜什で実行される呜什の数、2番目は単䜍時間あたりのプロセッサクロックの数、クロック速床です。

したがっお、パフォヌマンスを向䞊させるには、クロック呚波数を䞊げるか、サむクルごずに実行する呜什の数を増やす必芁がありたす。

なぜなら 頻床の増加が停止した堎合、実行可胜な呜什の数を「䞀床に」増やす必芁がありたす。



䞊列凊理を有効にする



サむクルごずに実行される呜什の数を増やす方法は

明らかに、䞀床に耇数の呜什を䞊行しお実行したす。 しかし、それを行う方法は

それはすべお、実行しおいるプログラムに䟝存したす。

プログラマヌがプログラムをシングルスレッドずしお蚘述し、すべおの呜什が順番に実行される堎合、プロセッサヌたたはコンパむラヌは「人のために考え」、同時に実行できるプログラムの䞊列郚分を怜玢する必芁がありたす。



呜什レベルの䞊行性



簡単なプログラムを芋おみたしょう

a = 1

b = 2

c = a + b







最初の2぀の呜什は䞊行しお実行でき、3番目の呜什のみがそれらに䟝存したす。 そのため、プログラム党䜓は3぀のステップではなく2぀のステップで完了するこずができたす。

独立した競合する呜什を独立しお決定し、それらを䞊列に実行できるプロセッサをスヌパヌスカラヌず呌びたす。

最新のx86-スヌパヌスカラヌプロセッサを含む倚くの最新のプロセッサがありたすが、別の方法がありたす。プロセッサを単玔化し、コンパむラに䞊列凊理を割り圓おるこずです。 同時に、プロセッサは、プログラムコンパむラが準備した「バッチ」でコマンドを実行したす。このような「バンドル」は、互いに独立しおおり、䞊行しお実行できる呜什のセットです。 このアヌキテクチャはVLIW非垞に長い呜什語-「非垞に長いマシン呜什」ず呌ばれ、そのさらなる開発はEPIC明瀺的な䞊列呜什コンピュヌティング-コマンドの明瀺的な䞊列性を備えたマむクロプロセッサアヌキテクチャ

このアヌキテクチャを持぀最も有名なプロセッサは、Intel Itaniumです。

サむクルごずに実行される呜什の数を増やすための3番目のオプションがありたす。これはハむパヌスレッディングテクノロゞです。この技術では、スヌパヌスカラヌプロセッサは1぀のスレッドの呜什を䞊列化したせんが、耇数の最新のプロセッサでは2぀の䞊列スレッドのコマンドを䞊列化したす。

぀たり 物理的には、プロセッサコアは1぀ですが、1぀のタスクプロセッサ電源を実行するずきにアむドル状態を䜿甚しお、別のタスクを実行できたす。 オペレヌティングシステムは、ハむパヌスレッディングテクノロゞを備えた1぀のプロセッサたたは1぀のプロセッサコアを2぀の独立したプロセッサず芋なしたす。 しかし、実際には、もちろん、ハむパヌスレッディングは実際の2぀の独立したプロセッサよりも動䜜が悪くなりたす。 そのタスクは、それらの間で蚈算胜力を競いたす。



呜什レベルの同時実行技術は、90幎代ず2000幎代前半に積極的に開発されたしたが、珟圚ではその可胜性はほずんど枯枇しおいたす。 コマンドの再配眮、レゞスタの名前倉曎、その他の最適化の䜿甚、シリアルコヌドからの䞊列実行セクションの遞択は可胜ですが、䟝存関係ず分岐ではコヌドを自動的に䞊列化できたせん。 呜什レベルでの䞊行性は、人間の介入を必芁ずしないため良奜ですが、これも悪いこずです。人がマむクロプロセッサヌより賢い限り、真の䞊列コヌドを曞かなければなりたせん。



デヌタレベルの同時実行性



ベクトルプロセッサ


既にスカラヌ性に぀いお説明したしたが、スカラヌに加えおベクトルがあり、スヌパヌスカラヌプロセッサに加えおベクトルがありたす。

ベクトルプロセッサは、デヌタ配列党䜓、ベクトルに察しお䜕らかの操䜜を実行したす。 「玔粋な」圢で、ベクトルプロセッサは80幎代に科孊蚈算甚のスヌパヌコンピュヌタヌで䜿甚されたした。

フリンの分類によるず 、ベクトルプロセッサはSIMDに属したす単䞀呜什、耇数デヌタ-単䞀呜什ストリヌム、耇数デヌタストリヌム 。

珟圚、x86プロセッサは倚くのベクトル拡匵を実装しおいたす-これらはMMX、3DNow、SSE、SSE2などです。

たずえば、SSEを䜿甚しお1぀のコマンドで4組の数倀を乗算するように芋えるものは次のずおりです。



float a[4] = { 300.0, 4.0, 4.0, 12.0 };

float b[4] = { 1.5, 2.5, 3.5, 4.5 };

__asm {

movups xmm0, a ; // 4 a xmm0

movups xmm1, b ; // 4 b xmm1

mulps xmm1, xmm0 ; // : xmm1=xmm1*xmm0

movups a, xmm1 ; // xmm1 a

};









したがっお、4぀の連続したスカラヌ乗算の代わりに、たった1぀のこずを行いたした。ベクトルです。

ベクトルプロセッサは、倧量のデヌタの蚈算を倧幅に高速化できたすが、その範囲は限られおおり、固定アレむでの䞀般的な操䜜はどこにも適甚できたせん。

ただし、ベクトル化を蚈算するための競争は決しお終わりではありたせん。そのため、最新のIntelプロセッサでは、新しいベクトル拡匵AVXAdvanced Vector Extension

しかし、圌らは今、もっず面癜そうです



GPU


最新のビデオカヌドのプロセッサの理論的な凊理胜力は、埓来のプロセッサよりもはるかに速く成長しおいたすNVIDIAの有名な図を参照



少し前たで、この機胜はCUDA / OpenCLを䜿甚したナニバヌサル高性胜コンピュヌティングに適合しおいたした。

グラフィックプロセッサのアヌキテクチャGPGPU、GPUでの汎甚蚈算-ビデオカヌドによる汎甚蚈算は、すでに考慮されおいるSIMDに近いものです。

SIMT-単䞀呜什、耇数スレッド、1呜什-耇数スレッドず呌ばれたす。 SIMDの堎合ず同様に、操䜜はデヌタ配列を䜿甚しお実行されたすが、凊理されるデヌタのセルごずに、コマンドの個別のスレッドが機胜するはるかに自由床がありたす。

結果ずしお

1䞊行しお、数癟のデヌタセルに察しお数癟の操䜜を実行できたす。

2コマンドの任意のシヌケンスが各スレッドで実行され、異なるセルを参照できたす。

3分岐が可胜です。 ただし、この堎合、操䜜のシヌケンスが同じスレッドのみを䞊列に実行できたす。



GPGPUは、いく぀かのタスクで印象的な結果を達成したす。 しかし、この技術が普遍的な呜の恩人になるこずを蚱可しない根本的な制限がありたす、すなわち

1GPUで加速できるのは、デヌタに応じた䞊列コヌドのみです。

2GPUは独自のメモリを䜿甚したす。 GPUメモリずコンピュヌタヌメモリの間でデヌタを転送するのは非垞に高䟡です。

3倚数のブランチを持぀アルゎリズムはGPUで非効率的に動䜜したす



マルチアヌキテクチャ



そのため、コマンドずデヌタの䞡方で独立しお䞊列する完党な䞊列アヌキテクチャになりたした。

Flynnの分類では、これはMIMD耇数呜什ストリヌム、耇数デヌタストリヌム-耇数コマンドストリヌム、耇数デヌタストリヌムです。

このようなシステムの胜力を最倧限に掻甚するには、マルチスレッドプログラムが必芁であり、その実行を耇数のマむクロプロセッサで「分散」するこずができ、それにより頻床を増やすこずなく生産性の向䞊を実珟できたす。 さたざたなマルチスレッドテクノロゞヌがスヌパヌコンピュヌタヌで長い間䜿甚されおきたしたが、珟圚ではそれらは䞀般ナヌザヌに「倩から䞋がっお」おり、マルチコアプロセッサが䟋倖よりも䞀般的です。 しかし、マルチコアは䞇胜薬ずはほど遠いものです。



厳しい法埋ですが、それは法埋です


䞊列凊理は、クロック速床の制限を回避する良い方法ですが、独自の制限がありたす。

たず、これはアムダヌルの法則であり、

さたざたな蚈算機で呜什を䞊列化するこずによりプログラムの実行を加速するこずは、その逐次呜什を実行するのに必芁な時間によっお制限されたす。



コヌドアクセラレヌションは、プロセッサの数ず匏に埓っおコヌドの䞊列性に䟝存したす







実際、䞊列実行を䜿甚するず、䞊列コヌドのみの実行時間を短瞮できたす。

どのプログラムでも、䞊列コヌドに加えお、連続したセクションがあり、プロセッサの数を増やしおセクションを高速化するこずはできず、1぀のプロセッサのみがそれらに取り組んでいたす。



たずえば、シヌケンシャルコヌドの実行にプログラム党䜓の実行時間の25しかかかっおいない堎合、このプログラムを4回以䞊加速するず倱敗したす。

䞊列コンピュヌティングプロセッサの数に察するプログラムの加速の䟝存関係のグラフを䜜成したしょう。 順次コヌドの1/4ず䞊列の3/4を匏に代入するず、次のようになりたす。





悲しいです そのように。

数千のプロセッサずテラバむトのメモリを備えた䞖界最速のスヌパヌコンピュヌタヌで、䞀芋優れた75䞊列タスクで、通垞のデスクトップクワッドの2倍未満の速床です。

そしお、この理想的な堎合よりもさらに悪いです。 珟実の䞖界では、䞊列凊理のコストがれロに等しくなるこずはありたせん。したがっお、プロセッサを远加するず、ある時点からパフォヌマンスが䜎䞋し始めたす。

しかし、珟代の非垞にマルチコアなスヌパヌコンピュヌタヌのパワヌはどのように䜿甚されおいたすか

倚くのアルゎリズムでは、パラレルコヌドの実行時間は凊理されるデヌタの量に倧きく䟝存したすが、シリアルコヌドの実行時間はそうではありたせん。 凊理する必芁があるデヌタが倚いほど、䞊列凊理からのゲむンが倧きくなりたす。 したがっお、倧量のデヌタをスヌパヌコンピュヌタヌに「駆り立おる」こずで、十分な加速が埗られたす。

たずえば、スヌパヌコンピュヌタヌで3 * 3の行列を乗算するず、通垞のシングルプロセッサバヌゞョンずの違いに気付くこずはほずんどありたせんが、サむズが1000 * 1000の行列を乗算するこずは、マルチコアマシンではすでに完党に正圓化されたす。

そのような簡単な䟋がありたす1か月の9人の女性は1人の子䟛を出産できたせん。 ここでは䞊行性は機胜したせん。 しかし、9か月で同じ81人の女性が出産するこずができたす最高の効率を実珟したす81人の子䟛に、぀たり、䞊列性の向䞊から最倧の理論的生産性を埗るこずができたす。 。

倧きなコンピュヌタヌには倧きなタスクがありたす



マルチプロセッサ


マルチプロセッサは、耇数のプロセッサずすべおのプロセッサから芋えるプロセッサを含むコンピュヌタシステムです。 アドレス空間。

マルチプロセッサは、メモリを䜿甚した䜜業の構成が異なりたす。



共有メモリシステム


このようなシステムでは、耇数のプロセッサおよびプロセッサキャッシュが同じ物理RAMにアクセスできたす。 このようなモデルは、倚くの堎合、察称型マルチプロセッシングSMPず呌ばれたす。 このようなシステム蚭蚈におけるメモリぞのアクセスは、UMAUniform Memory Accessず呌ばれたす。 任意のプロセッサが任意のメモリ䜍眮にアクセスでき、このアクセスの速床はメモリアドレスに䟝存したせん。 ただし、各マむクロプロセッサヌは独自のキャッシュを䜿甚できたす。



耇数のプロセッサキャッシュサブシステムは通垞、バスを介しお共有メモリに接続されたす



写真を芋おみたしょう。

䜕が私たちに良いですか

どのプロセッサもすべおのメモリにアクセスし、すべお同じように機胜したす。 このようなシステムのプログラミングは、他のマルチアヌキテクチャよりも簡単です。 悪いニュヌスは、すべおのプロセッサがバスを介しおメモリにアクセスし、凊理コアの数が増えるず、このバスのスルヌプットがすぐにボトルネックになるこずです。

頭痛ずキャッシュの䞀貫性を確保する問題を远加したす。



キャッシュの䞀貫性


マルチプロセッサコンピュヌタヌがあるずしたす。 䞊図のように、各プロセッサには独自のキャッシュがありたす。 䞀郚のプロセッサにメモリセルを読み取らせるず、キャッシュに栌玍されたす。 このセルが倉曎されおいない限り問題ありたせん-高速キャッシュから読み取られ、䜕らかの圢で蚈算に䜿甚されたす。

プログラムの結果、プロセッサの1぀がこのメモリセルを倉曎し、䞍䞀臎がない堎合、他のすべおのプロセッサがこの曎新を「芋る」ようにするには、 すべおのプロセッサのキャッシュの内容を倉曎し、この曎新䞭に䜕らかの方法で速床を萜ずす必芁がありたす。

デスクトップコンピュヌタヌのように、コア/プロセッサの数が2であれば良いのですが、8たたは16であれば そしお、それらがすべお1぀のバスを介しおデヌタを亀換する堎合はどうでしょうか

パフォヌマンスの䜎䞋は非垞に重倧です。



マルチコアプロセッサヌ


タむダの負荷を枛らす方法は

たず、䞀貫性を確保するために䜿甚を停止できたす。 これを行う最も簡単な方法は䜕ですか

はい、はい、共有キャッシュを䜿甚したす。 これが、最新のマルチコアプロセッサの動䜜方法です。



写真を芋おみたしょう。前のものずは2぀の違いがありたす。

はい、キャッシュは今やすべおのものになりたした。䞀貫性の問題は䟡倀がありたせん。 そしお、円が長方圢に倉わり、これはすべおのコアずキャッシュが同じチップ䞊にあるずいう事実を象城しおいたす。 実際には、画像はやや耇雑で、キャッシュはマルチレベルで、䞀郚は䞀般的、䞀郚はそうではなく、それらの間の通信に特別なバスを䜿甚できたすが、すべおの実際のマルチコアプロセッサはキャッシュの䞀貫性を確保するために倖郚バスを䜿甚しないため、負荷が軜枛されたす。

マルチコアプロセッサは、最新のコンピュヌタヌのパフォヌマンスを向䞊させる䞻な方法の1぀です。

すでに6぀の栞プロセッサが生産されおいたすが、将来的にはさらに倚くのコアがありたす...制限はどこにありたすか

第䞀に、プロセッサの「栞性」は攟熱によっお制限されたす。1぀のクリスタルで同時に動䜜するトランゞスタが倚くなるほど、このクリスタルが熱くなるほど、冷华が難しくなりたす。

たた、2番目の倧きな制限は、倖郚バスの垯域幅です。 倚くのコアでは、粉砕するために倧量のデヌタが必芁であり、バス速床が十分でなくなるため、SMPを攟棄する必芁がありたす



NUMA


NUMANon-Uniform Memory Access-たたはNon-Uniform Memory Architecture-Non-Uniform Memory Architecture-共通のアドレス空間で、メモリアクセスの速床がその堎所に䟝存するアヌキテクチャ通垞はプロセッサ「独自の」メモリがあり、アクセスはより速く、「異質な」アクセスはより遅くなりたす。

珟代のシステムでは、このように芋えたす







プロセッサはメモリに接続され、高速バスを介しお盞互に接続されたす。AMDの堎合はHyper Transport、最新のIntelプロセッサの堎合はQuickPath Interconnectです

なぜなら すべおのナヌザヌに共通のバスはありたせん。「自分の」メモリを操䜜する堎合、システムのボトルネックになるこずはなくなりたす。

NUMAアヌキテクチャにより、かなり効率的なマルチプロセッサシステムを䜜成できたす。たた、最新のプロセッサのマルチコアの性質を考慮するず、プロセッサずメモリの混同のキャッシュコヒヌレンスを確保する耇雑さによっお䞻に制限される「1぀のパッケヌゞ」ですでに非垞に深刻なコンピュヌティングパワヌが埗られたす。

しかし、さらにパワヌが必芁な堎合は、耇数のマルチプロセッサを



マルチコンピュヌタヌ




マルチコンピュヌタヌは、共有メモリのないコンピュヌティングシステムであり、盞互に接続された倚数のコンピュヌタヌノヌドで構成され、各コンピュヌタヌには独自のメモリがありたす。 共通のタスクで䜜業する堎合、マルチコンピュヌタヌノヌドは盞互にメッセヌゞを送信するこずにより盞互䜜甚したす。

倚くの兞型的なパヌツから構築された最新のマルチコンピュヌタヌは、コンピュヌティングクラスタヌず呌ばれたす。

最新のスヌパヌコンピュヌタヌのほずんどはクラスタヌアヌキテクチャ䞊に構築され、高速ネットワヌクギガビットむヌサネットたたはInfiniBandを䜿甚しお倚くのコンピュヌティングノヌドを組み合わせ、珟代の科孊の発展においお最倧限のコンピュヌティング胜力を実珟するこずを可胜にしたす。

圌らの力を制限する問題もかなり倧きい。

これは

1数千のコンピュヌティングプロセッサを䞊列に実行するシステムのプログラミング

2巚倧な電力消費

3基本的な信頌性の欠劂に぀ながる耇雑さ



すべお䞀緒に



さお、匷力なコンピュヌティングシステムを構築するためのほがすべおの技術ず原則に぀いお簡単に説明したした。

今では、珟代のスヌパヌコンピュヌタヌの構造を想像するこずができたす。

これはマルチコンピュヌタヌクラスタヌであり、各ノヌドは耇数のプロセッサヌを備えたNUMAたたはSMPシステムであり、各プロセッサヌは耇数のコアを備え、各コアはスヌパヌスカラヌ内郚䞊列凊理ずベクトル拡匵の可胜性を備えおいたす。 これに加えお、GPGPUアクセラレヌタは倚くのスヌパヌコンピュヌタヌにむンストヌルされおいたす。

これらすべおのテクノロゞヌには利点ず制限があり、アプリケヌションには埮劙な点がありたす。

そしお今、このすべおの玠晎らしさを効率的にダりンロヌドしおプログラムしおみおください

このタスクは簡単ではありたせんが、非垞に興味深いものです。

次に䜕かが来たすか



情報源


䞊列蚈算むンタヌネットの基瀎スヌパヌコンピュヌタヌ技術倧孊

parallels.ruのFlynnの分類

マルチプロセッサ、そのメモリ組織、およびIntelずAMDによる実装

コンピュヌティングシステムのパフォヌマンスを向䞊させる方法ずしおのマルチコア

りィキペディアずむンタヌネット



PSこのテキストは、高性胜コンピュヌティングの分野のテクノロゞヌに関する情報を敎理しお敎理する詊みずしお生たれたした。 䞍正確および゚ラヌが発生する可胜性がありたす。コメントずコメントに非垞に感謝したす。



All Articles