憂鬱な午後のひととき


3月28日_
gcc 4.6.0をbuildしてたら途中でマシンごと落ちた. core solo 1.6GHz + 1.5GB memなマシンもぼちぼち限界か.
VCにある#pragma warning(disable)的な機能がよう~~~やく入ったか. 関数ごとに最適化オプションを変更する機能(#pragma GCC target)も4.4以降だったし, gccってVCに比べてファイル内でのコンパイラに対する設定の自由度が少ない気がする.
void func1()
{
    int a = 3; /* aが使われていないという警告 */
}

#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"

void func2()
{
    int a = 3; /* 警告を出ないようにする */
}

#pragma GCC diagnostic pop
3月27日_
320x320→640と256x256→512整数乗算の理論コスト比が(320/256)^2 = 1.56で, とあるアルゴリズムの損益分岐点が1.62で仮実装での評価が1.6ぐらいというのは実に微妙だ. メモリアクセスどこまで減らせるかなあ.
3月26日_

原発がどんなものか知ってほしいという文章がある. 相当怖い話が書かれているが間違いも多いらしい. でそれに対して反論のページがあったらしいが今は無い. 原発がどんなものか知ってほしい 第2版というページの最後にはそのキャッシュ[eifye.zip]が置かれている. キャッシュを置いてあるページには, 『原発がどんなものか知ってほしい』と『Re:原発がどんなものか知ってほしい』を

前者と後者の重みづけは、0.1対99.9のレベルだろう。前者にはリンクする価値もない。
と書かれている.

原発に関する事実は正直細かいところは私には判断できないが全般的に『Re:~』の方が正しそうとは思う. とは言え, たとえば『Re:原発がどんなものか知ってほしい』(上記キャッシュの0.html)には

放射線アラームメーターで一日の許容量を超過した作業が出来ないように設定、管理されています。(広報資料より)
これは自動的に設定されるものですから、どうしたって一日分以上の被曝をすれば例のアラームが鳴ってしまいます。
ですから、少なくとも現状では間違っても一週間分を一日で浴びせて作業をする事は起こりえません。
(中略)
無謀な方法で作業をしている事は見た事も聞いた事も無いです。
少なくとも現在はこんな方法の作業は絶対に無い(システム的に実施できない)と言えると思います。
と断言されていた. しかし今回それに反する作業事故が実際に起きてしまったように見える. NHKの記事:
原子力安全・保安院は、事前に作業場所の放射線の測定を適切に行っていなかったうえ、作業員にも十分な装備をさせておらず、放射線の量を計測する線量計の警報が鳴っていながら作業を継続するなど、放射線管理の在り方に問題があったと指摘しました。
緊急事態というのは言い訳にならないだろう.

今, 私が正しいと思うのは上記原発がどんなものか知ってほしい 第2版の最後の章「今、この瞬間にも始められること」だ. 一部を引用する.

未来を信じ、気持ちを強く持とう。まずは気持ちで勝とう。無駄に不安をあおるだけのデマ情報・扇情的なマスコミ情報がいけないのは、心を混乱させ、頭をパニックにさせ、そうでなければできるはずの冷静な判断を妨害する点にある。不信に凝り固まり、ネガティブに考えるのも個人の自由だが、そこから何が生まれるのか。スパムは広めず、ストップさせよう。
なお上記文章は今ではなく2002年9月に書かれたもののようだ.

3月25日_
『新宿鮫』(大沢存昌)
食わず嫌いで読んだことなかったけどなんとなく読んでみた. 新宿にいる一匹狼の刑事が型破りな行動で事件を解決する話. まあまあ面白い. 1990年に出た本なので通信手段が公衆電話. それはもちろん当然で不満はない. ただ, 後半携帯電話が出てきてそれを肩にかけてるという部分がよく分からなかった. 振り仮名に「ショルダーフォン」とあったので調べるとこれか. そういやなんかテレビでそんなものを見たことがあるような. 本が出た次の年の91年にはムーバが登場してたのか. 技術の進歩って凄いな.
3月24日_
2011年4月号の『日経サイエンス』の記事によると, 煙草にはポロニウム210が含まれていて,
1日に1箱半を吸う人の場合, 肺に蓄積したポロニウム210によって, 年間300回の胸部X線撮影を受けたのと同じ量の放射線を被曝する
とあって, そんなに含まれてるのかーと驚いた. けどよくよく記事を読むと上記のペースでどれぐらい吸い続けるとそうなるのかという数値が無いんだな. 最初1箱半でそうなるのかと勘違いしたが, そうではないようだ. 自分は煙草の煙は嫌いだし, 害にしか思ってないし, 被曝するというのも多分そうなんだろう(引用されている論文とかにはあたってない). でも記事としてはちょっとどうかと思った.
3月23日_
そういやXbyakにvcmppd系のalias命令も追加してbeta外しておくか → 単体テスト → nasmのvcmpeq_ospdなどのeq_osプレディケートがバグってるの発見 → バグ報告.
nasmダメダメだなあ. AVX系でもう4個ぐらいバグを見つけてる.
3月22日_
漸くAVXマシンをゲットしたので少しずつ触ってみる. AVX初体験なのでまずはvzeroupperの効果を見てみよう.
#include <stdio.h>
#include <xbyak/xbyak.h>
#include <xbyak/xbyak_util.h>

const size_t N = 10000;

