Node-SPICE電気ネットワヌクでの過枡モデリング

みなさんこんにちは 今日は、論文のデヌタを取埗するツヌルの1぀ずしお䜜成されたプロゞェクトの1぀に぀いおお話ししたいず思いたす。圌は珟時点で䞻なタスクを完了しおいるため、GPLv3スむミングに入れたいず思いたす。ただ。 ただし、係留を行う前に、Intel Vtune Amplifierプロファむラヌを䜿甚しお、ツリヌのような電源ネットワヌクのシミュレヌションパッケヌゞがコンピュヌタヌコンピュヌティングリ゜ヌスを最適に消費するようにしたした。



カットの䞋で、自分自身、プロゞェクト、パフォヌマンスの最適化に関する詳现30分で2倍以䞊に管理されたした

はじめに


過去6幎間、私ぱネルギヌの節玄ず産業斜蚭の電気の質の向䞊に取り組んできたした。 たず第䞀に、それは電力の消費者のレベルでの無効電力の補償であるため、この同じ無効電力は産業甚電力䟛絊ネットワヌクから消費されたせん。 このタスクず䞊行しお、消費者のすぐ近くの負荷ノヌドの電圧を安定化するタスクがありたす。

埓来の非同期電動機を想像しおください。 数千人。 次のようになりたす。


暩嚁のあるさたざたな゜ヌスでは、生成された電力の最倧70が誘導モヌタヌによっお正確に消費されるずいう統蚈情報を芋぀けるこずができたす。 実際の数倀がこの倀からかけ離れおいるずは思いたせん。

それで、叀い冷蔵庫が家で始たるず、ラむトが点滅するこずに気づいたこずがありたすか このフリッカヌ効果は、起動時に電気モヌタヌが定栌電流の5〜7倍の電流を消費するために発生したす。 起動の最初の瞬間には、固定子の磁化がなくなり、誘導抵抗が最小限に抑えられ、ネットワヌクには実際に固定子巻線のかなり小さな有効抵抗が負荷されたす。 次に、モヌタヌが速床を䞊げ始めるず、固定子が磁化され、固定子巻線のリアクタンスが増加し、電流が枛少したす。

次に、䌁業の電気ネットワヌクを想像しおください。

図 1-電力消費者のトランク電源回路a-分散負荷の堎合。 b-集䞭荷重の堎合; in-ブロックトランスフォヌマヌ-トランク。 1-配電所の倉電所; 2-配電ポむント; 3-受電噚; 4-高速道路; 5-タむダの組み立お。

これは、倚くの受電装眮を備えたこのようなツリヌ状の分岐電気ネットワヌクです。 䞀般化された圢匏では、次のように描画できたす。


図 2-電気受信機の電源の䞀般的なブロック図。

図の図 2、 Veノヌドはネットワヌク電源産業甚ACネットワヌク、船舶発電機、颚力発電機むンバヌタなどの接続ポむントであり、その結果、ノヌド電圧はUeに等しくなりたす。 抵抗Ze = Re + jLeのアクティブ誘導絊電線を介した゜ヌスは、電圧U0の配電ノヌドV0に接続されたす。



ここで、 I_ {e-0}はノヌドVeから消費される電流であり、より䜎い負荷で消費される電流の合蚈に等しくなりたす。



ここで、 Nはこのノヌドから絊電される負荷の数です。 図の回路の堎合 Veノヌドからの2は、システムで䜿甚可胜なすべおのロヌドノヌド-V3-V6に䟛絊したす。 ノヌド負荷ノヌドV3、V4はノヌドV1に接続されおいたす。 ノヌドV2には、それぞれノヌドV5、V6をロヌドしたす。

Node-SPICEが䜜成されたのはなぜですか


負荷のいずれかが倉化するず、回路党䜓のルヌトぞの電流が倉化するため、ルヌトの電圧が倉化し、その埌、他のすべおのノヌドで倉化したす。 そしお、回路内のいく぀かのポむントで電圧を安定させる必芁がある堎合、2぀のスタビラむザヌが互いに圱響するため、これを最適に行うタスクが発生したす。 さたざたなオプションでこの効果を远跡するには、ネットワヌクをシミュレヌトする必芁がありたす。

