Mathematicaによる固有値計算の高速化 Eigenvalue calculation speed by Mathematica 情報工学部 情報工学科 06A2055 平塚 翔太
スライド一覧 はじめに 研究概要 Mathematicaについて 改良点 研究結果 まとめ 参考文献
はじめに 先生に勧められ、かつ1年間熱心に研究できるテーマ だと思い、本研究を行った。
研究概要 VPNの下でのストリーミング配信の劣化 劣化 VPN
NG OK 仮定 ストリーミングの本数増加 ストリーミング配信をキャンセルする確率 Max 0 1 2 3 el el+1 el+2 el+3 n ストリーミングの本数増加 ストリーミング配信サービスの劣化
プログラム内容 第二固有値 緩和時間 ストリーミングの本数 α:増加する確率 β:減少する確率 固有値計算 確率行列 (三重対角行列) 1 6 5 4 3 2 α β ストリーミングの本数 α:増加する確率 β:減少する確率 第二固有値 固有値計算 緩和時間 確率行列 (三重対角行列)
Mathematicaについて {}で囲まれた複数の要素⇒リスト ベクトル,行列,集合,数列,データを扱うにあたっての 標準的な形式 リストを使い高速化を目指す リスト
改良点1 行列作成プログラムがボトルネック DiagonalMatrix関数とSparseArray関数 三重対角行列を作成するのに用いる 三重対角行列を作成するのに用いる DiagonalMatrix SparseArray 処理速度(s) 0.515 0(測定範囲超過) メモリ数(byte) 800,000,088 160,528 図:10000×10000の行列を作成
DiagonalMatrix SparseArray
改良点2 A: SparseArray[Array[~], Rest[~],~] B: a=Array[~] b=Rest[~] 複雑な計算をする組み込み関数の中に組み込み関数を多用すると処理 時間がかかる. A: SparseArray[Array[~], Rest[~],~] B: a=Array[~] b=Rest[~] SparseArray[a, b,~] プログラムA プログラムB 処理速度(s) 14.321 0.843
改良点3 メモリ大 リスト処理関数で二重リストを処理させるより,手続き関数を用いてリスト処 理させる方がメモリを多用せずにすむ. { { a,a,a,a,a },{ b,b,b },・・・,{ z,z,z,z } } 計算処理 メモリ大 { { 行列A },{ 行列B },・・・,{ 行列Z } }
For[~, ~, ~, { a,a,a } { 行列A } 固有値計算へ ] 計算処理 メモリ小
研究結果 最大ストリームについて
el(キャンセル率の最大)について ※el=18からメモリ不足により測定不可能
まとめ 処理速度とメモリ量はトレードオフの関係である 同じ計算をする関数でも構造が異なるのでよく検証すること 組み込み関数のみでコーディングするより手続き関数を用 いた方が高速化できる場合がある.
参考文献 Mathematica Document Center 入門Mathematica http://reference.wolfram.com/mathematica/guide/Mathematica.ja.html 入門Mathematica 日本Mathematicaユーザ会:編著 K.Oida ,On the inpact of Qos-sensitivity on correlation structures,ELSEVIER,Computer Networks 52 (2008) 351-359
御清聴ありがとうございました