JPH0666069B2 - ベクトル計算機の記憶装置への大規模不規則疎行列格納法 - Google Patents

ベクトル計算機の記憶装置への大規模不規則疎行列格納法

Info

Publication number
JPH0666069B2
JPH0666069B2 JP2061416A JP6141690A JPH0666069B2 JP H0666069 B2 JPH0666069 B2 JP H0666069B2 JP 2061416 A JP2061416 A JP 2061416A JP 6141690 A JP6141690 A JP 6141690A JP H0666069 B2 JPH0666069 B2 JP H0666069B2
Authority
JP
Japan
Prior art keywords
matrix
storage method
row
vector
zero
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.)
Expired - Fee Related
Application number
JP2061416A
Other languages
English (en)
Other versions
JPH03262077A (ja
Inventor
知哉 齋藤
紀子 武脇
Original Assignee
日本電気技術情報システム開発株式会社
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 日本電気技術情報システム開発株式会社 filed Critical 日本電気技術情報システム開発株式会社
Priority to JP2061416A priority Critical patent/JPH0666069B2/ja
Publication of JPH03262077A publication Critical patent/JPH03262077A/ja
Publication of JPH0666069B2 publication Critical patent/JPH0666069B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Complex Calculations (AREA)
  • Memory System (AREA)

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は数値計算、特に有限要素法プログラムにおける
大規模不規則疎行列の格納法に関し、特に、CG法・チェ
ビシェフ反復法等行列とベクトルの積算が主たるコスト
を占める解法を用いるときの、行列各要素の、ベクトル
計算機の記憶装置上への大規模不規則疎行列格納法に関
するものである。
(従来の技術) 従来は、第3図(a)〜(f)のように、行列の非ゼロ
要素を行毎にまとめて一次元化する格納法が使われてき
た。これは、行列Aが第3図(a)の非ゼロ/ゼロ要素
のパターンを持つとするとき、行列の非ゼロ要素(x)
のみを、第3図(b)の→に沿って1行目から行毎に、
配列Aに格納する方法である。行列Aが対称行列のとき
は第3図(c)のように上三角部のみを格納する。第3
図(d)は、このようにして格納したときの、配列Aの
先頭の数要素を表している。配列の各要素と、元の行列
との対応を知るために、別に、整数配列JA、IAを使う。
行列のi行目の非ゼロ要素の先頭の番地をIA(i)に格
納する。配列AのIA(i)番地からIA(i+1)−1番
地i行目の非ゼロ要素が対応することになる。配列JAの
各要素は、同一番地のAの要素の元の行列での列番号を
示す。第3図(e)及び(f)は、それぞれ、IA及びJA
の先頭の部分を表している。この格納法を用いるとき
の、行列×ベクトルのFortranコードが第4図である。
最深DO LOOPが各iについて、 を実行する。
さらにベクトル計算機の特性を考慮した格納法として、
第5図のような方法が用いられている。第5図(a)
は、格納しようとする行列Aの非ゼロ/ゼロパターン、
第5図(b)及び(c)は、その上三角部及び下三角部
である。この格納法では、行列の次元数をN、下三角部
の一行当たりの非ゼロ要素数の最大値をMLとして、N×
MLの2次元配列ALを用意し、第5図(b)の下三角部の
ゼロ要素を左方向に圧縮して、2次元配列ALに格納す
る。各行に於て、要素数がMLに満たない場合は、行の後
ろにゼロ要素を詰める(第5図(d)参照)。また、元
の行列での列番号の確保の為に、同じ大きさの2次元配
列JLを用意して、各要素の列番号にこれを格納する。ゼ
ロ要素を詰めたところは、適当な列番号を詰める。
同様に、NU×MUの2次元配列AU、JUを用意し、上三角部
の最後のゼロ要素だけからなる行を除いたものを左詰め
に格納し、対応する列番号をJUに格納する(第5図
(e)参照)。ここで、MUは上三角部の一行当たりの非
ゼロ要素の最大値、NUはNから最後の、ゼロ行の数を除
いたものである。この格納法のための行列×ベクトルの
Fortranコードが第6図で、(DO BLOCK 10)で行列の対
角要素の寄与を計算し、(DO BLOCK 20)で上三角部の
寄与を、(DO BLOCK 30)で下三角部の寄与を計算して
いる。
(発明が解決しようとする課題) 従来方法である第3図の方法では、最深ループ長が十分
でない。また第5図の方法では、ループ長を延ばす為に
余分なゼロ要素を数多く詰めており、特に一行当たりの
非ゼロ要素数の平均がその最大値よりかなり小さい場合
には、計算量が過大になりベクトル化の効果が期待でき
ない。また、同一列中に同じ列添字が並ぶことが多いた
め、メモリアクセス競合が発生しやすい。以上の理由
で、従来の方法ではベクトル計算機の特性が十分には引
き出されておらず、計算コストの増加を招く。
(課題を解決するための手段) 本発明のベクトル計算機の記憶装置への大規模不規則疎
行列格納法では、ベクトル長を十分長くとるため、行列
の非ゼロ要素を左方に圧縮して詰め、行列・ベクトル積
の計算時に列方向にアクセスする。この際、余分のゼロ
要素を詰める必要が生じないよう、予めベクトル要素の
番号付け方を、行毎の非ゼロ要素が単調減少になるよう
に付け替えている。また、バンクコンフリクトが起きな
いよう、行列を上三角、対角、下三角の三部に分け、対
角部分だけは別に格納し、下三角と上三角について、上
三角、下三角の順に行毎に左詰めし、縦方向に一次元化
している。
(実施例) 以下本発明の実施例において図面を参照しながら説明す
る。第1図(a)〜(f)は、本発明の格納法を具体的
に表した図で、(a)は、格納しようとする行列Aのゼ
ロ/非ゼロパターンを示している。ここで、各行の非ゼ
ロ要素の数は降順になっているものとする。第1図
(b)及び(c)は、その上三角部及び下三角部であ
る。以下、格納法の説明のために、行列と同一サイズの
2次元配列を考え、その配列に、上三角部を左に圧縮し
て詰め(第1図(d))、次に、下三角部を左に圧縮す
る(第1図(e))。次に、第1図(f)の↓に沿って
1列目から、順に配列Aに、非ゼロ要素を、1次元的に
格納していく。各要素の列番号は別の整数配列JAに順に
格納して行く。また、第1図(e)の各列の先頭の要素
の番地を配列JHに格納する。対角要素は別の配列に格納
する。
第2図は、この格納法での行列×ベクトルのFortranコ
ードで、(DO BLOCK 10)で、対角要素の寄与を計算
し、(DO BLOCK 20)は各jについて、第1図(e)で
の各j列目の要素の寄与を計算している。
第8図は、第3図(c)の従来の格納法から、本格納法
に変換するアルゴリズムのフローである。Nは、ベクト
ルの長さを、Ndは、行列の非ゼロ要素数を表す。IAは第
3図(c)の各行の先頭の番地を保持している。また、
過程1.1、2、3は、Nに、過程1.2、4は、Ndに比例す
る演算量だけを含んでいる。とくに、過程4について
は、 よりこのことがわかる。従って、全体で、Ndに比例する
演算量以下で変換が可能である。
次に、本実施例の全体図に移る。第9図は、単位円で
の、ラプラシアンの最小固有値問題を有限要素法で離散
化し、行列の固有値問題に還元して求める際に本格納法
を用いた例のフローである。計算の手順は、 (1)領域の分割を行う。本実施例では、第10図のよう
に分割している。
(2)初期節点番号付けを行う。
(3)それを、行列を作ったときの行毎の非ゼロ要素数
が降順になるように節点番号を付け直す。先ず、各行の
非ゼロ要素数を計算し、それが行列の次元数Nに比べて
小さいことを利用し、第7図の線形ソート法を用いて付
け替える。このアルゴリズムの採用によって、節点番号
の付け替えは、ベクトルの長さNの数倍程度の演算回路
で可能になる。
(4)行方向格納時の、各行の先頭の番地、列番号をも
とめる。本実施例では、生成される行列が対称のため、
第3図(c)の対称行列用行方向格納法を用いている。
(5)従来の行毎の格納法第3図(c)による係数行列
生成を行う。
(6)それを第8図の変換の手段を用いて、第1図の本
発明の格納法に変換する。
(7)このあと、CG法(Conjugate Gradient Method)
を用いてラプラシアンの最小固有値を求めて、計算を終
了する。CG法では、一反復あたり、4回の行列・ベクト
ルの積、7回のベクトルの内積を多数回繰り返す。本実
施例では、比較のため、行列×ベクトルを実行する際
に、第1図の本発明によるものと、前述の、第3図及び
第5図の格納法によるもので行っている。
本実施例7のCG法に於て現れる行列×ベクトルの演算時
間の、1非ゼロ要素当たりの時間を各行列の格納法別に
プロットしたのが第11図である。縦軸に1非ゼロ要素当
たりの計算時間、横軸に有限要素法の基底関数の次数を
とっている。図中に示されているT1Pが本格納法の結
果、Rが行毎の従来法、Hが第5図の方法である。基底
関数の次数が低い場合、即ち1行中に非ゼロ要素数がよ
り少ない場合、行方向格納法は非常にコストが高い。一
方、次数が高い場合は、即ち1行中の非ゼロ要素数にば
らつきがある場合は、第5図の方法は、コストが高くな
る。本格納法によるものは、何れの次数でも、従来の方
法より速く、且つ、安定した値を示しており、平均的
に、行毎のものの10倍、第5図の方法の8倍程度速くな
っている。
第12図は、第9図のフローで与えられる、本実施例全体
の実行時間を各行列格納法別に計測したもので、左から
順に、節点再番号付け及び格納法変換のコストを含む第
9図過程1〜6の行列作成のコスト、第9図過程7のCG
方のコスト、それに、全体のコストを各限要素法の次数
1〜4毎に表にしたものである。CG法のコスト低下は、
1回の行列・ベクトル積のコストの低減×(4×CGB法
の反復回数+2)によって、第11図と関連する。本発明
の格納法を用いるために要する、行列作成のコストの増
加は、本発明の格納法を用いることによるCG法のコスト
の減少に比べて、僅かであり、全体のコストは、従来の
ものの、2〜7割程度に減少している。
(発明の効果) 以上説明したように、本発明のベクトル計算機上でのた
とえば乗算向き大規模疎行列格納法では、行毎の要素を
左詰めにし列毎にアクセスするため、1行当たりの非ゼ
ロ要素数が小さいときでも、最深ループのループ長が長
い。このとき、予め一行中の非ゼロ要素が降順になるよ
うに節点番号をつけ替えてあるために、ゼロ要素を詰め
る必要がなく、1行当たりの非ゼロ要素数の最大値が、
その平均値に比べて大きいときも、計算量の増加をもた
らさない。また、行列を上三角、下三角の順で左詰めす
ることにより、各列同一要素を参照することが希になり
メモリアクセス競合を防ぐことができる。
【図面の簡単な説明】
第1図は本発明のベクトル計算機の記憶装置への不規則
疎行列格納法を示す図で、(a)は行列Aのゼロ・非ゼ
ロパターンを示す図、(b)は同上三角部のみを示す
図、(c)は同下三角部のみを示す図、(d)は上三角
部を左に圧縮した図、(e)は上三角部の右に、下三角
部を圧縮した図、(f)は列毎に、配列Aに1次元的に
格納していく図である。 第2図は本発明を用いた時の行列×ベクトルのFORTRAN
コード例を示す図である。 第3図は行方向毎の格納法の説明図で、(a)は格納す
べき行列Aの非ゼロ要素・ゼロ要素のパターン図、
(b)は行列の非ゼロ要素格納の順序を示す図、(c)
は同、対称行列の場合の非ゼロ要素格納の順序を示す
図、(d)は配列Aの先頭の数要素を示す図、(e)は
各行の先頭の番地を配列するIAの内容を示す図、(f)
は各要素の元の行列での列番号するJAの先頭の数要素を
示す図である。 第4図は行方向格納法を用いたときの行列×ベクトルの
FORTRANコード例を示す。 第5図は従来のベクトル計算機向きの格納法説明図で、
(a)は格納すべき行列の非ゼロ要素・ゼロ要素のパタ
ーン図、(b)は同下三角部のゼロ要素・ゼロ要素のパ
ターン図、(c)は同行列の上三角部のゼロ要素のパタ
ーン図、(c)は同行列の上三角部のゼロ要素・ゼロ要
素のパターン図、(d)は2次元配列に上三角部を詰め
た図、(e)は同下三角部を詰めた図である。 第6図は第5図の格納法を用いたときの行列×ベクトル
のFORTRANコード例を示す。 第7図は線形ソートのアルゴリズムを示すフローチャー
ト図である。 第8図は行方向格納法から本発明の格納法へ変換するア
ルゴリズムを示すフローチャート図である。 第9図は有限要素法中における本発明の使用例のフロー
チャート図である。 第10図は実施例で用いた例題の領域分割図である。 第11図は各行列格納法を用いた行列×ベクトルの1要素
当たりの演算時間を示す図である。 第12図は各行列格納法を用いた、第9図の実施例に於け
るコストを示した図である。

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】予めベクトルの番号を行毎の非ゼロ要素が
    単調減少になるよう付け替え、対角部分は別に格納し、
    非対角部は、上三角、下三角の順に左方に圧縮し列方向
    に一次元化して格納することを特徴とするベクトル計算
    機の記憶装置への大規模不規則疎行列格納法。
JP2061416A 1990-03-12 1990-03-12 ベクトル計算機の記憶装置への大規模不規則疎行列格納法 Expired - Fee Related JPH0666069B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2061416A JPH0666069B2 (ja) 1990-03-12 1990-03-12 ベクトル計算機の記憶装置への大規模不規則疎行列格納法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2061416A JPH0666069B2 (ja) 1990-03-12 1990-03-12 ベクトル計算機の記憶装置への大規模不規則疎行列格納法

Publications (2)

Publication Number Publication Date
JPH03262077A JPH03262077A (ja) 1991-11-21
JPH0666069B2 true JPH0666069B2 (ja) 1994-08-24

Family

ID=13170480

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2061416A Expired - Fee Related JPH0666069B2 (ja) 1990-03-12 1990-03-12 ベクトル計算機の記憶装置への大規模不規則疎行列格納法

Country Status (1)

Country Link
JP (1) JPH0666069B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11161635A (ja) * 1997-11-28 1999-06-18 Yamatake Corp Dft行列データの保存方法
WO2017154946A1 (ja) 2016-03-09 2017-09-14 日本電気株式会社 情報処理装置、情報処理方法、データ構造およびプログラム
JP7020236B2 (ja) * 2018-03-28 2022-02-16 日本電気株式会社 情報処理装置、情報処理方法、及びプログラム

Also Published As

Publication number Publication date
JPH03262077A (ja) 1991-11-21

Similar Documents

Publication Publication Date Title
US11423285B2 (en) Buffer addressing for a convolutional neural network
US5450536A (en) Technique for automatically resizing tables
US4787057A (en) Finite element analysis method using multiprocessor for matrix manipulations with special handling of diagonal elements
JP2019109896A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
US20170206089A1 (en) Information processing apparatus and computational method
JP2956800B2 (ja) 連立一次方程式に関する計算装置
JP2019109895A (ja) ニューラルネットワークにおける畳み込み計算のための方法および電子デバイス
CN109313663B (zh) 人工智能计算辅助处理装置、方法、存储介质、及终端
WO2010067324A1 (en) A method of operating a computing device to perform memoization
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
JP2017122950A (ja) 行列演算プログラム、行列分割方法、及び並列処理装置
Yang et al. A parallel computing method using blocked format with optimal partitioning for SpMV on GPU
US6694343B2 (en) Method for solving a large sparse triangular system of linear equations
CN111639701B (zh) 一种图像特征提取的方法、系统、设备及可读存储介质
CN114722994A (zh) 在硬件中实现全连接神经网络层
Howell et al. Cache efficient bidiagonalization using BLAS 2.5 operators
JPH0666069B2 (ja) ベクトル計算機の記憶装置への大規模不規則疎行列格納法
EP1556801B1 (en) Technique for improving the efficiency of reconfigurable hardware
CN114281755A (zh) 一种面向向量处理器的半精度向量化卷积方法及系统
Papadrakakis et al. Improving the efficiency of incomplete Choleski preconditionings
JP2007133710A (ja) 連立一次方程式反復解法における前処理方法および行列リオーダリング方法
TWI788257B (zh) 記憶體內計算巨集排列的方法、電腦可讀介質及電子裝置
JP2001027994A (ja) 有限要素法による解析モデルから計算用数値データを生成するデータ生成方法及びデータ生成装置
JP2531429B2 (ja) 前処理付き反復解法方式
Zlotnik et al. Assembling sparse matrices in MATLAB

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees