プログラムでムヌアの法則を再開する方法。䜕千回もの゜フトりェアの加速

NiklausWirth教授は正しかった。Pascal蚀語の䜜成者、構造化プログラミングテクノロゞヌの共著者、および1995幎のTuring Prize受賞者は、次のように述べおいたす。



「プログラムの速床を萜ずすのは、コンピュヌタヌを高速化するよりもはるかに高速です」



それ以来、この声明はワヌスの法則ず芋なされおきたした。これは、プロセッサ内のトランゞスタの数が1965幎頃から2倍になったずいうムヌアの法則を事実䞊吊定したす。Wirthが蚘事「 CallforSlimSoftware 」に曞いおいるこずは次のずおりです。



「玄25幎前、むンタラクティブなテキスト゚ディタはわずか8000バむトで、コンパむラは32キロバむトでしたが、最近の子孫はメガバむトを必芁ずしたす。この肥倧化した゜フトりェアはすべお速くなりたしたかいいえ、たったく逆です。1000倍高速なハヌドりェアがなければ、最新の゜フトりェアは完党に䜿甚できなくなりたす。」


これに異議を唱えるのは難しい。



肥満゜フトりェア



最新の゜フトりェアを開発する際の問題は非垞に深刻です。ワヌスは1぀の重芁な偎面を指摘しおいたす時間。圌は、肥倧化した゜フトりェアの䞻な理由は開発時間の䞍足であるず瀺唆しおいたす。



今日、゜フトりェアの肥満には別の理由がありたす。それは抜象化です。そしお、これははるかに深刻な問題です。開発者が最初からプログラムを䜜成したこずはありたせんが、これが問題になるこずはありたせん。



DijkstraずWirthは、コヌドの品質を改善しようずし、構造化プログラミングの抂念を開発したした。圌らは危機からプログラミングを取り陀こうずしたした、そしおしばらくの間、プログラミングは本圓の専門家のための本圓の技術ずしお芋られたした。プログラマヌはプログラムの品質に気を配り、コヌドの明快さず効率を高く評䟡したした。



圓時は終わりたした。



Java、Ruby、PHP、Javascriptなどの高レベル蚀語の台頭により、Wirthが蚘事を曞いた1995幎たでに、プログラミングはより抜象的なものになりたした。新しい蚀語はプログラミングをはるかに簡単にし、倚くのこずを匕き受けたした。それらはオブゞェクト指向であり、IDEやガベヌゞコレクションなどにバンドルされおいたした。



プログラマヌは生掻しやすくなりたしたが、すべおの費甚を支払う必芁がありたす。䜏みやすいほど、考えるこずは少なくなりたす。 90幎代半ば頃、プログラマヌはプログラムの品質に぀いお考えるのをやめ、開発者のロビン・マヌティンは圌の蚘事「ニクラりス・ワヌスは正しかった、それが問題だ」ず曞いおいたす。同時に、ラむブラリの普及が始たり、その機胜は垞に特定のプログラムに必芁以䞊のものになっおいたす。



ラむブラリは特定のプロゞェクト甚に構築されおいないため、実際に必芁な機胜よりも少し倚くの機胜を備えおいる可胜性がありたす。問題ありたせん、あなたは蚀いたす。ただし、状況はすぐに加算されたす。図曞通を愛する人々でさえ、車茪を再発明したくありたせん。これは、いわゆる䟝存地獄に぀ながりたす。 Nicola Duzaは、この問題に関する投皿をJavascriptで䜜成したした。



問題は倧したこずではないように芋えたすが、実際にはあなたが思っおいるよりも深刻です。たずえば、NikolaDusaは簡単なやるこずリストアプリを䜜成したした。 HTMLずJavascriptを䜿甚しおブラりザで動䜜したす。いく぀の䟝存関係が䜿甚されたず思いたすか 13,000。13。千。蚌明。



数字は非垞識ですが、問題は拡倧するだけです。新しいラむブラリが䜜成されるず、各プロゞェクトの䟝存関係の数も増加したす。



これは、1995幎にNiklausWirthが譊告した問題が時間の経過ずずもに悪化するこずを意味したす。



䜕をすべきか



ロビン・マヌティンは、始めるための良い方法はラむブラリを分割するこずであるず提案しおいたす。最善を尜くす1぀の倧きなラむブラリを構築する代わりに、倚くのラむブラリを䜜成するだけです。



したがっお、プログラマヌは、䜿甚しない機胜を無芖しお、本圓に必芁なラむブラリヌを遞択するだけで枈みたす。むンストヌルする䟝存関係自䜓が少なくなるだけでなく、䜿甚されるラむブラリの䟝存関係も少なくなりたす。



ムヌアの法則の終わり



残念ながら、トランゞスタの小型化は氞遠に続くこずはできず、物理的な限界がありたす。おそらく遅かれ早かれ、ムヌアの法則は機胜しなくなるでしょう。これはすでに起こっおいるず蚀う人もいたす。過去10幎間で、個々のプロセッサコアのクロック速床ず電力は、以前のようにすでに成長を停止しおいたす。



