ちょうど耇雑な゚ンゞニアリングず研究のための高性胜コンピュヌティング

庭を掘るには䜕が必芁ですか 庭がある堎合は、䜜業ツヌルず劎働力劎働者が必芁です。 そしお、もっず速く掘る必芁がある堎合はどうしたすか 友達に電話したり、他の人を雇う、぀たり埓業員の数を増やすこずができたす。 これは、庭の高性胜掘削の䟋です。 個々の埓業員の生産性は限られおいるため、匷力な劎働者を探しお庭を掘る生産性を䞊げるこずは垞に可胜ずは限りたせん。 したがっお、より倚くの劎働者のサヌビスに頌る必芁がありたす。



同様に、高性胜コンピュヌティングの堎合。 ワヌカヌeng。Workersは、MATLABパッケヌゞ英語のMATLABの甚語に基づいお、コンピュヌティングクラスタヌ内の個々のコンピュヌタヌおよびプロセッサコアず呌ばれたす。 他のクラスタヌのドキュメントでは、これらのカヌネルずコンピュヌタヌはノヌド英語のノヌドず呌ばれ、このノヌトではそれらを呌び出したす。



ちょうど耇雑な゚ンゞニアリングず研究のための高性胜コンピュヌティング



はじめに


Habrahabrはすでに、高性胜な分散コンピュヌティングBBに぀いお倚くのこずを曞いおいたす。 freetonikはすでに䞊列コンピュヌティングの詳现か぀明確な玹介を行っおおり、BBはここでkelegによっお怜蚎され、分散コンピュヌティングの理論は mkosyakovのノヌトで開瀺され、 Melges はCでのネットワヌク䞊の䞊列コンピュヌティングの経隓を説明し、 XakepRU はLinux それらを再読した埌、私は爆発物を䜿甚しお工孊的および科孊的問題を解決するのに圹立぀ノヌトはないこずに気付きたした。 これは、このトピックに関する倚くの情報源の䞀般的な機胜です。 プログラマヌは、割り圓おられたタスクを実行する優れたプログラムを䜜成したす。 倧孊教授は、高性胜コンピュヌティングが䟡倀がある方法ず理由を説明したす。 しかし、研究者が爆発物を䜿甚する時期であるこずに気づくずすぐに、爆発物の理解ず爆発物システムの盎接的な䜿甚を仕事で結び付ける少数の「橋」に盎面したす。 倧孊では、孊生は実隓宀や実習でそのような「橋」を芋぀けるこずができたす。 そしお、この資料がただ勉匷しおいない人にずっお有甚であり、BBの䜿甚を開始するのに圹立぀こずを期埅しお、このギャップを埋めようずしたす。 最初に爆発物の簡単な玹介があり、その埌、MATLAB、HPCondorスヌパヌコンピュヌタヌを䜿甚する可胜性が考慮されたす。



高パフォヌマンスコンピュヌティングBBは、蚈算時間を短瞮したり、より倚くのメモリにアクセスしたりする必芁がある堎合に圹立ちたす。 たずえば、プログラムは1週間以内に必芁な蚈算を実行できたすが、明日結果を取埗する必芁がありたす。 このプログラムを郚分に分割し、それぞれを別々のノヌドで実行するず、理論的には、関係するノヌドの数に比䟋しお蚈算を高速化できたす。 しかし、これは理論的にのみですが、実際には、䜕かが垞にこれに干枉したす詳现はここで説明したした 。 ここで、プログラムが倧量のRAMを必芁ずする別のケヌスに蚀及する䟡倀がありたす。 たずえば、コンピュヌタヌには4 GBのRAMしかむンストヌルされおいたせんが、蚈算には少なくずも64 GBが必芁です。 BBシステムでは、特定の容量のメモリが各ノヌドにむンストヌルされたす。 したがっお、各ノヌドで2 GBのメモリが䜿甚可胜な堎合、プログラムを32の郚分に分割し、それぞれを別々のノヌドで実行し、他の郚分ずやり取りし、デヌタを亀換し、最終的にプログラム党䜓が64にアクセスできるようにしたすGBのメモリ。



これらの䟋から、おそらく高性胜コンピュヌティングは、埓来のコンピュヌタヌをはるかに超える仕様を持぀コンピュヌタヌシステムで実行されるコンピュヌティングであるこずがわかりたした。 この抂念は条件付きであり、おそらくより正確な定矩があるかもしれたせんが、私はそれを芋぀けるこずができたせんでした。 䞊列の分散爆薬ずその組み合わせがありたす。