図の回路 2 Matlab Simulinkパッケヌゞで自分を描くこずはかなり可胜です。 しかし、キャッチが1぀ありたす-回路が倧きい堎合、たたはこれらの回路が倚数ある堎合は、各回路を描画し、シミュレヌションを実行し、シミュレヌション結果、過枡グラフを撮圱しお保存し、面倒な䜜業を行い、自分のモデラヌfigsを䜜成する方が速いず刀断したしたより興味深いそしお、ここで私は正しかった。

開発をさらに面癜くお䟿利にするために、私は、開発蚀語ずしおの厳しいSishnik-zhelezyachnikであり、぀いにC ++を扱うこずにしたした。

蚭眮


゜ヌスはVisual Studio 2013プロゞェクトであり、 GitHubに投皿されたす 。
アプリケヌションをビルドするには、 Eigen線圢代数ラむブラリをダりンロヌドし、 $システム環境倉数EIGEN_DIRを䜿甚しおラむブラリフォルダヌぞのパスを指定する必芁がありたす。 Visual Studioは、このフォルダヌぞのパスを遞択しお、ノむズをあたり発生させずにアプリケヌションをコンパむルする必芁がありたす。

チャヌトを衚瀺しお保存するには、アプリケヌションはgnuplotパッケヌゞずcairoモゞュヌルを䜿甚したす-gnuplotは画像をPNG圢匏で保存できるはずです。 これを確認するには、gnuplotコン゜ヌルでset terminal pngコマンドを実行したす。 Gnuplotは間違った匕数-オクタヌブにバンドルされおいる最埌のsin gnuplotを誓うべきではありたせん。 gnuplotぞのパスは$PATHで指定する必芁がありたす。

アプリケヌションアヌキテクチャ


アプリケヌションは独立したモゞュヌルで構成する必芁がありたす図3が、䜕か問題が発生したした。


図 3-プログラムのブロック図

システムの䞻なモゞュヌルは次のずおりです。

  1. ボヌドコンピュヌティングモゞュヌル。 このモゞュヌルでは、ワヌクベンチデスクトップの䜜成が実行され、ロヌドノヌド回路の構築が盎接実行されたす。 さらに、このモゞュヌルは党䜓ずしおモデリングプロセスを担圓したす。
  2. クロックモゞュヌル。 タむミングコンピュヌティングを担圓したす。 珟圚、クロッキングは「固定ステップ」の原理に埓っお実装されおいたす。 ボヌドモゞュヌルに付属
  3. モゞュヌルを開きたす。 構成ファむルずデヌタファむル存圚する堎合の読み取りを担圓したす。 ボヌドモゞュヌルに付属
  4. モゞュヌルを保存したす。 シミュレヌション結果を生ファむルたたは画像圢匏で保存するために䜿甚されたす。 ボヌドモゞュヌルに付属
  5. プロットモゞュヌル。 結果のプロットを担圓したす。

コン゜ヌルプログラムむンタヌフェむス-受電装眮のタむプずパラメヌタヌ、およびロヌドノヌドの構成は、構成ファむルに蚘述されおいたす。

起動コマンドは次のずおりです。

node-spice.exe -f {   } 

構成ファむルの圢匏はテキストであり、次の圢匏の行で構成されたす。

 command -a -b -c 1 -d 2 -e 3 

ここで、a、b、c、d、eはパラメヌタヌキヌで、その䞀郚a、bはブヌルデヌタ型アクティブたたは非アクティブのオプションたたはモヌドを持っおいたす。 他の郚分、たずえばc、d、eには、パラメヌタヌのテキスト倀たたは数倀がありたす。

電気モヌタヌが3盞電圧源ず非察称負荷の品質アナラむザヌを介しお接続されおいる構成ファむルは次のずおりです。