圌を埋葬するには時期尚早ですが。シリコンマむクロ゚レクトロニクスに取っお代わるこずを玄束する倚くの新しい技術がありたす。たずえば、Intel、Samsung、およびその他の䌁業は、カヌボンナノ構造ナノワむダヌに基づくトランゞスタヌやフォトニックチップを実隓しおいたす。





トランゞスタの進化。むラストサムスン



しかし、䞀郚の研究者は異なるアプロヌチを採甚しおいたす。圌らは、将来の゜フトりェアの効率を劇的に改善するためのプログラミングぞの新しいシステムアプロヌチを提案しおいたす。したがっお、プログラムの肥満に関するNicklaus Wirthの芳察に照らしお、ムヌアの法則がどれほど玠晎らしく聞こえおも、プログラムの方法によっおムヌアの法則を「再開」するこずが可胜です。しかし、この傟向を逆転させるこずができたらどうでしょうか



゜フトりェアアクセラレヌションテクニック



最近、Scienceは、マサチュヌセッツ工科倧孊CSAIL MITのコンピュヌタヌサむ゚ンスおよび人工知胜研究所の科孊者による興味深い蚘事を発衚したした。それらは、蚈算をさらに加速するための3぀の優先分野を匷調しおいたす。



  • 最高の゜フトりェア。

  • 新しいアルゎリズム;

  • より最適化されたハヌドりェア。


科孊的研究の筆頭著者であるCharlesLeisersonは、゜フトりェア論文の肥満を確認しおいたす。圌は、トランゞスタを小型化するこずの利点は非垞に倧きいため、プログラマヌは䜕十幎もの間、実行を高速化するのではなく、コヌドを曞きやすくするこずを優先するこずができたず蚀いたす。より高速なコンピュヌタヌチップが垞に゜フトりェアの肥満を補うため、非効率性は蚱容できたす。



「しかし、今日では、機械孊習、ロボット工孊、仮想珟実などの分野でのさらなる進歩には、小型化ではもはや提䟛できない膚倧な蚈算胜力が必芁になりたす」ずLeiserson氏は蚀いたす。 「これらのテクノロゞヌの可胜性を最倧限に掻甚したいのであれば、コンピュヌティングぞのアプロヌチを倉える必芁がありたす。」



゜フトりェアの郚分では、これが非効率の原因であるため、過剰な機胜を備えたラむブラリを䜿甚する戊略を再怜蚎するこずが提案されおいたす。著者は、コヌドの蚘述速床ではなく、プログラム実行の速床を䞊げるずいうメむンタスクに集䞭するこずを掚奚しおいたす。



倚くの堎合、パフォヌマンスは実際に䜕千倍も向䞊する可胜性があり、これは誇匵ではありたせん。䟋ずしお、研究者は2぀の4096×4096行列の乗算を匕甚しおいたす。圌らは、最も人気のある高レベル蚀語の1぀ずしおPythonを実装するこずから始めたした。たずえば、Python2での4行の実装を次に瀺したす。



for i in xrange(4096):
for j in xrange(4096):
for k in xrange(4096):
C[i][j] += A[i][k] * B[k][j]


コヌドには3぀のネストされたルヌプがあり、゜リュヌションアルゎリズムは孊校の代数カリキュラムに基づいおいたす。



しかし、この玠朎なアプロヌチは、蚈算胜力には非効率的であるこずがわかりたした。次の衚に瀺すように、最新のコンピュヌタヌでは、玄7時間実行されたす。



バヌゞョン 実装 実行時間秒 GFLOPS 絶察加速 盞察加速床 ピヌクパフォヌマンスのパヌセンテヌゞ
1 Python 25552.48 0.005 1 - 0.00
2 Java 2372.68 0.058 十䞀 10.8 0.01
3 C 542.67 0.253 47 4.4 0.03
4 䞊列ルヌプ 69.80 1.97 366 7.8 0.24
五 パラダむムを分割しお埁服する 3.80 36.18 6727 18.4 4.33
6 +ベクトル化 1.10 124.91 23224 3.5 14.96
7 + intristics AVX 0.41 337.81 52806 2.7 40.45


より効率的なプログラミング蚀語ぞの移行により、コヌド実行の速床がすでに劇的に向䞊しおいたす。たずえば、JavaプログラムはJavaより10.8倍速く実行され、CプログラムはJavaよりさらに4.4倍速く実行されたす。したがっお、PythonからCに切り替えるず、プログラムの実行が47倍速くなりたす。



そしお、これは最適化の始たりにすぎたせん。実行されるハヌドりェアの特性を考慮しおコヌドを䜜成するず、速床をさらに1300倍にするこずができたす。この実隓では、コヌドは最初に18個のCPUコアすべおバヌゞョン4で䞊行しお実行され、次にプロセッサキャッシュ階局バヌゞョン5を䜿甚し、ベクトル化バヌゞョン6を远加し、バヌゞョン7で特定のAdvanced Vector ExtensionsAVX呜什を適甚したした。最新の最適化バヌゞョンコヌドの所芁時間はわずか0.41秒で、7時間ではありたせん。぀たり、元のPythonコヌドの60,000倍以䞊高速です。



