大規模疎行列の高速な計算方法について

このQ&Aのポイント
  • 大規模疎行列の高速な計算方法について
  • 約2600万×2600の万正方行列と列ベクトルの積を高速に計算する方法を知りたい。
  • ゼロでない要素は全体の0.002%程度の対角線上に帯状に分布しており、対称な分布になっている。GPUを活用した計算方法も知りたい。
回答を見る
  • ベストアンサー

大規模疎行列の高速な計算方法について

突然の思い付きで大規模疎行列と列ベクトルの積を高速に計算する必要に迫られています。 しかし、右も左もわからない状態です(ついさっき疎行列という言葉を知りました)。 なにか取っ掛かりが欲しいのですが参考になる資料などありましたら是非教えてください。 計算する行列の特徴などを書いておきます ・約2600万×2600の万正方行列です(分割しない場合) ・対角線(左上から右下)に対して対称に分布しています ・対角線上に帯状に分布しています ・ゼロでない要素は全体の0.002%程度です(十分大きい行列の場合) さらに、GPUを使いたいとも思っています。 煮え切らない質問で申し訳ないのですがどうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

対称バンド行列とベクトルの積で検索すればいろいろとでてきます。 BALSのLevel2に?SBMVというルーチンがあります。 http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/fswiki/wiki.cgi?page=%BF%F4%C3%CD%B7%D7%BB%BB%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA 疎行列の計算についてはsparseというライブラリがあります。(これについては名前だけしか知りません) cuBLASとcuSPARSEという上記に対応したGPU版がありますのでそれを使うのがよいと思います。 https://developer.nvidia.com/gpu-accelerated-libraries また自分でGPU用のプログラムを作るのでしたら、最近ではopenACCに対応したコンパイラが出ていますのでそれを使う手も

kazukihanazawa
質問者

お礼

ありがとうございます。 なんとなくつかめてきました。 ただ、中間試験の勉強でしばらく手が付けられないのが残念です。

関連するQ&A

  • 大規模行列の対角化

    30000×30000の対称疎行列を対角化してすべての固有値を求めたいのですが、行列要素の格納がサイズが大きすぎてできません。 そこで、メモリをあまり使わずに格納する方法がありましたら 教えて下さい。

  • 対角化行列

    三次正方行列A= (       ) | 1 1 0 | | 1 1 1 | | 0 1 1 | (       ) 書き方わからないので見にくい方いたら申し訳ありません。(左上と右下だけ0であとはすべて1です。) この行列を対角化するんですが、固有値はλ1=1, λ2=1+√2, λ3=1-√2 の三つで、それぞれの固有ベクトルってλ1で、x=[1 0 -1] λ2で、x=[1 √2 1] λ3で、x=[1 -√2 1]となったのですが、これってあってますか? (↑はそれぞれ正規化してません、対角化行列を作るときはλ2,λ3のノルムである2にλ1をあわせるようにして作りました。) 対角化行列の逆行列を求めるときにどうしてもおかしくなってしまいます。よろしくおねがいします。

  • 対称行列 対角行列

    対角行列と対角化について質問させて頂きます。 対角行列は、対角成分以外が0の正方行列です。 対称行列は、t^A=Aが成り立つ正方行列Aです。 ここで、対称行列の定理で、 ・対称行列の異なる固有値に属する固有ベクトルは直交する。 というものがあるのですが、これは対角行列にも言えるのでしょうか? 対角行列は対称行列なので言えると思いますが、 テキストに特に記載がなかったので質問させて頂きました。 以上、ご回答よろしくお願い致します。

  • 全ての行列からなる集合の濃度は?

    対称行列は、縦ベクトルと横ベクトルの積で表すことができますから、 n次元ベクトルは、n次元平面と、同じ濃度 したがって、すべて対称行列からなる集合の濃度は、実数の濃度 というのは、わかります。 すべての行列の集合は、対称行列の冪集合と考えてられるのでしょうか? 対角線論法で、確認しようとしたのですが、よくわかりません。 アドバイス、お願いします。

  • 三角行列 対角行列

    三角行列における行列式の計算は、 対角成分の総積で計算できますが、 対角行列(正方行列であって、その対角成分以外がゼロ であるような行列の事。)の行列式も同様に対角成分の 総積で計算して良いでしょうか? 以上、ご回答よろしくお願い致します。

  • 大規模行列の計算

    10000*10000の大規模行列を解くプログラムを作成したいと考えています。 行列は対称行列で疎行列です。一行あたりの非零要素は10~20程度しかなく、ほとんどが零要素になっています。 メモリの関係上[10000][10000]の配列の形で確保することはまず無理でした。なのでガウスの消去法は使えないかと思います。(使えるのかもしれませんが、要素のうまい記憶方法のアルゴリズムが浮かびません) 解法として、ウェーブ・フロント法を使おうと考えたのですが、計算前の行列内の零要素で上三角行列を求める過程において非零要素となる要素については、あらかじめ記憶しておかなければなりません。しかし、零要素から非零要素に変化する要素を発見するアルゴリズムがわかりません。 その方法や、そのほかの方法で10000*10000の大規模行列を解く方法があれば教えてください!

  • 対称行列を直行行列で対角化

    次の対称行列を直行行列で対角化せよ、という問題で、解き方が分からないので一つずつ順を追って教えていただきたいです。 3 0 0 0 1 2 0 2 1 自分で計算してみて、固有値は-1と3と出たのですが、この値で合っているのか、合っていたとしてこの次に固有ベクトルをどうすれば求めるられるのかが分からないです… よろしくお願いします。

  • 行列

    実対称行列を対角化する直行行列を求めよ。という下の行列の一般的な解き方を教えてください。固有値を出して固有ベクトルを出してからどうすれば? 1 -2 2 -2 1 -2 2 -2 1

  • 行列の固有値、及び直交化問題

    (1)対称行列の固有値は、なぜ実数なのですか? (2)対称行列を対角化する行列は、直交するベクトルで構成された行列に限られるのでしょうか?だとしたら、それはなぜですか?

  • 行列

    行列A、B、C…をそれぞれ成分が全て正の行和が0の対称行列とし、 行列Xを対角成分に左上からA,B,C,,,と並べて他全て0の行列とすると、 Xの固有値0に対する固有ベクトルが (λA、λA、、、λB、λB、、、λC、λC、λC、、、)に限ることの証明を、 どなたかお願いします。

専門家に質問してみよう