憂鬱な午後のひととき


10月28日_

C++14の拡張された配列

26日の勉強会のときの私の資料. C99のVLA(variable length array)的なものをC++にも入れようという話. しかし, 結構細かいところで規格が変わってるので最終的にどうなるのかわからない.

integer propagation

昔4294967295の型がgcc -m32で間違ってた(2011/6/1)のはgcc 4.7で直ってました.

#include <stdio.h>
#include <typeinfo>

int main()
{
    int x = -1;
    int y = x == 4294967295;
    int z = x == 0xffffffff;
    printf("y=%d\n", y);
    printf("z=%d\n", z);
    printf("int          =%s\n", typeid(int).name());
    printf("unsigned int =%s\n", typeid(unsigned int).name());
    printf("unsigned long=%s\n", typeid(unsigned long).name());
    printf("long         =%s\n", typeid(long).name());
    printf("long long    =%s\n", typeid(long long).name());
    printf("typeid(4294967295)=%s\n", typeid(4294967295).name());
    printf("typeid(0xffffffff)=%s\n", typeid(0xffffffff).name());
}
% g++-4.6 t.cpp -m32 -std=c++0x && ./a.out
y=1 ; 間違ってる
z=1
typeid(4294967295)=m ; unsigned long
typeid(0xffffffff)=j ; unsigned int
% g++-4.7.2 t.cpp -m32 -std=c++0x && ./a.out
y=0
z=1
typeid(4294967295)=x ; long long
typeid(0xffffffff)=j ; unsigned int
10月26日_

C++14規格レビュー勉強会(一般参加用)

台風を心配したけど無事終了. 長丁場のディスカッションお疲れさまでした. 一般参加の方もありがとうございました. 公開できる資料はみなさん随時公開されると思います. 議論の続きなどに関してはとりあえずサイボウズLiveのグループを作っておきます. 参加されたい方は私にご連絡ください.

2進数リテラルで追加が必要ではと言ってたのは2.14.2 Integer literalsのTable 6:Types of integer constantsの Octal or hexadecimal constantのところにもbinary integerがいるなあというだけのことです.

10月18日_

ビット逆転ループ

256以下の2の巾についてのビット逆順ループなら, 昔私がSIMDを使って作ったやつがx86では最速だと思う(値の更新は2命令だけ).

リンク先の初期値に会わせてintrinsicで書くならこんな感じ(bit-reverse.cpp).

template<int n>
struct Rev {};

