タグ

optimizeと数値計算に関するkgbuのブックマーク (2)

  • 並列処理時代の演算の一意性 - potasiumchの日記

    足し算の答えが一意に決まるなんて昔話になるかも、というお話。 確認した範囲では、MATLAB 7.8 (2009a, 64bit) に足し算をさせる(たとえばサイズが500,000x1の行列の各要素を全部足す)と、その答えは一意に決まらない。全く同一のデータについて同じPC・環境で繰り返し計算させて、ほぼ毎回違う答えが返ってくる。 これについてMathWorks社(の少なくとも一社員)の見解が書かれているページを見つけた。 Comparing Single-threaded vs. Multithreaded Floating Point Calculations Loren on the Art of MATLAB December 4th, 2009 彼女の見解を要約すると、 浮動小数点数を用いた演算において、足し算は結合法則を満たさない( a+(b+c) ≠ (a+b)+c )。 演

    並列処理時代の演算の一意性 - potasiumchの日記
    kgbu
    kgbu 2010/01/09
    浮動小数点演算を並列で実行すると、、、順番がダイナミックに替わるなら、結果も変わり得る。昔は桁オチしないように計算の順番を工夫したりしてたんだろうから、これは当然なのかー。
  • 今後の開発について その1 - 最適化問題に対する超高速&安定計算

    9,10日と今後の開発計画について議論を行った(非常に中身の濃い議論だった)。高速化等の改善のためには、まず現在のプログラムについて徹底した調査が必要になる。どのような問題を入力したときに、どの部分がボトルネックになるのかについても、いろいろな方法で直接的、間接的に知ることができる。今までのアルゴリズム開発というのは、計算量(CPU 上での演算量に近い)と記憶容量に重点を置いてきていたので、CPU とメモリ間のデータの移動量については考慮されることは少なかった。また、データを参照する範囲、局所性のような概念も取り入れる必要がある。 例えば現在、開発を行いながら同時に公開も行っている最短路問題に対するダイクストラ法を実装したプログラムでは、最小ポテンシャルの点を高速に見つけるために、ヒープやバケットを利用している。ヒープは最小点を見つけるのは大変高速だが、データの更新に非常にデータ参照と書き

    今後の開発について その1 - 最適化問題に対する超高速&安定計算
  • 1