䞊列コンピュヌティングには、実行䞭に耇数の䞊列で盞互䜜甚するプロセスであるプログラムの開発が含たれたす。 たずえば、倪陜電池セルの特性のモデリングには、キャリア茞送、セル内の入射光の䌝播、枩床効果、匵力圧瞮を蚘述する3぀のモデルの盞互䜜甚が含たれたす。 したがっお、キャリア茞送、匵力圧瞮、および入射光の光孊モデルで䜿甚される材料の屈折率は枩床に䟝存し、これらの効果を説明するモデルは蚈算プロセスで盞互䜜甚する必芁がありたす。 蚈算を高速化するために、1぀のノヌドでのキャリアの茞送を蚘述するモデルのコヌド、他のノヌドでの光の䌝播を担圓するコヌド、3番目のノヌドでの枩床モデルなどを実行できたす。 ぀たり、ノヌドは盞互䜜甚する蚈算を䞊行しお実行したす。



分散コンピュヌティングでは、盞互䜜甚しない耇数のノヌドずプロセスを䜿甚したす。 この堎合、非垞に倚くの堎合、同じコヌドが異なるノヌドで実行されたす。 たずえば、倪陜電池の同じセルの䌞びず圧瞮を枩床の関数ずしお評䟡する必芁がありたす。 この堎合、枩床はモデルの入力パラメヌタヌであり、このモデルの同じプログラムコヌドを異なる枩床倀の異なるノヌドで実行できたす。



分散蚈算ず䞊列蚈算のどちらを遞択するかは、蚈算に䜿甚するプログラムコヌドの構成、物理モデル自䜓、および゚ンドナヌザヌの爆発性システムの可甚性によっお異なりたす。 この蚘事の埌半に぀いお





高性胜コンピュヌティングずのナヌザヌむンタラクション


ナヌザヌがBBシステムをリモヌトで䜿甚する堎合、次のこずを行うコンピュヌタヌが必芁です。





ここでの倚くは、ナヌザヌの個人的な奜み、必芁な゜フトりェアの可甚性、およびその他の芁件に䟝存したす。 プログラミング蚀語、皌働䞭のコンピュヌタヌずクラスタヌのオペレヌティングシステム、クラスタヌの線成に䜿甚する゜フトりェアラむブラリず゜フトりェアを遞択できたす。 個人的に、私は垞にMPIずopenMP for Linuxを䜿甚しおCたたはC ++でプログラムを䜜成しようずしたす ここずここでは、これらの高性胜コンピュヌティングのパパずママの䞻題に関する良い蚘事がすでにありたすが、さたざたな理由でこれが垞に機胜するずは限りたせん。 兞型的な状況-䞊叞は金曜日に来お、私たちは緊急に結果が必芁だず蚀いたす。 最埌に、必芁な蚈算甚のプログラムをMATLABで䜜成したす。 たた、結果をより速く取埗するために、このプログラムは月曜日たで組織のMATLABクラスタヌで実行されたす。



ナヌザヌの䜜業コンピュヌタヌのオペレヌティングシステムに関しおは、ほずんどの堎合、BBシステムにむンストヌルされおいる同じオペレヌティングシステムずその配垃キットを䜿甚するのが最も䟿利です。 珟圚、ほずんどのBBシステムはさたざたなLinuxディストリビュヌションを実行しおいたす。 Scientific Linuxがクラスタヌにむンストヌルされおいる堎合、同じシステムを皌働䞭のコンピュヌタヌにむンストヌルする方が簡単です。これにより、今埌コマンドず混同されるこずがなくなりたす。 MATLABベヌスのクラスタヌを䜿甚する堎合、オペレヌティングシステムの遞択は重芁ではありたせん。MATLABで蚘述されたプログラムは、任意のOSもちろん、MATLABのむンストヌルに䜿甚可胜を搭茉したコンピュヌタヌで実行できたす。



MS WindowsファミリヌOSがコンピュヌタヌにむンストヌルされおおり、BBシステムがLinux OS䞊に構築されおいる混合スキヌムを遞択した堎合、リモヌトシステムPuTTYなどに接続するクラむアントず、XサヌバヌたたはすぐにCygwinになりたす。 ロヌカル゜フトりェア管理者は、゜フトりェアの遞択を垞に支揎したす。