template<>
struct Rev<8> {
    enum { len = 8 };
    __m128i step_;
    __m128i x_;
    Rev()
    {
        const MIE_ALIGN(16) uint8_t step[16] = { 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
        step_ = *(const __m128i*)step;
        x_ = _mm_setzero_si128();
    }
    uint32_t next()
    {
        uint32_t a = _mm_movemask_epi8(x_);
        x_ = _mm_add_epi8(x_, step_);
        return a;
    }
};

512のループなら補正カウンタを追加して3命令でできる.

template<>
struct Rev<9> {
    enum { len = 9 };
    __m128i step_;
    __m128i one_;
    __m128i x_;
    Rev()
    {
        const MIE_ALIGN(16) uint8_t step[16] = { 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80 };
        const MIE_ALIGN(16) uint8_t one[16] = { 1 };
        step_ = *(const __m128i*)step;
        one_ = *(const __m128i*)one;
        x_ = _mm_setzero_si128();
    }
    uint32_t next()
    {
        uint32_t a = _mm_movemask_epi8(x_);
        x_ = _mm_add_epi8(x_, step_);
        step_ = _mm_xor_si128(step_, one_);
        return a;
    }
};

それより大きくて16bit以下に対応させるならどうするのがいいだろう. 内部状態のカウンタを8bit単位でなく16bit単位で持つとして, 上位8bitをpackしながら取り出すのが悩ましい. pack系ってsaturationつきしかないんだよなあ.

Haswellなら16bit x 8 x 2のまま処理してpmovskbしたあとpextでできそうだけどいまいち.

10月17日_

固有名詞の一般名詞化

>-ian だったりするのでこの辺の違いはなんなのかなあと
最初はHilbert spaceとかthe Hilbert's theorem. 時間が経ってより一般化したら形容詞的になってきて-ianがつく感じなのかな(適当). Hermite polynomialとかHermitian matrix. このあたりはまだ過渡期?

Abelなんてan abelian varietyみたいに小文字になってしまってますね. ここまでくるとすごいと思う.

cf. Abel Prizeより

"abelian groups" (the lack of capitalization being a tacit acknowledgement of the degree to which his name has been institutionalized).

無言の感謝の意かあ.

10月16日_

台風で休業。給与はどうなる?

なるほど. 私は特に何も考えず在宅勤務をしたのだけど(cf. @aono), そういう制度がないといろいろ面倒なんだな. 改めてありがたいことだと思う.

他の会社や社会にも広まれば, 『会社は無理しなくていいと言ってるのに「サラリーマンだからつい来てしまった(そして電車が動かないのでぼけっとしてる)」』というような出勤しなくてよい人が減り, 無駄なリソースの消費も減るだろう.

災害医療時のトリアージのような全体最適化が進められればいいなあ.

10月11日_

伽藍配置

どうでもいい話なんだけど, 中学の美術の定期考査では, お寺を上から見たシルエット(たとえばこんな伽藍配置の絵)を見てどのお寺かを当てる問題があった. 試験前にがんばって覚えたもんだ.

そういうのはどこの中学校(私は普通の公立に通ってた)でもやっていると思ってたら, 高校, 大学の友人に聞くとそんなの聞いたことも無いと言われ, 「ああ近くにお寺や遺跡がいっぱいある地域だったからか?」と軽いカルチャーショックを受けたのだった.

というようなことを「伽藍とバザール」という言葉を聞くといつも思い出す.

10月9日_

『無菌病棟より愛をこめて』(加納朋子)

突如, 急性骨髄性白血病になった著者が, 弟さんからの造血幹細胞移植をすることで一命をとりとめたときの闘病記録. 癌治療は本当に繊細で危険な橋を渡って行うものなんだと改めて衝撃を受ける.

大昔, 新井素子が書いてたけど作家さんはどんな状況でも自分を観察してる自分がいるんだなあ. それだけに日記が飛んでる箇所はどれだけ大変だったのか. 全体的に軽いタッチで書かれているけれども, 自分だったらと想像しながら読むと怖くて痛くて仕方がない. 移植直前は抗癌剤を致死量に近いぐらい投与されるそうな.

始終冷静な(であろうと努めている)弟さんも凄い. ドナーになるかもしれないと分かったときからすぐ禁酒して病気に関する情報を探すことはなかなかできないと思う.

あと, 本当に現金な話だが, 個室に入ってもとりあえずお金の心配しなくていいぐらいのお金はあると大分違うものだ. 本のなかでも「早く大部屋に移動したい」という人もいたし, いろいろ考えさせられる(健康保険の威力も).

セキュリティ・ミニキャンプ in 横浜

主に高校~大学初級を対象としたもの. 講師として私も参加します.

・最近, 会社でちまちまと作ってたプロトタイプが漸く動いた. いろいろ機能を追加していきたい.

10月6日_

『県庁おもてなし課』(有川浩)

映画は見てない. 「おもてなし課」は高知に実在するそうな. というかフィクションとノンフィクションが混在してるらしい. お役所的感覚だった主人公たちがどうやって「民間意識」を取り入れ高知を世間に売り込んでいくか. おもしろい. ずっと買ってるポン酢の馬路村って高知だったんだ. 行ってみたくなった.

『農場の少年』(ローラ・インガルス ワイルダー 恩地三保子訳)

何度も読んでるが時々読み返してしまう. 勉強ができないと鉛筆が持てないほど鞭で打たれるとか, 昨今の学校状況からすると卒倒ものだ.

子どものときに読んでいたときは気がつかなかったけど, ローラに比べてアルマンゾの家は相当裕福だったんだなあ.

10月2日_

C++14規格レビュー勉強会(一般参加用)

C++14で入る予定の機能に関する勉強会をします. 初心者向けではありませんが, 興味のある方はどうぞ. 私は実行時サイズの配列まわりを担当する予定です.

10月1日_

『助けてといえない』(NHKクローズアップ現代取材班)

2009年に「たすけて」という便箋を残して39歳の男性が餓死したニュースをきっかけとして, 孤立する30代(1960年代生まれ)の実体を探る.

その番組は見ていないのだが反響が大きかったらしい. 一度失敗したらリカバリーできない社会, 全て「自己責任」で個人の問題に押しつけてしまう社会が恐ろしい.

ただドキュメンタリーとしては文章が弱いように感じた. "イケメン"ホームレスということばもあざとい. 餓死を追ったルポとしてはかなり昔に読んだ『人の砂漠』(沢木耕太郎)に収録されていた「おばあさんが死んだ」の強烈な印象が忘れられない.

まあ, それはともかくホームレスの自立支援を行ってる奥田さんは本当に凄い.

後半に収録されている「三十代の危機」(平野啓一郎)の共有体験を持ってない(失った後の)世代という分析はなるほどと思う. それから個人に対する「分人」という概念も(まあ目新しくはないけど)おもしろい. しかし親にすら助けてといえない人に, 会社や趣味やそれぞれに対する分人を考えれば楽になるというのは楽観的すぎるというか解決につながってない気がする.


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