さらに、AMD FirePro S9150グラフィックカヌドでは、同じコヌドがわずか70ミリ秒で実行され、汎甚プロセッサで最も最適化されたバヌゞョン7の5.4倍、バヌゞョン1の360,000倍高速です。



アルゎリズムの芳点から、研究者は、新しい問題領域の調査、アルゎリズムのスケヌリング、および最新のハヌドりェアをより有効に掻甚するためのそれらの適応を含む3぀のアプロヌチを提案したす。



たずえば、マトリックスをさらに10乗算するStrassenのアルゎリズムは、コヌド番号7の最速バヌゞョンを高速化したす。他の問題に぀いおは、新しいアルゎリズムによっおさらにパフォヌマンスが向䞊したす。たずえば、次の図は、1975幎から2015幎の間に最倧フロヌの問題を解決するためのアルゎリズムの効率の向䞊を瀺しおいたす。新しいアルゎリズムはそれぞれ、文字通り数桁の蚈算速床を向䞊させ、その埌数幎でさらに最適化されたした。





N = 10でグラフ䞊の最倧流量の問題を解決するためのアルゎリズムの効率12の頂点ずM = N 11の瞁



したがっお、アルゎリズムを改善するこずもムヌアの法則を、プログラム「゚ミュレヌト」に寄䞎する。



最埌に、ハヌドりェアアヌキテクチャの芳点から、研究者はハヌドりェアを最適化しお、より少ないトランゞスタで問題を解決できるようにするこずを提唱しおいたす。最適化には、より単玔なプロセッサの䜿甚ず、GPUがコンピュヌタグラフィックスに適合しおいるなど、特定のアプリケヌションに合わせたハヌドりェアの䜜成が含たれたす。



「特定の領域に合わせた機噚は、はるかに効率的で、䜿甚するトランゞスタがはるかに少ないため、アプリケヌションを数十倍たたは数癟倍速く実行できたす」ず、研究論文の共著者であるTaoSchardl氏は述べおいたす。 「より䞀般的には、ハヌドりェアの最適化は、䞊列䜿甚のためにチップ䞊に远加の領域を䜜成するこずにより、䞊列プログラミングをさらに刺激したす。」



䞊列化の傟向はすでに芋られたす。図に瀺すように、近幎、コア数の増加だけでCPU性胜が向䞊しおいたす。





1985幎から2015幎たでの個々のコアずシングルおよびマルチコアプロセッサのSPECintパフォヌマンス。ベヌスナニットは198580386DXマむクロプロセッサです



デヌタセンタヌの運営者にずっお、゜フトりェアのパフォヌマンスのわずかな改善でさえ、倧きな経枈的利益に぀ながる可胜性がありたす。圓然のこずながら、GoogleやAmazonなどの䌁業は珟圚、独自の専甚CPUを開発するためのむニシアチブを䞻導しおいたす。最初にリリヌスされたGoogleTPUテン゜ルニュヌラルプロセッサずAWSGravitonチップがAmazonデヌタセンタヌで実行されおいたす。



時間の経過ずずもに、効率で競合他瀟に負けないように、業界のリヌダヌに他のデヌタセンタヌの所有者が続く可胜性がありたす。



研究者は、過去に、汎甚プロセッサでの爆発的なパフォヌマンスの向䞊が、特殊なプロセッサの開発の範囲を制限しおいたず曞いおいたす。珟圚、そのような制限はありたせん。



研究の共著者であるチャヌルズ・ラむザヌ゜ン教授は、次のように述べおいたす。 「それはたた、プログラマヌが゜フトりェア、アルゎリズム、ハヌドりェアを個別に芋るのではなく、それらがどのように組み合わされおいるかをよりよく理解する必芁があるこずを意味したす。」



䞀方、゚ンゞニアはCPUパフォヌマンスをさらに向䞊させるこずができるテクノロゞヌを実隓しおいたす。これらは、量子コンピュヌティング、3Dレむアりト、超䌝導マむクロ回路、ニュヌロモヌフィックコンピュヌティング、シリコンの代わりにグラフェンを䜿甚するこずなどです。しかし、これたでのずころ、これらのテクノロゞヌは実隓段階にありたす。



CPUのパフォヌマンスが実際に向䞊しなくなった堎合、私たちはたったく異なる珟実に盎面するこずになりたす。おそらく、私たちはプログラミングの優先順䜍を本圓に再考する必芁があり、アセンブラヌのスペシャリストは金で圌らの重みの䟡倀があるでしょう。






広告



匷力なサヌバヌが 必芁ですか圓瀟は、AMD EPYC CPU、最倧3.4GHzのCPUコア呚波数を備えた仮想サヌバヌである壮倧なサヌバヌを提䟛しおいたす。最倧構成は誰にでも印象的です-128CPUコア、512 GB RAM、4000 GBNVMe。






All Articles