struct Code : public Xbyak::CodeGenerator {
    explicit Code(int mode)
    {
        mov(eax, N);
    L(".lp");
        vaddpd(ym0, ym0);
        if (mode & 1) vzeroupper();
        addpd(xm0, xm0);
        if (mode & 2) vzeroupper();
        vaddpd(ym0, ym0);
        sub(eax, 1);
        jnz(".lp");
        ret();
    }
};

int main()
{
    for (int mode = 0; mode < 4; mode++) {
        Code c(mode);
        void (*f)() = (void (*)())c.getCode();
        Xbyak::util::Clock clk;
        const size_t C = 1000;
        clk.begin();
        for (int i = 0; i < C; i++) {
            f();
        }
        clk.end();
        printf("mode=%d %7.3fclk\n", mode, (double)clk.getClock() / C / N);
    }
}
実行結果は以下の通り.
vzeroupperありなしのペナルティの変化 [clk]
mode AVX→SSE間に挿入 SSE→AVXに間に挿入 clk
0 無し 無し 141
1 あり 無し 8
2 無し あり 136
3 あり あり 8.3

YMMレジスタの下位128bitはXMMレジスタと共用なので, 過去のSSE命令(レガシーSSE)を触ってる間は上位128bitは変化してもらっては困る. しかしそうするとAVXとレガシーSSEがまざったとき内部的に状態を保持する必要があって困る. それを断ち切るための命令がvzeroupper. intelのマニュアルにはAVX→SSEとSSE→AVXの間に挟めと書いてあるように見えた*けど, vzeroupperが上位128bitをクリアーすることを明示するためのものならSSE→AVXの間には入れなくてもよいように思う. 上記のテストを見てもAVX→SSEの間だけで十分と思ってよいのかな.

w_oさんもそんな風に書いてはる.

* Intel Advanced Vector Extensions Programming Reference 319433-009:2.8.1
>To eliminate both of these delays, the user should execute the instruction VZEROUPPER prior to entering the legacy library and (after exiting the library) before executing in a 256-bit AVX code path
3月15日_
原発事故の対応は, ぎりぎりのところで作業員たちが命懸けで冷やそうとしてるのだから現時点で外野がとやかく言ってもせんない. マスコミも「隠蔽体質」と非難するのは簡単だが, 平時につっこんだ取材をしていたのか. 周りは頭を冷やして落ち着いて正しい情報を収拾して見守るしかない.
(追記) 巨大津波が来ると冷却機器が動かなくなる可能性は指摘されていたのか(福島原発10基の耐震安全性の総点検等を求める申し入れ).
3月14日_
計画停電に関して電車の混雑を見てると, 絶対外せない仕事がある人以外は自宅でじっとすべきだろう. 大体のところで停電が起きなかったのも電車が動いてなかったせいもあるだろうから, 停電してないなら電車を動かすべきだったというのも違うと思う.
下手に動かして計画じゃない停電になってしまうよりはずっといい. 電気は急に作れないし溜めとけない. 余っても困る.
私はキーパーソンじゃないので自宅で待機する.
3月13日_
新聞などで炉心溶融に関する恐ろしい見出しをつけるのもよいけど, 被曝がどの程度なのか, 日常生活のたとえばレントゲン検査何回分かと言った話も目立つようにした方がいい. よく見ると書いてあるけど小さ過ぎる. やたら不安をあおるだけでは片手落ちだろう.
3月11日_
無事です. 安否を問い合わせてくださった方々, どうもありがとうございました.
3月10日_
VAIOのLシリーズが出た. Sandy Bridgeで24インチでダブルAVC録画対応だって. 出るって知ってたら先月テレビ買わなかったのになあ. 残念. まあ次のパソコンはテレビ無しにしとくか.
3月9日_
祖母が亡くなったので実家に戻ってた.
3月3日_
『遺伝子がわかる!』(池田清彦)
凄い面白かった. 自分が何も分かってなかったことがよくわかった. 以下メモ

歴史

DNA = 遺伝子 = ゲノムだと思ってたよ. ゲノムはDNAの全て. DNAのうちで, タンパク質やRNAを作る情報を持った(コードした)ものが遺伝子. 2%ぐらいしかない. あとはジャンク.

...と思われていたが, ジャンク部分は, mRNA, tRNA, rRNA以外のRNAをコードしていることも多く, miRNAというのも重要な機能を持ってるそうな.

構造

羊のクローンの話でテロメアが無くなっていくというのは聞いたことがあって, それはテロメアが大事なものだから無くなったら死ぬのかと思ってたら単なるトリガーだったのか.

機能 : メンデル以来の古典的な遺伝子(形や行動を決定するもの)の概念と現在の遺伝子は全然違う. 遺伝子は生物の体を作る設計図ではない.

病原体

性染色体

人の場合

獲得形質

他にも中世のキリスト教会が絶対だったときにも, アリストテレスの自然発生説の権威は絶大で, 教会側が歩み寄ったという話とか, いろいろてんこ盛り. 盛り込みすぎて多少消化不良気味になったけど, それはまた西尾さんに聞いてみよう.

3月1日_
夫婦別姓に対する反対意見(朝日新聞):
>「同じ姓という目に見えるつながりが, 目に見えない家族の絆を強めてくれると感じる. そんな私は古いのでしょうか?」
別に反論はしない. そういう人もいるだろう. でも, 別姓にしたいと思ってる人の気持ちを禁止する理由にはならないと思うのだが.

御意見は光成滋生<herumi@nifty.com>までお願いします