重芁な点BBシステムは通垞、むンタラクティブな䜜業実行䞭にデヌタ入力を芁求し、キヌストロヌクやマりス操䜜などの他のナヌザヌアクションを埅぀を必芁ずするプログラムをサポヌトしないか、限定的にサポヌトしたす。 同様に、グラフィカルむンタヌフェむスに関しおは、ほずんどの堎合、その䜿甚は提䟛されおおらず、BBシステムはコマンドラむンからテキストモヌドで䜿甚されたす䟋倖は同じMATLABです。 BBシステムでプログラムを䜿甚する前に、それをデバッグしおから倉換し、BBシステムで実行できるように倉換し、さらに人間の介入なしに蚈算を実行し、結果をファむルに保存するか、別の方法でナヌザヌに転送する必芁がありたす。



䞻な蚈算はただBBシステムで実行される予定であるため、ナヌザヌのコンピュヌタヌパフォヌマンスの芁件は最小限です。 蚈算のステヌタスを監芖し、最小構成のコンピュヌタヌず携垯電話から蚈算を開始および䞭断できたす。



䞀郚のBBシステム


䞀般的なレビュヌ


ほずんどの堎合、スヌパヌコンピュヌタヌ、コンピュヌタヌクラスタヌ、およびグリッドが爆発物に䜿甚されたす。

スヌパヌコンピュヌタヌは、パフォヌマンス、䜿甚可胜なRAM、䜿甚可胜なプロセッサヌ数などのパラメヌタヌの点で、既存のコンピュヌタヌのほずんどを倧幅に超えるコンピュヌタヌシステムです。 それらの詳现に぀いおは、䞖界で最も生産性の高い500台のスヌパヌコンピュヌタヌのリストを参照できたす。



コンピュヌタヌクラスタヌは、利甚可胜なメモリず䜜業に関䞎するプロセッサヌの数を増やすために盞互に察話できるコンピュヌタヌのグルヌプです。 ほずんどの堎合、このようなクラスタヌは研究グルヌプたたは組織内に構築されたす。



グリッドは、さたざたな郜垂や囜に散圚するクラスタヌずスヌパヌコンピュヌタヌのグルヌプです。 たずえば、蚈算タスクをスむスのサヌバヌに転送できたすが、ドむツ、フランス、たたはポヌランドのクラスタヌで実行されたす。 グリッドの最も有名な䟋は、ペヌロッパのEGEEグリッドシステムです。これは、玄4䞇のプロセッサず数ペタバむトのディスクスペヌスを組み合わせたものです。



゚ンドナヌザヌがスヌパヌコンピュヌタヌずクラスタヌを区別するこずは、しばしば困難たたは䞍可胜です。 以䞋に3぀の䟋を瀺したす。



1.スヌパヌコンピュヌタヌが、高速通信ネットワヌクを介しお互いに接続されたコンピュヌタヌのグルヌプず呌ばれるこずは珍しくありたせん。これは、本質的に同じコンピュヌタヌのクラスタヌです。



2.同時に、HPCondor゜フトりェアに基づいお構築されたクラスタヌがありたす。これは、ロヌカルネットワヌク倚くの堎合䜎速ネットワヌク䞊のサヌバヌず察話するコンピュヌタヌのグルヌプでもあり、そのようなクラスタヌをスヌパヌコンピュヌタヌず呌ぶ勇気はありたせん。



3.コンピュヌティングシステム党䜓がネットワヌク党䜓に散圚せず、このシステムナニットに収たるNVIDIAスヌパヌコンピュヌタヌ通垞のオフィスコンピュヌタヌよりも倧きなシステムナニットを持っおいるがありたす。



䟋2ず䟋3をずるず、スヌパヌコンピュヌタヌずクラスタヌの違いは明らかです。 最初ず3番目では、特別なファセットは衚瀺されたせん。この2぀の䟋の䞡方のシステムは、スヌパヌコンピュヌタヌず呌ばれたす。



HPCondorクラスタヌCondor、2012幎以降-HTCondor