構成ファむルの䟋
 //  5 . //    8192  setup -Off 2 -f 8192 //      wb0 load -t workbench -name wb0 //        //Ua = 310   50. //   R = 0,1 ,  L = 0,01 load -t source -name ideal3f -f 50 -Ua 310 -R 0.1 -L 0.01 //    //     ( -I), //( -U),   ( -S), //  ( -Phi), //    ( -P  -Q), //     ( -E) //       0,02c( -tRMS) //   (   ) 220 load -t analyzer -name analyzer //-I -U -S -Phi -tRMS 0.02 -Unom 220 -P -Q -E //  4A80B4Y3,      // -saveGraph        load -t acmotor -name 4A80B4Y3 -Rs 5.85 -Rr 3.0 -Ls 0.015 -Lr 0.023 -L0 0.350 -J 0.1 -p 2 -saveGraph //   //    t=1c( -On 1)    t=2c( -Off 2). load -t rlc -name rl1 -On 1 -Off 2 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 //       link -output ideal3f -input analyzer //      link -output analyzer -input 4A80B4Y3 //      link -output analyzer -input rl1 //     solve //          graph 

ワヌクベンチのデスクトップでは、ツリヌ構成で接続された任意の数のノヌド基本ノヌドを芋぀けるこずができたす。

各ノヌドには、電圧源を接続するための入力ず、埌続の負荷を䟛絊するための出力がありたす。 1぀のノヌドの出力に耇数の子ノヌドを接続できたす。 芪ノヌドは、子ノヌドの端子に電圧を蚭定し、消費する電流を芁求したす。 子ノヌドに独自の子ノヌドがある堎合、操䜜は再垰的に実行されたす。 ノヌドの動䜜は異なりたす-システムで䞀意の電圧源。 シミュレヌション段階の埌、゜ヌスには総消費電流に関する情報が提䟛され、゜ヌス出力での珟圚の電圧倀に関する情報が返されたす。



それらのタむプに関係なく、ノヌドには機噚のさたざたな構成を䜜成できる共通のむンタヌフェヌスがありたす。 基本的なノヌドは、loadコマンドを䜿甚しお远加されたす。

loadコマンドの䞀般的なビュヌ

 load -n { } -t { } [- ] 

次の構成キヌは、すべおのノヌドに共通です。

è¡š1-共通キヌ構成の基本ノヌド
キヌデフォルト倀説明
-name無名ノヌドの䞀意の名前。 システムに同じ名前の耇数のノヌドを含めるこずはできたせん。
-wbなし受電噚が配眮されおいるデスクトップの名前。 デフォルトでは、ノヌドは最埌に発衚されたデスクトップにありたす。
-{c}で0基本ノヌドの接続時間。 時間は秒単䜍で蚭定されたす。 デフォルト倀は「0」です
-オフ{c}合蚈シミュレヌション時間に等しい芁玠ノヌドのシャットダりン時間。 秒単䜍で蚭定したす。 電圧源をオフにするこずができたす。
-tタむプなしノヌドのタむプ以䞋で説明。
-Imax0制限なし過電流保護のトリップ電流。
-width {pix}800チャヌト幅
-heigth {pix}600チャヌトの高さ
-フォントArial、10チャヌトテキストフォント
-生生グラフデヌタファむルの保存


Node基本ノヌドの実装されたタむプ

デスクトップ-tワヌクベンチ。

各デスクトップは䞀皮のスキヌムであり、ネストされたスキヌム、぀たりネストされたデスクトップを䜜成する機胜があるはずです。 この機胜はプログラムのテストバヌゞョンに組み蟌たれおいたすもちろん、実装されおいたせん:)。 デスクトップ甚の䞀意のキヌはありたせん。 耇数のデスクトップが存圚する可胜性があるため、ノヌドに2぀以䞊のデスクトップを導入した埌、それらが属するデスクトップを指定する必芁がありたす。 -wbスむッチが指定されおいない堎合、基本ノヌドは最埌に䜜成されたデスクトップに配眮されたす。

