GSは次のような構造をすれば、前記したアルゴリズムを実現できる。
64ビットの浮動小数点数レジスタ: a,b,c
32ビットの正数レジスタ: k,N(λ)


ここでは、 SUB,MUL,DIV はそれぞれ加算器、乗算器、除算器をあらわす。 データフロー 最初に、GL が各GSのレジスタ a,b,k に固有値探索範囲の初期値と求める固有値の番 号kを入れる。GSは1クロック毎にαiとβi-1をメモリーから読み込み、 gi(λ)を計算する。block1 は g(i) <= 0 となる時、N(λ)を1つ 増やすように構成される(αとβが入る前にN(λ)はあらかじめ0に初期化され る)。N(λ)の結果に基づいて、block2 が a,b の次の値を決定する。具体的に N(λ) >= n-k なら aにcを代入し、bは変えない。そうでなければ、bにcを 代入し, aは変えない。 この操作がR回繰り返されるとレジスタcにk番目の固有値λkが入る。 各GSが独立に計算できるためには、それぞれのGSにαiとβiを保持 するメモリを持たせる必要がある。1個のメモリの容量は (2n+1)×8バイト で、行列の次元nが10 000の場合ほほ160[kbyte]になる。

戻る