このようなクラスタヌを線成するための゜フトりェアは、プロゞェクトペヌゞから無料でダりンロヌドできたす 。 このタむプのクラスタヌは、䜜業コンピュヌタヌずサヌバヌで構成されたす。 Dunordavindは、コメントに察しお重芁な明確化を行いたした。そのようなBBシステムは、叀兞的な意味でのクラスタヌではなく、リ゜ヌスマネヌゞャヌですただし、テキスト党䜓を曞き換えないために、ずにかくクラスタヌず呌びたす。 このようなクラスタヌの利点は、クラむアント゜フトりェアがむンストヌルされおいる通垞のオフィスや研究宀のコンピュヌタヌが䜜業コンピュヌタヌずしお機胜できるこずです。 昌間、これらのコンピュヌタヌは基本的な䜜業に䜿甚できたすが、䜿甚をやめるず蚭定によっお異なりたす、サヌバヌはこれらのコンピュヌタヌで以前に転送されたタスクの実行を開始したす。 このクラスタヌを䜿甚するための前提条件は、ナヌザヌがタスクを転送するコンピュヌタヌにクラむアント゜フトりェアをむンストヌルするこずです。 ぀たり、それらのコンピュヌタヌはクラスタヌの䞀郚でなければなりたせん。 サポヌトされおいるオペレヌティングシステムMS Windows、MacOS、Linux。



プログラムを実行するには、このプログラムを目的のOSの実行可胜コヌドにコンパむルし、必芁なラむブラリずずもにサヌバヌに転送する必芁がありたす。 これは、MATLAB甚に䜜成されたプログラムにも適甚されたす。MATLABに付属のCコンパむラを䜿甚しおコンパむルする必芁もありたす。 このプログラムをクラスタヌで実行するには、プログラムのランタむムの芁件RAMサむズ、オペレヌティングシステムなどおよびこのプログラムで転送されるファむルのリストを曞き留める簡単な構成スクリプトを䜜成する必芁がありたす。 䟋ずしお、これらのファむルの1぀からのテキストを以䞋に瀺したすcost_top.txtず呌びたしょう



universe = vanilla executable = cost_top.bat transfer_input_files = cost_top.exe output = dump.txt error = errdump.txt log = foo.log requirements = (OpSys == "WINNT51") rank = kflops transfer_files = ALWAYS queue
      
      







このファむルは、実行可胜プログラムの名前、クラスタに転送するファむル、プログラムの結果を曞き蟌むファむル、゚ラヌメッセヌゞ、远加メッセヌゞなどの重芁なポむントを「説明」するものです。ノヌドのOSずそのパフォヌマンス、およびファむルを転送するかどうかによっお提瀺される芁件です。



ノヌドで実行されるcost_top.batファむルの内容



 path=c:\windows\system32;c:\windows;c:\windows\system;p:\matlab6\bin\win32 cost_top.exe
      
      







ほずんどの堎合、このスクリプトの最初の行は必芁なパスを環境倉数に远加し、2番目の行は必芁なプログラムを起動するこずを理解するでしょう。



タスクをクラスタヌサヌバヌに転送するには、コマンドラむンで「condor_submit cost_top.txt」ず入力する必芁がありたす。 その埌、タスクはキュヌに入れられ、しばらくするずサヌバヌはクラむアントコンピュヌタヌでタスクを実行する準備が敎いたす。 キュヌでの埅機時間は、各ナヌザヌの優先順䜍ずクラスタヌの負荷に䟝存し、サヌバヌタスクバランシングシステムによっお遞択されたす。



このタむプのクラスタヌには制限がありたす。





MATLABクラスタヌ


MATLAB自䜓がクラスタヌを䜜成できたす 。 これを行うには、適切なラむブラリずサヌバヌDistributed Computing ToolboxずDistributed Computing Serverが必芁です。 珟圚、最新のコンピュヌタヌプロセッサには耇数のコアがあり、MATLABは䜿甚䞭のコンピュヌタヌに基づいお独自のロヌカルクラスタヌを盎接展開できたす。 このクラスタヌ構成は、ロヌカル構成ず呌ばれたす。 スヌパヌコンピュヌタヌやクラスタヌなどのより深刻なBBシステムでプログラムを開始する前にプログラムをテストする必芁がある堎合など、それほど劎力をかけずに蚈算を少しスピヌドアップしたい堎合に䟿利です。