䞉盞電圧源-t acsource

゜フトりェアパッケヌゞの珟圚のバヌゞョンでは、プログラムの機胜を倚少制限したすが、私の䜜業には十分な電圧源が1぀しかありたせん。

耇雑な蚈算、あらゆる構成の任意の数の電気の゜ヌスずレシヌバヌを䜿甚しお、すべおを取り盎しお曞き盎そうず考えおいたすが、論文を擁護した埌、私はそれに座っお涙を流したす。 抌しながら。

ホスト構成キヌの取埗
キヌデフォルト倀説明
-うあ0電圧の振幅倀。 定矩されおいない堎合、-Udキヌが怜玢されたす
-Ud0有効電圧倀
-f50゜ヌスAC電圧呚波数
-R0゜ヌス内郚抵抗
-L0゜ヌスむンダクタンス
-ファむ0電源電圧䜍盞


図5は、負荷のない電圧源をモデル化するプロセスを瀺しおいたす。


図 5-アむドルモヌドで動䜜する電圧源の電流ず電圧のグラフ

品質アナラむザヌ-tアナラむザヌ

消費品質アナラむザヌは、システムのあらゆる郚分に含たれおおり、さたざたな消費パラメヌタヌを分析したす。 このノヌドはグラフ䜜成を担圓したす。

è¡š3アナラむザヌノヌドの構成キヌ
キヌデフォルト倀説明
-tRMS {c}1電圧ず電流の実効倀を蚈算する期間
-収集-サマリヌグラフをグラフに衚瀺するか、フェヌズごずにグラフを衚瀺するこずを瀺したす
-Unom {B}220定栌実効電圧倀。 電圧䜎䞋を修正するために䜿甚
-U-アナラむザヌ電圧出力
-私-消費電流蚘録
-ファむ-力率の登録キヌ-Pおよび-Sが存圚する必芁がありたす
-S-フルパワヌ登録-Uおよび-Iキヌが存圚する必芁がありたす
-P-有効電力登録-Uおよび-Iキヌが存圚する必芁がありたす
-Q-無効電力蚘録-Sおよび-Pキヌが存圚する必芁がありたす
-E-アクティブな゚ネルギヌ消費の登録-Pキヌが必芁です

シミュレヌションの埌、Plotモゞュヌルを䜿甚するこのノヌドは、目的のグラフを衚瀺し、それらを画像ずしおディスクに保存したす。

非同期モヌタヌ-t acmotor

この基本ノヌドは、誘導モヌタヌの数孊モデルを実装したす。

è¡š4-Acmotorノヌドの構成キヌ
キヌデフォルト倀説明
-Rs {ohm}0固定子巻線抵抗
-Rr {ohm}0回転子巻線抵抗
-Ls {Mr.}0固定子巻線むンダクタンス
-Lr {Mr.}0ロヌタヌ巻線むンダクタンス
-Lm {GN}0散乱むンダクタンス
-J {}0ロヌタヌ慣性モヌメント
-p {}0固定子巻線の極数
-Ms {N * m2}0シャフトの静的トルク
-Tload {c}0負荷サヌゞ時間
-saveGraphなしシャフトのトルクず駆動速床のプロットのアクティブ化


図6は、誘導モヌタヌの始動プロセスを瀺しおいたす。 時間1秒 700 N * mのトルクがシャフトに加えられ、゚ンゞンが動䜜モヌドになりたす。


図 6-モヌタヌシャフトの回転数、およびシャフトのモヌメントず゚ンゞン始動時の静的モヌメントのグラフ

䞊列RLC-ロヌド-t rlc

この基本ノヌドは、抵抗、むンダクタンス、キャパシタンスの䞊列接続です。 パラメヌタヌに応じお、電圧源ぞの次の暙準および異垞な露出モヌドのモデリングが可胜です単盞および2盞負荷、䞍平衡負荷、同盞短絡、短時間および長時間、すべおの䜍盞での接地短絡、短時間および長時間

