JP5888782B2 - 連立一次方程式の演算処理システム - Google Patents

連立一次方程式の演算処理システム Download PDF

Info

Publication number
JP5888782B2
JP5888782B2 JP2012122263A JP2012122263A JP5888782B2 JP 5888782 B2 JP5888782 B2 JP 5888782B2 JP 2012122263 A JP2012122263 A JP 2012122263A JP 2012122263 A JP2012122263 A JP 2012122263A JP 5888782 B2 JP5888782 B2 JP 5888782B2
Authority
JP
Japan
Prior art keywords
array
zero
decomposition
processing system
simultaneous linear
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2012122263A
Other languages
English (en)
Other versions
JP2013246791A (ja
Inventor
力道 米澤
力道 米澤
琢 野田
琢 野田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Central Research Institute of Electric Power Industry
Original Assignee
Central Research Institute of Electric Power Industry
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Central Research Institute of Electric Power Industry filed Critical Central Research Institute of Electric Power Industry
Priority to JP2012122263A priority Critical patent/JP5888782B2/ja
Publication of JP2013246791A publication Critical patent/JP2013246791A/ja
Application granted granted Critical
Publication of JP5888782B2 publication Critical patent/JP5888782B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Complex Calculations (AREA)

Description

本発明は連立一次方程式の演算処理システムに関し、特に非零構造の同じ大規模疎行列を係数行列にもつ連立一次方程式をLU分解に基づく直接法で複数回解く場合に適用して有用なものである。
電力系統における各種異常現象、電力品質などの解析のため、瞬時値解析に対するニーズが高まってきている。かかる瞬時値解析における求解プロセスは、一般に連立一次方程式として表現される回路方程式を行列として取り扱い、LU分解など効率的な行列演算手法を活用することで高速化を行う。特に、回路方程式から得られる行列は、その要素の多くが零の疎行列であり、この特徴を活用した演算手法(疎行列演算手法)を用いることで、一層の高速化が図られている。
疎行列は通常、非零要素のみを記録するため、格納されるデータの行番号・列番号は連続していない。このため、疎行列のLU分解では、非零要素の探索に一定の処理時間を要する。
ここで、基本的な疎行列の演算手法について説明しておく。疎行列の演算手法は、直接法と反復法に大別されるが、瞬時値解析で用いられるのは直接法である。直接法は、「LU分解」、「前進代入」、「後退代入」からなり、これに加えて「順序付け」と呼ばれる前処理が必要となる。また、実装の観点からは、「データ格納方法」も重要である。
瞬時値解析では、解くべき回路方程式が次式の連立一次方程式で表される。
ただし、AはサイズがN×Nの正方行列、b、xは要素がN個の列ベクトルであり、Aとbを既知として与え、xを未知として求める。瞬時値解析では、係数行列であるAの要素の多くが零となり、このような行列を疎行列と呼ぶ。以下、Aが疎行列である場合に、(1)式を直接法により解く場合について概説する。まず、行列のLU分解について説明する。
(1)式のAを下三角行列Lと上三角行列Uの積に分解することをLU分解と呼ぶ。
Aの要素を(3)式のように書くとき、LとUはそれぞれ(4)式、(5)式のように表わすことができる。
具体例として、Aのサイズが3×3の場合について考えると、(2)式は、(6)式のように表わされる。
上式(6)において、右辺の積を展開して各要素を等しいと置き、UとLについて整理すると(7)式のように表わされる。
(7)式において、各式の計算は、いずれも自身より上に書かれた式で計算した値の代入だけで行うことができる。つまり、第1番目の式から順に計算を行うことができる。これはAのサイズがN×Nである一般的な場合にも成立し、LとUの各成分はそれぞれ次式(8)、(9)により計算することができる。
瞬時値解析において、素子の値が変化する時変素子や、非線形素子が回路中に存在しない場合、(1)式の回路方程式で計算時間ステップごとに変化するのはbのみであり、Aは変化しない。すなわち、演算の最初にAを一度だけLU分解しておけば良く、各計算時間ステップの解xは、変化するbに対して前進代入と後退代入を行うだけで求めることができる。なお、前進代入と後退代入に関するここでの詳細な説明は省略する。
同様に、回路に時変素子および非線形素子が存在する場合でも、時変素子の値が変化せず、折れ線で表現された非線形素子の動作区間が変化しない時間ステップにおいては、Aの値は変化しないため、前進代入と後退代入だけで解xを求めることができる。
このように、(1)式の求解過程をLU分解と前進・後退代入の2つのステップに分けることにより、次回以降の求解において、回路中の素子の値が変化しない場合はLU分解を省略することができ、計算効率を向上することができる。
ただ、実際の回路では、係数行列を構成するAの係数が変わることも多く、この場合には、都度LU分解をやり直す必要がある。なお、前進代入と後退代入に関するここでの詳細な説明は省略する。
行列Aが疎行列の場合、全ての要素を記録するのではなく、非零要素のみを記録することでメモリ容量を節約できる。ただし、その記録方法には、計算中に効率よく特定の行列要素を読み出せる工夫が必要になる。その手法としては、従来より行索引法とスレデッド・リスト法と呼ばれるものが知られているが、ここではスレデッド・リスト法について概説する。
スレデッド・リスト法では、5つの配列を用いて1つの行列を表現する。同手法により図7に示す5×5行列を格納したときの各配列の内容を表1に示す。
表1において、配列VALは、1〜5番地(行列のサイズがN×Nのときは1〜N番地)まで使用せず、6番地目から行列Aの非零要素を格納する。配列IROWは各要素の行番号、配列JCOLは各要素の列番号を格納する。配列IPTは、1〜5番地までは各列で最も上に位置する要素の番地を格納し、6番地目以降には、行列の列を上から下に見たとき、ある非零要素の次に存在する非零要素の番地を格納する。下にデータが存在しない場合は、データを格納しない。また、配列IPTと同じ考え方で、行を左から右に見た配列がJPTである。このように、データそのものを格納するVAL以外に、IROW、JCOL、IPT、JPTを用いることで、VALに格納された各データの位置を探索でき、(8)式、(9)式の計算を効率良く行うことができる。なお、IPTとJPTで各要素の位置関係を表しているため、LU分解の過程でフィル・インが発生しても、表1の末尾に新たな番地を追加し、IPT、JPTの一部を修正することで、新たな行列構造を表すことができる。
かかる疎行列のLU分解の過程を実際にプログラムとして実装する際には必然的にデータ探索のための処理が必要になる。ここで、図8に示す9×9行列を用いて、LU分解の実装において発生する、従来技術におけるデータ探索のための処理について説明する。
この場合の行列のLU分解の過程において、7行6列目の要素l76を求める場合、その式は(9)式より、
上式(10)の右辺の下線部(第3,4,6項)は、乗算の2つの値のうちどちらか(もしくは両方)が零であるため、その積も零となる。疎行列のLU分解では零となるこれらの項の計算を行わず、非零のデータだけを計算に用いることで、全ての要素を計算する場合よりも少ない手順でLU分解を実現することができる。
一方、疎行列は通常、行索引法やスレデッド・リスト法といった専用のデータ格納方式で取り扱うため、Aを(8)式、(9)式を用いてLU分解するとき、データの探索が必要となる。
例えば(10)式の計算において右辺の括弧内の第2項のl7116は、図8を参照すれば、いずれも非零となっていることが直ちにわかり、その積の演算を行う。
しかしながら、従来のスレデッド・リスト法によりデータが格納されている場合、プログラム実装上は、7行目の最も左の要素が1列目のデータであるかどうか、また6列目の最も上の要素が1行目のデータであるかどうかは、配列IROW、JCOLを確認しないとわからない。同様に、(10)式の右辺の括弧内の第3項のl7226は、図8を参照するとu26が零であることが判断できるため、計算を行わない。しかしプログラム実装上では、6列目の上から2つ目の要素の行番号が2より大きい、すなわち、u26が存在しないことを確認して初めて、l7226の計算が不要であることを判断できる。図8に示す場合において、本質的に必要な計算は手順番号を二重丸で囲んだ3手順のみであるが、データの探索のため余計に10手順が必要となる。このように、データ探索処理に一定の計算コストがかかるため、LU分解の実装手法やデータ格納方法には、さらなる改善の余地があると考えられる。上述の如きデータ探索処理に要する時間は、係数行列が大きくなればなるほど、また係数が変更されLU分解のやり直し回数が増えれば増えるほど、顕著に長くなる。
連立方程式として回路方程式を行列として取り扱い、LU分解など効率的な行列演算手法を活用することで高速化を行う場合において、一連の求解手順をプログラム(ソースコード)として生成し、その処理を効率化するコード生成手法を提案する公知技術として、例えば非特許文献1および非特許文献2に開示するものがある。
かかる非特許文献1および非特許文献2に提案されたコード生成手法は、高速化の効果が非常に高いことが知られているが、幾つかの課題も存在する。第一に、計算実行時にコンパイラ環境が必要であり、一般的なユーザーが利用する汎用解析プログラムとしては実用的ではない。第二に、回路を変更するたびにプログラムを生成し直す必要があり、その生成にも一定の時間を要することから、結果として迅速な解析が難しい。第三に、非線形素子など、計算中に値が動的に変化する回路素子によって、行列の対角要素が零になる可能性があり、その場合、途中で計算が不可能になる。
以上の理由から、電力系統の瞬時値解析プログラムでは、これまでにコード生成手法が採用された例はない。このようにコード求解プログラムにおいても、LU分解の実装手法やデータ格納方法には、さらなる改善の余地がある。
F. G. Gustavson, W. Liniger and R. Willoughby, "Symbolic Generation of an Optimal Crout Algorithm for Sparse Systems of Linear Equations," Journal of the ACM, Vol. 17, No. 1, pp. 87-109, 1970. I. S. Duff, A. M. Erisman and J. K. Reid, Direct Methods for Sparse Matrices, Oxford Univ. Press, 1986.
本発明は、上記従来技術に鑑み、疎行列を複数回LU分解する場合に適用して有用な、疎行列を係数行列とし、LU分解を伴う連立一次方程式の求解プロセスにおける処理時間を短縮することができる連立一次方程式の演算処理システムを提供することを目的とする。
上記目的を達成する本発明の第1の態様は、
非零構造が一定の疎行列を係数行列とし、前記疎行列の係数が変化する毎にLU分解を行う連立一次方程式の演算処理システムであって、
前記疎行列の全ての非零要素データ、前記疎行列における前記各非零要素が格納された行列中の位置を示す情報を複数の配列に格納し、これら複数の配列を参照して前記疎行列のLU分解を行い、
最初に前記疎行列のLU分解を行うときに、
前記疎行列の全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、各非零要素に関してその非零要素のLU分解に必要な非零要素との組み合わせの数と各組み合わせに含まれる二つの非零要素の格納位置を前記各非零要素に関してそれぞれ前記複数の配列とは別の配列に格納し、
その後前記疎行列のLU分解を行って所定の計算を行う一方、
前記疎行列の前記係数のいずれかが変化したことが検出される毎に、前記複数の配列及び前記別の配列を参照して前記係数が変化した前記疎行列のLU分解を行って所定の計算を行うことを特徴とする連立一次方程式の演算処理システムにある。
本発明の第2の態様は、
第1の態様に記載する連立一次方程式の演算処理システムにおいて、
前記複数の配列は少なくとも第1〜第2の配列を有するとともに、前記別の配列が第3の配列を有するとともに、
第1の配列は、番地に前記各非零要素を対応付けて格納する配列であり、
第2の配列は、前記疎行列における前記各非零要素が格納された行列中の位置を示す情報を格納する配列であり
第3の配列は、前記最初のLU分解の後に入力され、各非零要素に対し、その後のLU分解を行わせるために必要な非零要素との組み合わせの数と各組み合わせに含まれる二つの非零要素の格納位置を格納する配列であることを特徴とする連立一次方程式の演算処理システムにある。
本発明の第3の態様は、
第2の態様に記載する連立一次方程式の演算処理システムにおいて、
前記第3の配列は、二種類の配列からなり、
一方の配列には、前記各非零要素に対応する番地に他方の配列に記録された前記各非零要素の非零組み合わせ情報の先頭番地が記録され、
他方の配列には、前記各非零要素に対応する非零要素の組み合わせの個数nが記録されるとともに、n組の非零要素の組み合わせ要素の前記第1の配列の番地が記録されていることを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、第3の配列を用いて、LU分解を行うとき、前記個数nを読み込んだ後、続く2つの番地に示された非零要素の積を該当する第1の配列の値から差し引くという処理をn回繰り返すことにより、(8)式もしくは(9)式の分子を算出することができる。ちなみに、後述する表3の6番地の非零要素の場合は、IROW=2、JCOL=3であるので、u23の計算に相当する。
本発明の第4の態様は、
第2または第3の態様に記載する連立一次方程式の演算処理システムにおいて、
前記第1の配列は、LU分解前の非零要素の配列と、LU分解後の非零要素の配列とを有するものであることを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、LU分解後の非零要素をLU分解前の非零要素の配列に上書きしていくのではなく、LU分解後の非零要素の配列に書き込んでいくことにより、疎行列の一部の非零要素の値が変わった場合にはLU分解前の非零要素の配列の対応する部分の値だけを変更して、LU分解を再実施することができる。
本発明の第5の態様は、
第2〜第4の態様の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
前記第2の配列は、各非零要素の行番号を格納する一方の配列と、各非零要素の列番号を格納する他方の配列とを有することを特徴とする連立一次方程式の演算処理システムにある。
本発明の第6の態様は、
第2〜第5の態様の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
前記複数の配列は、さらに第4および第5の配列を有し、
第4の配列は、各列方向に関する各非零要素の番地の情報を格納する配列であり、
第5の配列は、各行方向に関する各非零要素の番地の情報を格納する配列であることを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、特定の行列に存在する非零要素を、上記第4の態様の場合よりも、さらに迅速に検索し得る。
本発明の第7の態様は、
第6の態様に記載する連立一次方程式の演算処理システムにおいて、
前記第4の配列は、1〜N番地(前記疎行列がN×Nの行列である場合)までは各列で最も上に位置する非零要素の番地を格納し、(N+1)番地目以降には、行列の列を上から下に見たとき、ある非零要素の次に存在する非零要素の番地を格納するとともに、下にデータが存在しない場合は、データを格納しない構造とし、
第5の配列は、前記第4の配列と同様の考え方で、行を左から右にみた場合の構造としたことを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、特定の行列に存在する非零要素を、上記第4の態様の場合よりも、さらに迅速に検索し得るばかりでなく、特定の行列に存在する非零要素配列を、上記第5の態様の場合よりも、さらに具体的な構成とすることができる。
本発明の第8の態様は、
第6または第7の態様に記載する連立一次方程式の演算処理システムにおいて、
前記複数の配列は、さらに第6および第7の配列を有し、
第6の配列は、各列を下から上に見たときに、ある非零要素の次に存在する非零要素の番地を格納するものであり、
第7の配列は、各行を右から左に見たときに、ある非零要素の次に存在する非零要素の番地を格納するものであることを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、特定の行列に存在する非零要素を、上記第5または第6の態様の場合よりも、さらに迅速に検索し得る場合がある。
本発明の第の態様は、
第2〜第の態様の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
前記複数の配列は、さらに第8の配列を有し、
第8の配列は、前記疎行列の対角要素の番地を格納する配列であることを特徴とする連立一次方程式の演算処理システムにある。
本態様によれば、LU分解および後退代入で頻繁に参照される対角要素を専用の配列によって効率的に提供することができるので、前記参照処理を効率化することができる。
本発明の第10の態様は、
第1〜第の態様の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
疎行列の係数の変化が検出された場合には、その部分に識別のためのフラグを立てておくことを特徴とする連立一次方程式の演算処理システムにある。
本発明によれば、疎行列のLU分解を行うときに、疎行列の全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、特定の非零要素に紐付けされた組み合わせに関するデータを参照しつつLU分解を行うようにしているので、積算結果が非零となる要素同士のみを抽出した演算を行えば良く、演算時間を飛躍的に短縮することができる。
また、疎行列の係数のいずれかが変化した場合には、同様の探索を行うとともに、特定の非零要素に紐付けされた組み合わせに関するデータを各非零要素に関してそれぞれ更新して疎行列のLU分解を行って所定の計算を行うようにしたので、係数の変更回数が多ければ多いほど、演算時間の短縮効果は顕著になる。
さらに、本発明では、プログラムを生成しないためコンパイルが不要であり、手順の記憶は解析プログラムの実行中に行うため、非常に高速である。また、対角要素が零になった場合も、計算手順を変更することで対応可能である。手順の記録のために一定量のメモリ容量を必要とするが、これについては現在のPC環境で十分対応可能な容量である。
本発明の実施の形態に係る連立一次方程式の演算処理システムを示すブロック図である。 図1の演算処理システムをコンピュータで構築した場合のコンピュータのブロック図である。 本発明の実施の形態に係るLU分解を概念的に示す説明図である。 本発明の実施の形態に係るLU分解の対象となる行列の一例を示す図で、(a)が順序付け後の行列を示す説明図、(b)がLU分解後の行列を示す説明図である。 従来技術に係るLU分解の手順を示すフローチャートである。 本発明の実施の形態に係るLU分解の手順を示すフローチャートである。 行列(5×5)の一例を示す説明図である。 従来技術に係るLU分解を概念的に示す説明図である。
以下、本発明の実施の形態を図面に基づき詳細に説明する。
図1は本発明の実施の形態に係る連立一次方程式の演算処理システムを示すブロック図である。同図に示すように、演算処理システムIは、入力装置1および出力装置2とともに、回路方程式設定部3、非零要素組み合わせ探索部4、組み合わせデータ記憶部5、LU分解部6、係数変更検出部7、演算処理部8を有する。かかる演算処理システムIは図2に示すようなコンピュータで好適に構築し得る。このコンピュータには、図2に示すように、CPU11、RAM12、ROM13、ハードディスク14等の記憶手段を備え、キーボードや記憶媒体読み取り装置などの入力装置1と、ディスプレイ、プリンタ等の出力装置2が接続されている。
回路方程式設定部3には、解析対象となる回路の連立方程式が行列式の形態で設定されている。すなわち、当該回路の係数行列となる疎行列である(1)式の行列Aおよびbが設定されている。非零要素組み合わせ探索部4は、行列Aの全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、特定の非零要素に紐付けされた前記組み合わせに関するデータを生成する。組み合わせデータ記憶部5には、各非零要素に関する紐付けデータが記憶してある。LU分解部6は、前記紐付けデータを参照しつつ、所定の手順(後に詳述する)でLU分解を行う。係数変更検出部7は、行列Aの係数の変更を検出するとともに、係数が変化したことを検出する毎に、同様の非零要素の組み合わせの探索を非零要素組み合わせ探索部4に行わせる。
ここで変更された組み合わせデータは組み合わせデータ記憶部5に記憶される。すなわち、特定の非零要素に紐付けされた組み合わせに関するデータが各非零要素に関してそれぞれ更新して記憶される。その後、LU分解部6では更新した疎行列のLU分解を行って所定の計算を行う。演算処理部8は、LU分解のデータに基づき所定の連立方程式の求解演算を行う。
本形態では、特定の疎行列に対して最初にLU分解を行うときに、データ探索の結果をメモリに記録しておき、次回以降のLU分解では、この情報を用いることで、データ探索に要する計算コストを削減する。以下、その具体的な手順を説明する。
ある疎行列Aを、(8)式、(9)式によりLU分解し、LU分解した行列(ALU)に変形する過程において、(8)式、(9)式ではljkkjの総和を計算している。このとき、ljkおよびukjの、どの組合せが非零であるかが事前に分かっていれば、その組合せに対してのみ乗算を行い、和を取ることで、必要最小限の手順で計算を行うことができる。
ここで、図8と同じ9×9行列のl76を求める計算を、本形態により行う場合、非零となる組合せは(l71,u16),(l74,u46)であるから、図3(a)中に示すように、3つの手順だけで計算を行うことができる。
これら3つの手順は全てLU分解の本質的な計算である。一方、図8に示す従来のLU分解の場合には、番号を二重丸で囲んだ本質的な計算以外に、非零要素の探索と、その要素が計算に必要かどうか判断する処理を伴う。その結果として合計13手順が必要となる。
上記要素l76の計算の場合、本形態では従来のLU分解と比べて10手順少なく、計算コストを大幅に削減できることがわかる。これは、図3(b)に示すように、本形態では、疎行列の全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、特定の非零要素に紐付けされた前記組み合わせに関するデータを前記各非零要素に関してそれぞれ格納し、この格納したデータをLU分解の際に使用することができるからである。
前述の通り、瞬時値解析における回路方程式は(1)式の連立一次方程式で表され、回路に時変素子や非線形素子が含まれる場合には、行列Aの要素の値が変化する。しかし、Aの非零構造に着目すると、回路に時変素子や非線形素子が含まれていてもこれは不変である。したがって、瞬時値解析を行うにあたり、最初の計算時間ステップにおけるLU分解で、likとukjの非零の組合せをメモリに記憶しておけば、これに続く計算時間ステップにおいては、記憶した情報を用いることにより必要最小限の手順でLU分解を行うことができる。特に、回路に時変素子や非線形素子が含まれ、頻繁にLU分解を必要とする瞬時値解析では、大幅な高速化が期待できる。
上述の如く本形態では、図3(b)に示すように、特定の非零要素に紐付けされた非零要素の組み合わせに関するデータを各非零要素に関してそれぞれ格納しているので、データの格納方法も、従来のスレデッド・リスト法をベースにこれを改良・拡張した新規なデータ格納法を案出した。これを本明細書では、「拡張スレデッド・リスト法」と呼ぶ。
表1に基づき説明したスレデッド・リスト法は、従来のLU分解の手順を効率よく実行できるよう行列の情報を格納したものである。そこで、本形態では、非零組合せ記録による非零要素の組合せ情報を効率よく記録、参照できるようスレデッド・リスト法を拡張するとともに、瞬時値解析を行う場合に有利となる拡張や、要素の参照をより高速に行うための拡張も行った。
拡張スレデッド・リスト法は、11個の配列を用いて1つの行列を表現する。図7に示した行列を同法で格納したとき、LU分解前の各配列の内容を表2に、またLU分解後の各配列の内容を表3に示す。
表2、表3における配列VAL1およびVAL2は、スレデッド・リスト法のVALに相当する。VAL1には行列Aの非零要素を格納し、VAL2にはLU分解後の非零要素(LU分解後の行列(ALU))を格納する。
上述の通り、瞬時値解析では時変素子の値や非線形素子の動作区間が変化した場合など、Aの一部の要素の値が変わっただけの行列をLU分解する必要が生じる。このような場合、LU分解後の非零要素をVAL1に上書きしていくのではなく、別の配列であるVAL2に書き込んでいくことにより、Aの一部の要素の値が変わった場合にはVAL1の対応する部分の値だけを変更して、LU分解を再実施することができる。なお、表2は、LU分解前の状態を示しているため、VAL2は初期状態のままである(データは格納されていない)。
表2、表3の配列IROW、JCOLの役割は、スレデッド・リスト法の場合と基本的に同じである。スレデッド・リスト法の場合と異なる点は、行列AのサイズがN×Nのとき、IROWの1〜N番地には各行に存在する非零要素の数Nrow,i(i=1,2,…,N)、JCOLの1〜N番地には各列に存在する非零要素の数Ncol,j(j=1,2,…,N)を格納することである。
表2、表3の配列AIPT、AJPTはそれぞれ、スレデッド・リスト法のIPT、JPTと同じである。配列DIPTと、DJPTは、AIPTとAJPTのデータ探索方向を逆にしたものであり、DIPTは各列を下から上に、DJPTは各行を右から左に見たときに、ある非零要素の次に存在する非零要素の番地を格納している。かくして、配列DIPTとDJPTを追加することで、必要なメモリ容量は増加するが、順序付けや最初のLU分解で非零要素の組合せを記録する段階において、処理によってはAIPTを用いるよりも高速のデータ検索が可能となる。
配列DPTは、対角要素の番地を格納する。対角要素はAIPTやAJPTからも探索可能であるが、LU分解および後退代入で頻繁に参照されるため、このように専用の配列を用意しておくことで参照を効率化できる。
配列RECPTおよび配列RECは、非零要素の組合せ情報を格納する配列である。表2に示すLU分解前の状態では、VAL2同様、データは格納されていない。配列RECPT、RECの役割については、表3に示すLU分解後のスレデッド・リストを用いて説明する。
図7の行列に対して、TinneyのScheme2と呼ばれる順序付けを適用すると、図4(a)に示す行列A′を得る。さらに、これをLU分解すると、図4(b)に示す行列ALUを得る。このLU分解後の行列ALUを拡張スレデッド・リスト法で表したものが表3である。なお、図4(b)のハッチング部分(5行3列)にフィル・インが生じたため、表3では表2に比べて配列の要素数が1つ増えている。
配列RECPTには、配列RECに記録された各要素の非零組合せ情報の先頭番地が記録されている。例えば、第6番地の配列RECPTの要素は1であるから、この要素の非零組合せ情報はRECの1番地から記録されていることになる。なお。配列RECPTに値が記録されていない場合(表2では「−」と表示)には、非零組合せが存在しない(likとukjの乗算が全て零となる)ことを意味する。配列RECには、まず非零組合せの個数nが記録され、続いてn組の非零組合せ要素の番地が記録されている。この情報を用いてLU分解を行うときには、nを読み込んだ後、続く2つの番地に示された要素の積を該当するVAL2の値から差し引くという処理をn回繰り返すことにより、(8)式もしくは(9)式の分子を算出することができる。表3の6番地の要素の例は、IROW=2,JCOL=3よりu23の計算に相当する。まず、前述の如く、RECPTが1であるから、RECの1番地を読む。ここに「1」が記録されていることから非零組合せの数が「1」であることが判明し、続く2番地の値が「15」、「8」であることから、VAL2の15番地の値と8番地の値の積をVAL2の6番地の値から差し引く。その結果がu23の値となる。以上の計算を式で書くと
となる。Uを求める(4)式の計算は以上の通りであるが、Lを求める(5)式の計算では、結果を対角要素で割る必要がある。対角要素の値は、配列DPTに記録された番地から直ちに参照することができる。
以上で説明した拡張スレデッド・リスト法は、従来のスレデッド・リスト法に比べると、メモリ容量の節約よりも計算速度の向上を優先した手法になっている。
図5は従来技術に係るLU分解手順を示すフローチャート、図6は本願発明の実施の形態に係るLU分解手順を示すフローチャートである。両図を比較すれば、本形態が、解析準備の直後にLU分解の解析・記録、すなわち疎行列の全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、特定の非零要素に紐付けされた前記組み合わせに関するデータを各非零要素に関してそれぞれ格納するという処理を行っているので、実際のLU分解に際しては、前処理での内容を用いて必要最小限度の各要素の計算を行えば良い。この結果、可及的に計算の無駄をなくして全体的な演算速度を飛躍的に向上させることができる。
なお、上記実施の形態においては、回路の瞬時値解析を行う場合の連立一次方程式の演算処理システムとして説明したが、用途をこの種の瞬時値解析に限定する必要はない。大きな疎行列である係数行列を有する連立方程式の求解に一般に適用しても同様の効果を得る。この場合、非零構造が変化しないことが前提にはなるが、係数が変更され、都度LU分解をやり直す、変更回数が多いほど顕著な効果を発揮し得る。
本発明は係数行列が疎行列となる大規模な解析回路の瞬時解析を行うプログラムを作成する産業分野で有効に利用することができる。
I 演算処理システム
1 入力装置
2 出力装置
3 回路方程式設定部
4 非零要素組み合わせ探索部
5 組み合わせデータ記憶部
6 LU分解部
7 係数変更検出部
8 演算処理部

Claims (10)

  1. 非零構造が一定の疎行列を係数行列とし、前記疎行列の係数が変化する毎にLU分解を行う連立一次方程式の演算処理システムであって、
    前記疎行列の全ての非零要素データ、前記疎行列における前記各非零要素が格納された行列中の位置を示す情報を複数の配列に格納し、これら複数の配列を参照して前記疎行列のLU分解を行い、
    最初に前記疎行列のLU分解を行うときに、
    前記疎行列の全ての非零要素に対して計算に必要な非零要素の組み合わせを探索し、各非零要素に関してその非零要素のLU分解に必要な非零要素との組み合わせの数と各組み合わせに含まれる二つの非零要素の格納位置を前記各非零要素に関してそれぞれ前記複数の配列とは別の配列に格納し、
    その後前記疎行列のLU分解を行って所定の計算を行う一方、
    前記疎行列の前記係数のいずれかが変化したことが検出される毎に、前記複数の配列及び前記別の配列を参照して前記係数が変化した前記疎行列のLU分解を行って所定の計算を行うことを特徴とする連立一次方程式の演算処理システム。
  2. 請求項1に記載する連立一次方程式の演算処理システムにおいて、
    前記複数の配列は少なくとも第1〜第2の配列を有するとともに、前記別の配列が第3の配列を有するとともに、
    第1の配列は、番地に前記各非零要素を対応付けて格納する配列であり、
    第2の配列は、前記疎行列における前記各非零要素が格納された行列中の位置を示す情報を格納する配列であり
    第3の配列は、前記最初のLU分解の後に入力され、各非零要素に対し、その後のLU分解を行わせるために必要な非零要素との組み合わせの数と各組み合わせに含まれる二つの非零要素の格納位置を格納する配列であることを特徴とする連立一次方程式の演算処理システム。
  3. 請求項2に記載する連立一次方程式の演算処理システムにおいて、
    前記第3の配列は、二種類の配列からなり、
    一方の配列には、前記各非零要素に対応する番地に他方の配列に記録された前記各非零要素の非零組み合わせ情報の先頭番地が記録され、
    他方の配列には、前記各非零要素に対応する非零要素の組み合わせの個数nが記録されるとともに、n組の非零要素の組み合わせ要素の前記第1の配列の番地が記録されていることを特徴とする連立一次方程式の演算処理システム。
  4. 請求項2または請求項3に記載する連立一次方程式の演算処理システムにおいて、
    前記第1の配列は、LU分解前の非零要素の配列と、LU分解後の非零要素の配列とを有するものであることを特徴とする連立一次方程式の演算処理システム。
  5. 請求項2〜請求項4の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
    前記第2の配列は、各非零要素の行番号を格納する一方の配列と、各非零要素の列番号を格納する他方の配列とを有することを特徴とする連立一次方程式の演算処理システム。
  6. 請求項2〜請求項5の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
    前記複数の配列は、さらに第4および第5の配列を有し、
    第4の配列は、各列方向に関する各非零要素の番地の情報を格納する配列であり、
    第5の配列は、各行方向に関する各非零要素の番地の情報を格納する配列であることを特徴とする連立一次方程式の演算処理システム。
  7. 請求項6に記載する連立一次方程式の演算処理システムにおいて、
    前記第4の配列は、1〜N番地(前記疎行列がN×Nの行列である場合)までは各列で最も上に位置する非零要素の番地を格納し、(N+1)番地目以降には、行列の列を上から下に見たとき、ある非零要素の次に存在する非零要素の番地を格納するとともに、下にデータが存在しない場合は、データを格納しない構造とし、
    第5の配列は、前記第4の配列と同様の考え方で、行を左から右にみた場合の構造としたことを特徴とする連立一次方程式の演算処理システム。
  8. 請求項6または請求項7に記載する連立一次方程式の演算処理システムにおいて、
    前記複数の配列は、さらに第6および第7の配列を有し、
    第6の配列は、各列を下から上に見たときに、ある非零要素の次に存在する非零要素の番地を格納するものであり、
    第7の配列は、各行を右から左に見たときに、ある非零要素の次に存在する非零要素の番地を格納するものであることを特徴とする連立一次方程式の演算処理システム。
  9. 請求項2〜請求項の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
    前記複数の配列は、さらに第8の配列を有し、
    第8の配列は、前記疎行列の対角要素の番地を格納する配列であることを特徴とする連立一次方程式の演算処理システム。
  10. 請求項1〜請求項の何れか一つに記載する連立一次方程式の演算処理システムにおいて、
    疎行列の係数の変化が検出された場合には、その部分に識別のためのフラグを立てておくことを特徴とする連立一次方程式の演算処理システム。
JP2012122263A 2012-05-29 2012-05-29 連立一次方程式の演算処理システム Active JP5888782B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012122263A JP5888782B2 (ja) 2012-05-29 2012-05-29 連立一次方程式の演算処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012122263A JP5888782B2 (ja) 2012-05-29 2012-05-29 連立一次方程式の演算処理システム

Publications (2)

Publication Number Publication Date
JP2013246791A JP2013246791A (ja) 2013-12-09
JP5888782B2 true JP5888782B2 (ja) 2016-03-22

Family

ID=49846469

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012122263A Active JP5888782B2 (ja) 2012-05-29 2012-05-29 連立一次方程式の演算処理システム

Country Status (1)

Country Link
JP (1) JP5888782B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110826186B (zh) * 2019-10-11 2024-07-05 南昌大学 基于对称稀疏矩阵技术和非零元素随机存放的lr三角分解法
CN115355918B (zh) * 2022-08-12 2023-03-28 中山大学 火箭故障后的轨迹重构方法、装置、终端设备及存储介质
CN117290653B (zh) * 2023-11-24 2024-02-20 巨霖科技(上海)有限公司 一种基于eda系统的矩阵求解方法及系统

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3974083B2 (ja) * 2003-06-25 2007-09-12 株式会社日立製作所 連立一次方程式求解装置及び求解方法
JP2009064424A (ja) * 2007-08-13 2009-03-26 Kyoto Univ 逆ラプラス変換プログラム、逆ラプラス変換のためのテーブル作成プログラム、逆ラプラス変換の数値解算出プログラム、および逆ラプラス変換装置

Also Published As

Publication number Publication date
JP2013246791A (ja) 2013-12-09

Similar Documents

Publication Publication Date Title
Bauer et al. Phat–persistent homology algorithms toolbox
Wehrens et al. Self-and super-organizing maps in R: the Kohonen package
US9110946B2 (en) Database query optimization
US9037798B2 (en) System and method of operating a computing device to perform memoization including transforming input/output parameters to reduce redundancies and efficiently cache data
US9785413B2 (en) Methods and apparatus to eliminate partial-redundant vector loads
US20170206089A1 (en) Information processing apparatus and computational method
CN103500185B (zh) 一种基于多平台数据生成数据表的方法和系统
JP7053995B2 (ja) 最適化装置及び最適化装置の制御方法
Kant Finding linear dependencies in integration-by-parts equations: a Monte Carlo approach
JP5888782B2 (ja) 連立一次方程式の演算処理システム
US20070239663A1 (en) Parallel processing of count distinct values
Mullowney et al. Preparing an incompressible-flow fluid dynamics code for exascale-class wind energy simulations
van Der Hoeven et al. Sparse polynomial interpolation in practice
JP6331756B2 (ja) テストケース生成プログラム、テストケース生成方法、及びテストケース生成装置
JP2014029581A (ja) 六面体メッシュ生成装置
Jamal et al. A hybrid CPU/GPU approach for the parallel algebraic recursive multilevel solver pARMS
JP7424474B2 (ja) 学習装置、異常検知装置、学習方法及び異常検知方法
JP2006313518A (ja) 多次元高速フーリエ変換
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
KR102441442B1 (ko) 그래프 컨볼루션 네트워크 학습 방법 및 장치
US20200134360A1 (en) Methods for Decreasing Computation Time Via Dimensionality
JP5429164B2 (ja) 有限オートマトン生成システム
JP5817341B2 (ja) 情報処理方法、プログラム及び装置
JPWO2014168199A1 (ja) 論理演算方法および情報処理装置
US20210365522A1 (en) Storage medium, conversion method, and information processing apparatus

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150316

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20150422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160108

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160212

R150 Certificate of patent or registration of utility model

Ref document number: 5888782

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250