ロヌカル構成に加えお、他の構成がありたす。 たずえば、ロヌカルネットワヌク内のコンピュヌタヌのグルヌプを結合するクラスタヌの堎合、クラスタヌたたはグリッド内のコンピュヌタヌのグルヌプ。 管理者に機䌚があり、怠け者でない堎合、通垞、MATLABクラスタヌをセットアップし、ナヌザヌがそのようなクラスタヌを簡単に䜿甚できるようにトレヌニングコヌスを実斜したす。



MATLABクラスタヌの利点





たずえば、parforを䜿甚しないコヌド



 clear all; Na=4:50; Nc=4:30; for i1=1:length(Na), for i2=1:length(Nc), [out1,out2]=fom(Na(i1),Na(i1),Nc(i2),0) ; end end save FigOM.dat FigOM -ascii save dF.dat dF -ascii exit
      
      







そしお今、parforず4぀のノヌドを䜿甚した同じこず



 clear all; matlabpool open 4 Na=4:50; Nc=4:30; for i1=1:length(Na), parfor i2=1:length(Nc), [out1,out2]=fom(Na(i1),Na(i1),Nc(i2),0) end end matlabpool close save FigOM.dat FigOM -ascii save dF.dat dF -ascii exit
      
      







短所





スヌパヌコンピュヌタヌずグリッド


前述のように、スヌパヌコンピュヌタヌ、コンピュヌティングクラスタヌ、グリッドの違いを芋぀けるのは難しい堎合がありたす。 タヌミナルりィンドりのこちら偎からは、すべお同じように芋えたす。 それらはすべお、BBシステムに倚数のプロセッサずメモリを備えおいたす。 むンストヌルされた゜フトりェアの䞭には、コンパむラずMPIおよびOpenMPラむブラリがありたす。 ノヌドずそのメモリのグルヌプの䜿甚をサポヌトするMATLABおよびその他のプログラムがむンストヌルされる堎合がありたす。



最も䞀般的な操䜜アルゎリズムは次のずおりです。





蚭定ファむルはHPCondorクラスタヌファむルに䌌おいたす。 たずえば、parforを䜿甚しお䞊蚘の䟋を実行するには、次のファむルを䜿甚できたす。



 #!/bin/sh #$ -l h_rt=10:00:00 /usr/local/bin/matlab /home/el/calmap.m
      
      







2行目はこのタスクを完了するのに必芁な最倧時間を瀺し、3行目はナヌザヌが必芁ずするMATLABプログラムコヌドを実行するためにこのシステムで実行する必芁があるコマンドを瀺したす。

MPIラむブラリを䜿甚するプログラムを実行する別のサンプルファむル



 #!/bin/bash #$ -l h_rt=4:00:00 #$ -pe mvapich2-ib 12 # LDFLAGS="-L$HOME/opt/lib -lm" export LDFLAGS CPPFLAGS="-I$HOME/opt/include" export CPPFLAGS LD_LIBRARY_PATH="$HOME/opt/lib:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH PATH=$PATH:$HOME/opt/bin export PATH module add compilers/intel/12.1.15 module add mpi/intel/mvapich2/1.8.1 mpirun -np 12 m-mpi test7.ct
      
      







2行目-蚈算に必芁な最倧時間、3行目-䞊列蚈算の環境名管理者が蚭定および芁求されたノヌド数スクリプトの最埌に-12ノヌドを䜿甚する目的のプログラムを起動したす。



おわりに


広倧さを受け入れるこずは䞍可胜ですが、詊すこずは可胜であり、必芁です。 この蚘事では、初心者ナヌザヌが機胜の範囲を理解し、利甚可胜なものずその䜿甚方法を理解できるように、高性胜コンピュヌティングシステムの抂芁を説明しようずしたした。 ご芧のずおり、スヌパヌコンピュヌタヌやグリッドにアクセスできない堎合でも、MATLABたたは無料のCondor゜フトりェアに基づいお独自のクラスタヌを構築できたす。



psこのメモを補足したり、゚ラヌを芋぀けたりできる堎合は、それに぀いお䞋に曞いおください。 最終的に、それは問題の知識ず理解にのみ圹立ち、これはメモを改善する機䌚を提䟛したす。

pps CUDAテクノロゞヌを䜿甚しお、GPUコアを䜜業に含めるこずでC / C ++およびMATLABでの蚈算を高速化する可胜性はただありたすが、これに぀いお倚くのこずが曞かれおいたす。



All Articles