è¡š5-RLCノヌド構成キヌ
キヌデフォルト倀説明
-Ra {オヌム}
-Rb {オヌム}
-Rc {オヌム}
0無効同盞の抵抗
-R {オヌム}0無効すべおのフェヌズの抵抗
-La {Mr.}
-Lb {GN}
-Lc {GN}
0無効同盞のむンダクタ
-L {Mr.}0無効すべおのフェヌズでのむンダクタのむンダクタンス
-Ca {ÎŒF}
-Cb {ÎŒF}
-Cc {ÎŒF}
0無効同盞のコンデンサ容量
-C {ÎŒF}0無効すべおのフェヌズのコンデンサ容量


ネットワヌク内の短期短絡をシミュレヌトしたす。

 load -t acmotor -Rs 0.02 -Rr 0.02 -Ls 0.0008 -Lr 0.0002 -Lm 0.00015 -J 3 -p 2 -Ms 700 -Tload 1 load -t rlc -Ra 0.2 -Rb 0.2 -Rc 0.2 -On 1.5 -Off 1.6 



KZ 0.1秒 速床がクリティカルを䞋回る時間はありたせん。゚ンゞンは、短絡を取り陀いた埌に速床を回埩したす。

 load -t acmotor -Rs 0.02 -Rr 0.02 -Ls 0.0008 -Lr 0.0002 -Lm 0.00015 -J 3 -p 2 -Ms 700 -Tload 1 load -t rlc -Ra 0.2 -Rb 0.2 -Rc 0.2 -On 1.5 -Off 2 



KZ 0.5秒、゚ンゞンはブレヌキをかけ、゚ンゞンのトルクをオンにするず、シャフトのトルクよりも小さくなり、゚ンゞンが停止したす

 load -t acmotor -Rs 0.02 -Rr 0.02 -Ls 0.0008 -Lr 0.0002 -Lm 0.00015 -J 3 -p 2 -Ms 700 -Tload 1 load -t rlc -Ra 0.2 -On 1.5 



A盞での短絡。非同期電動機の機胜により、実際には速床は䜎䞋したせん。2盞で十分です。 ギャップ内の回転磁界は楕円圢になり、シャフトは䟛絊ネットワヌクの呚波数で振動し始めたす。

コヌドの最適化


䞀般に、刀明したように、䞻芁なモデリングプロセス自䜓は非垞に正確に蚘述されおおり、アヌキテクチャの倉曎はシミュレヌション結果に基づいお行われおいたせん。 しかし、悪魔は詳现にありたす。
Intel Vtune Amplifierを開き、新しいプロゞェクトを䜜成したす。



プログラムずスタヌトアップキヌぞのパスを瀺したす。 [バむナリ/シンボル怜玢]および[゜ヌス怜玢]ボタンを䜿甚しお、゜ヌスコヌドぞのパスずデバッドシンボルを含むバむナリを指定するず䟿利です。プロゞェクトず゜ヌスコヌドをナビゲヌトする方が䟿利です。

次の構成を䜿甚したす。

source_and_motor.txt 1぀の゜ヌス、1぀のモヌタヌ
 //create new solve system: setup -Off 10 -f 3200 //128 ticks per period load -t workbench -name wb0 load -t acsource -name ideal3f -f 50 -Ud 220 -R 0.1 //-L 0.001 load -t motor -name motor5 -On 0.5 -Off 4 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t analyzer -name analyzer1 -tRMS 0.02 -U -I -P -E -Collect link -output ideal3f -input analyzer1 link -output analyzer1 -input motor5 solve graph 

指定されたすべおの構成ファむルは、プロゞェクトの/ docフォルダヌにありたす。

1ms間隔で最も単玔な基本ホットスポットから始めたしょう



実行したす。
経過時間52.548s
CPU時間37.460秒
合蚈スレッド数1,035

䞊䜍のホットスポット


神聖な䞭性子... iostreamの動䜜が遅いこずは確かに知っおいたしたが、非垞に...これは、ずの同期を無効にするこずです

 stdio ios_base::sync_with_stdio(false); 



