Hatena::ブログ(Diary)

potasiumchの日記

2010-01-08

並列処理時代の演算の一意性

| 16:26 | 並列処理時代の演算の一意性を含むブックマーク


 足し算の答えが一意に決まるなんて昔話になるかも、というお話。


 確認した範囲では、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 )。
  • 演算の順序は処理系任せである。
  • 特にマルチコアで並列演算をする場合、演算順序の任意性は高まる。

よって足し算の答えが非決定論的になるのはバグではなくて仕様ですと。(・・・とか言いながら最新バージョン(7.9, 2009b)はこういう挙動を示さない(足し算の答えが一意に決まる)ので、MathWorks社もやっぱりこれはまずいと思っていたのかもしれない。)


 個人的には、処理系が異なれば演算結果が違ってくる可能性はあるだろうな、とは思っていた。でも同じ処理系に同じ計算をやらせて、一秒前の答えと今の答えが異なるとは思っていなかった。そしてうっかり演算の一意性を見込んだ(怠惰な)コードを一部書いていたので、しばらく何が起きているのか判らなかった。


 彼女の言うことも、理解は出来る。効率を最優先させる場合には順序に任意性を持たせた方が良い場面というのはあるだろうから、もしかしたら将来的には「演算結果は一意に決まらないけれど高速」か「演算結果は一意に決まるけど低速」な演算のどちらかを選ぶという時代が来るのかもしれない。あるいはもう数値計算の結果は確率的に決まるというのが常識になり、足し算の答えが一意に決まるなんて21世紀初頭までの牧歌的な考え方と見なされるようになるのかも。


----

 データの統計的な性質によっては足し算結果の「確率分布」も結構変な形になるような気がするけど、その辺はどう扱われるようになるんだろうか。10回計算して平均を取るとかになったら結構シュールだ。


----

 並列演算装置の効率性と非決定論的な性質は不可分なのだ! たとえば脳み(以下略)

通りすがり通りすがり 2010/01/08 19:53 ですよね!
matlab7.0.4使ってたときに度々おかしなことがおこりました。
何行かのコードが実行されないで結果が出たり。
一行ずつコマンドウィンドウから手打ちしたら大丈夫だったけど。
研究仲間に言っても信じてもらえなかったので、
この記事発見してちょっと嬉しかったです。笑

potasiumchpotasiumch 2010/01/09 15:30 MATLABも時々変なことしますよね。新しい環境に移行するときは、いろいろ検算しないと怖くて使えないです。

通りすがり通りすがり 2010/01/09 21:58 そしてその平均演算にも一意性がない、と。

potasiumchpotasiumch 2010/01/10 09:45 素直に実装したらそうなりますよね。中央値とかの方がいいかも。

トラックバック - http://d.hatena.ne.jp/potasiumch/20100108

2009-11-28 最初の言葉

最初の言葉

| 16:47 | 最初の言葉を含むブックマーク


 多くの言語圏で母親を表す言葉はなぜか共通して「ママ(mama, mamma)」かそれに類するもので、また赤ちゃんがしゃべる最初の言葉も多くの場合「ママ」だと言われている。Caltech出身の院生が紹介してくれた説によると、これらの不思議な(?)一致の原因は次のような経緯を考えるとうまく理解できるのではないかとのこと。つまり、


  1. 物理的・神経生理学的な制約上、ヒトの幼児が最初に出すのはそういう音である可能性が高い、かつ
  2. 言語獲得期における古代人類の大人たちは、甘えたがりの赤ちゃんが最初に伝達したいであろう情報は「お母さんが恋しい」に違いないと思ったので、赤ちゃんが出す最初の音を「母親」を表す言葉と(勝手に)解釈した。

そしてその親側の決め付けが一般に言葉の定義として広まったのではないか、とのこと。普遍的なのは言語音と概念の関連性ではなく、身体性と親の愛であると。


 この話に乗るとすると、同じ音を日本語では「食べ物(まんま)」と解釈するというのも結構味わい深い。つまり、多くの西洋人や中国人などの先祖たちは、あの愛しくも儚い小さな存在が最初に伝達したい内容は「愛をください」に決まっていると思い込んでいた。それに対し日本人の先祖たちは、もちろん奴らが最初に放つであろう魂の叫びは「飯くわせ」に決まっていると思い込んでいたと。


 どちらも古の親たちの赤ちゃんに対する愛を感じるけれど、日本式の方がやや実用的というか、よりフェールソフトであるとは言えるかもしれない(ちょっとぐらい愛がなくても死なないけど、食べないとわりとすぐ死ぬ)。母親と食べ物(母乳)はとても関連の高い事象なので、どちらと定義しても実質的には問題なしということかも。


 うちの子を見ていると、初期の発声に関してはそれが明確に意思伝達を意図したものであるかは怪しいと思う。でもこれに自分自身の心の動きを合わせて考えると、親側が勝手な解釈をしたという説には信憑性があるような気もする。もちろんあの「だーだだだー」というのは、大好きなお父さん(daddy)を呼ぼうとしているに決まっているのだ。

あっあっ 2009/11/30 23:40 ふふ。お子さんかわいいんだねー。

daismdaism 2010/06/04 11:49 日本で生理学教室にいるものです。検索しているうちにたまたま拝見したのですが、思わずコメントしたくなりました。
家の子も1歳7ヶ月で最近2語文をしゃべり始めたくらいなのですが、確かに初期の頃(1歳少し前くらい?)より、「ママ(もしくはマンマ)」と言い始めました。ただし、その対象は、母親だけでなく、食事をはじめ、当時は色々なものに対して一般化して使っていたように思います。我が家は「お母さん」と言わせようとしていたため、全く「ママ」とは教えていなかったこともあり、blog主さんのお知り合いの説を偶然にも思いついていた次第です。「ママ」というのは単純に「発話しやすい」だけなのだなぁと思いましたね…。
この話題を探しますと、↓のようなページを見つけました。ご参考にいかがでしょうか。
http://www.yomiuri.co.jp/adv/chuo/research/20100218.htm
長文失礼しました。

potasiumchpotasiumch 2010/07/04 13:16 教えていないのに話し出すというのは、たしかに信憑性が高まりますね。うちも「お父さん」「お母さん」と呼ばせようとして早々に断念したのですが、回りが英語環境なだけに原因の切り分け(?)は出来ていませんでした。
ご紹介いただいた記事、とても興味深いです。

トラックバック - http://d.hatena.ne.jp/potasiumch/20091128

2009-11-25 Peer Review 1945

Peer Review 1945

| 14:14 | Peer Review 1945を含むブックマーク


 今日の動画。


D


 Open access journal...

QManiacQQManiacQ 2009/11/26 23:53 LOL!!

Der dritte Referent... A true masterpiece.

Funny and bitter too. We just got our recent paper treated with the same wretchedness at PRL, that is the top journal in our trade. sigh...

potasiumchpotasiumch 2009/11/28 03:51 一瞬スパムかと思いました。

どう考えても理不尽だと思えてしまうreviewはありますよね…。

トラックバック - http://d.hatena.ne.jp/potasiumch/20091125
Connection: close