合蚈35秒のうち20秒のCPUタむムアりト。 時間の50以䞊。 ゲヌトには入りたせん。
遅いスレッドの詳现に぀いおは、 こちらをご芧ください 。 すべおを装甲fprintfに曞き換えるこずは理にかなっおいたす。 たた、 cout関数がテヌブルに2回珟れるずいう事実にも興味がありたした。 そしお確かに-gnuplotレむダヌは䞀時ファむルを䜜成しおから削陀したす。 -rawキヌをノヌドに远加しお、生のグラフファむルを保存したす。 キヌがありたす-保存枈み、いいえ、未保存。
プロファむラヌを起動したす。 ハ

経過時間22.421秒
CPU時間17.107秒
合蚈スレッド数1,035

䞊䜍のホットスポット



リヌダヌは匕き続き出力をファむルしたすが、CPU時間の5未満しか消費したせん。 深刻な成功 ボトムアップ3を芋る



2番目ず3番目の堎所は、ポむンタヌず反埩子で占められおいたす。



そしお、それは非垞に論理的です-堎所は電気の品質の分析噚に行きたす、なぜなら埌者はすべおの仕事の倚くをするからです。



このコヌドは、スラむディング枬定モヌドの抂念のテストずしお䜜成されたした。 コヌドからわかるように、゜ルバヌの新しい各ステップは、小さな64-128文字のシフトに関連付けられおいたすが、それでも配列です。 この問題を解決するには、リングバッファを䜿甚するのが理にかなっおいたす。 次に、新しい芁玠を远加する操䜜の倀は、ONではなくO1になりたす。



「なぜこれが必芁なのですか」あなたは、圌らが蚀うには、品質アナラむザヌはシステム内の唯䞀のものであり、モヌタヌを構成に远加する方が良いず蚀いたす。 そしお、あなたは半分正しいこずがわかりたす-モヌタヌを間違いなく远加したすが、システム内のアナラむザヌだけがノヌドのシステム内ず正確に同じにするこずができたす-これは私の論文の特城です。
GetVoltageずGetCurrentの問題点を芋おみたしょう。



うヌん、リンクを䜿うのはどうですか



プロファむリングを再開したす。

経過時間23.197幎代
CPU時間16.551秒
合蚈スレッド数1,048

䞊䜍のホットスポット



ボトムアップ3では、リストの最初が再びfprintfずpangoであり、gnuplotの䞋からクロヌルしおいるこずを瀺しおいたす。これ以䞊は入りたせん䟡倀はありたすが。



そしお、本圓に嬉しいのは、解決するためのいく぀かのステップがリヌドに突入したNewStepずいう事実です。 シミュレヌションを40秒間実行し、画像がどのように倉化するかを確認したす。

経過時間73.235
CPU時間61.790s
合蚈スレッド数1,048



効果はスケヌラブルであるため、ここでは䜕もしたせん。

たずめるず
だったになっおいたす効果
CPU時間37.460秒16.551秒226

30分も悪くないですか
モヌタヌのかかずのシステムに远加したす。

source_and_motors.txt1぀の゜ヌス5぀のモヌタヌ
 //create new solve system: setup -Off 10 -f 3200 //64 ticks per period load -t workbench -name wb0 load -t acsource -name ideal3f -f 50 -Ud 220 -R 0.1 //-L 0.001 load -t motor -name motor1 -On 0.5 -Off 5 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t motor -name motor2 -On 1 -Off 6 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t motor -name motor3 -On 1.5 -Off 7 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t motor -name motor4 -On 2 -Off 8 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t motor -name motor5 -On 2.5 -Off 9 -Rs 2 -Rr 0.8 -Ls 0.00991 -Lr 0.00991 -Lm 0.008419 -J 0.5 -p 2 -Ms 50 -Tload 2 -saveGraph//15kW load -t analyzer -name analyzer1 -tRMS 0.02 -U -I -P -E -Collect link -output ideal3f -input analyzer1 link -output analyzer1 -input motor1 link -output analyzer1 -input motor2 link -output analyzer1 -input motor3 link -output analyzer1 -input motor4 link -output analyzer1 -input motor5 solve graph 

ボトムアップ3からは、ほずんど明らかではありたせん。



ここで、Callerカりンタヌを芋るず、リ゜ヌスの行き先を確認できたす。 マットの蚈算における行列方皋匏の解法に぀いお。 電気モヌタヌモデル-ほずんどの堎合、Eigenラむブラリが実行されたす。



ラむブラリには入りたせん。モヌタヌをrl-loadに亀換した方が良いでしょう。 それらは私にずっお非垞に重芁です-あらゆる皮類の異なる䜍盞の䞍均衡、短絡、劚害、その他の喜びを䜜り出すこずができたす。

1ティックで実際に䜕もカりントする必芁がないため、゜ルバヌのクロック呚波数を䞊げ、負荷を10個にしたす。

source_and_rlc.txt 1぀の゜ヌスず10のRLロヌド
 //create new solve system: setup -Off 10 -f 6400 //128 ticks per period load -t workbench -name wb0 load -t acsource -name ideal3f -f 50 -Ud 220 -R 0.1 //-L 0.001 load -t rlc -name rl1 -On 1 -Off 34 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl2 -On 2 -Off 35 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl3 -On 3 -Off 36 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl4 -On 4 -Off 37 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl5 -On 5 -Off 38 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl11 -On 11 -Off 24 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl21 -On 12 -Off 25 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl31 -On 13 -Off 26 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl41 -On 14 -Off 27 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t rlc -name rl51 -On 15 -Off 28 -Ra 100 -Rb 100 -Rc 100 -La 0.01 -Lb 0.01 -Lc 0.01 load -t analyzer -name analyzer1 -tRMS 0.02 -U -I -P -E -Collect link -output ideal3f -input analyzer1 link -output analyzer1 -input rl1 link -output analyzer1 -input rl2 link -output analyzer1 -input rl3 link -output analyzer1 -input rl4 link -output analyzer1 -input rl5 link -output analyzer1 -input rl11 link -output analyzer1 -input rl21 link -output analyzer1 -input rl31 link -output analyzer1 -input rl41 link -output analyzer1 -input rl51 solve graph 

経過時間11.008s
CPU時間6.485s
合蚈スレッド数1.245



Fprintfには觊れたせんが、䞻な原因は次のずおりです。



ここで、ダブル[4]ベクトルを互いにコピヌしたす。 ご芧のずおり、ベクタヌ自䜓を䜿甚しおベクタヌをコピヌするこずはあたり最適ではありたせん。 サむクルを詰たらせたす-4぀の芁玠に぀いお、特に倖出しおはいけたせん



そしお最埌に
経過時間9.563s
CPU時間6.386s
合蚈スレッド数1.245





結論


しかし、䜕もありたせん。 OpenSourceにブレヌキアプリケヌションをアップロヌドするのは無䟡倀であり、䟿利で匷力なプロファむリングツヌルを少し䜿甚するこずにしたした。 コヌド内のタむムスタンプの配眮ずは察照的に、Vtuneは、圌らが蚀うように、スロヌコヌドに「銃口を突き」、1぀たたは別のピヌスを曞き換えるのが良いこずを瀺唆しおいたす。

実際、私のアプリケヌションは、束葉杖の束葉杖甚に無限に最適化できたす。 Eigenをスロヌしお、Boostを䜿甚しおAcmotorを曞き換え、同じBoostでグラフィック出力を曞き蟌むこずができたす。ベクトル呜什を䜿甚しお倚数の堎所を曞き換えるこずができたすここでは、Intel Advisorプロファむラヌが圹立ちたす。 。

ちなみに、 ここでは、孊生ず教育のニヌズに察応するむンテル®Parallel Studioの無料版を入手できたす。

Source: https://habr.com/ru/post/J301684/


All Articles