ToDo:
http://www.shimamoto-ele04.ed.jp/syokuin_zidou_top/syokuinkousei.htm
ふと目に入ったのだけど、 人数少なくね… 1学年100人くらいはいたように思うのだけど。
(11:51)
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20090326#p02
出てるのかあ。 買ってみようかなぁと思うけどPS2もテレビも崩壊してるなあ。
(12:27)
http://d.hatena.ne.jp/sugyan/20090326/1238007478
via http://d.hatena.ne.jp/kazuhooku/20090326/1238045916
末尾の空白がイヤなら
@s=("%02X")x16;printf"@s\n"x16,0..255;
で良いと思う。
なんかもちょい縮みそうな気はするけど Perl むつかしいな
(19:39)
しんどくて思考ができないけど 寝れないので新都社のマンガを適当に見てみる。 面白いの見つけた。
http://puripeni.web.fc2.com/index.html
人狼としてはまぁどうだろう、 実際の名ログとかの方がはるかに面白いという感じだけど、 途中から脈絡もなく踊ったりしてるのが面白すぎる。
(23:10)
http://longlong.way-nifty.com/blog/2009/03/700-c9db.html
もし良ければ軽く書いていただけるとありがたいかなぁと思います。
僕が最初に60倍ちょい越えの人がやってそうな工夫を 一通り紹介してみようかと思いますので、 基本的な工夫はナシですごい部分だけ書いてもらう感じでどうかな、と。
http://shinh.skr.jp/h/?HackTheCellPostMortem
↑適当にこんな話をしてもらえればいいかなーと 妄想で「何をするか」の欄を更新しておきました。 あと、現場はプロジェクタはあるそうです。
(01:42)
LLVM勉強会は遅れていって yarv2llvm から。
http://d.hatena.ne.jp/miura1729/20090323/1237779835
大変面白かったんだけど、 なんか色々ヘンにつっこんでしまった気がした。 疑問をすぐ聞いてたら なんかあら探しチックになってしまった感じで申し訳なかった。
Clang はまぁ案外面白いことやってるんだなぁとか思った。 tccparser とかもそうだけど、 C コンパイラライブラリって かなり長い間欲しかった感じがするんだけど、 というかそいうのがしたくて binary 2.0 なんちゃらとかで発表したりしたんだけど、 最近あんま興味ないんだよな。
SWIG生成なんかは超実用的だと思うし、 GCCXML 使った cableswig とか実際にあるわけだけど、 こうなんか現実的になりすぎちゃってねえという無いものねだり感が。 GCC plugin branch vs GCCXML vs Clang vs Doxygen とか オルタナティブも色々ある感じだしねえ。
あと LLVM 自体も類似技術との対決は面白いかも。 LLVM vs C-- vs TCG vs ... とかね。
呑み会は他に外せないのがあったので参加できず
(02:19)
普通に log(n) 回の行列計算でいけるかなーとか思ったら kik さんが書いてた上に諦めていた。
http://d.hatena.ne.jp/kikx/20090321#1237632002
でぱっと見 kodera さんのがそれ実際にやってる感じに見えるけど、 えーと違うのかな。
http://longlong.way-nifty.com/blog/2009/03/hack-the-cell-0.html
なんか違う気がした。
ああそうか、たぶん、分割数が 4 なら、
と担当すればいいって話か。 ただこれは mt の更新行列がそれなりに複雑になっちゃうだろうから、 log(n) べき乗ができるならそっちの方が良さそうだなぁ。
次元の3乗のオーダーを log(n) 回ってそんなに大きくないんじゃないかな… とか思ったけど、 20000次元**3 を 128 並列でできるので、 62ギガ単位の話。 積和命令とかあった気がするし 62G clock でいけるの? よーわからんけど悪くて 124G clock だろう。 8コア使うって前提の話なので、 15G clock か。 今回の mt_kadai のサンプルくらいだと現実的じゃないけど、 もっと激しく大きければ案外いけるくらい?
眠いので根本的に色々まちがっていそうだ。
(03:00)
まあこの手のは基本的にはパズルでしかないので cell 自体の経験はあんま関係ないんじゃないかなぁ。
あたりがどっちかというとメインだった気がする。 even-odd の量をうまく散らすとかは重要だけど、 命令数たいして多くないから おおまかに把握するのにそんなに時間はかからないしなあ。 命令をうまく使って命令数減らすのも重要っちゃ重要だけど kik さん以外はたくさん減るのは見つけてない感じだよねたぶん。
一方 x86 とか経験がすごい生きそうだよなぁ。 herumi さんに勝てる気とか全然しない。
と書いてみて x86-64 でこいうコンテストとかも 割と面白いかもなーとか思った。 Core 2 Duo あたりで。 僕自信は勝負になる気がしないが。 誰かやらんかな。
(03:15)
分割数が 8 として、 num_rand が 8*10**7 だとして、 800 程度進める行列を普通に(log(n)とか考えずに)作るのは たぶん 640000 回ループ回す程度のコストでできて、
とかいう感じで分割すれば、 通常のループを 10**7 回と、 800 進める行列を 10**5 回かける時間で計算できるんじゃないかなぁ。 そしたら 10**7 回のループが律速な感じだから だいたい 8 倍になってる気がするなぁ、 とか思ったけど定かではない。
(03:30)
これで8倍になるんだったら SIMD ったら shufb, selb, rotqw* あたりが消えたりするのかな。 というかそれが
http://pc11.2ch.net/test/read.cgi/tech/1232817361/581
が言っていたことか。やっとわかった。
shufb とかも減れば odd も減りそうだけど、どうなんかな。 だとすると SPU 1個でももっとフザけた倍率出たりするのかな?
(03:37)
http://d.hatena.ne.jp/firewood/20090322/1237659723
いいかげんな正規表現がそれなりに有効というのはとても同意… 元の正規表現で実用上一番問題なのはプラスが入ってないこと、かなぁ?
とかはいいとして、
http://blog.livedoor.jp/dankogai/archives/51189905.html
の From: Anonymous <nobody@example.com> を Perl の正規表現ならできる…っていうのは 実物がもしあるんなら見てみたいな。 自分では全然知らんけど、聞きかじった知識を元に考えると大変そうで、 結構とんでもないことになってそう。
(04:27)
とりあえずやらにゃならなさそうなのは、
あたりか。
(12:51)
かように明らかに不健康であるものの、 健康診断では特に不健康だとは言われないのであった。 これほんとに役に立つんかなー。
前回は身長172.7体重52.9とかで判定 Cb とかで軽度異常とかだったらしいんだけど、 今回は身長172.6体重51.5とかで平均からの逸脱は激しくなってると思うのに 判定 B とかになっていた。 何が基準だかさっぱりわからんがまぁ 体重とかで異常とかわからんということじゃないかと思う。
まあそんなことよりヘモグロビンが足りないらしい。 件の前立腺には亜鉛が良いらしいんだけど、 要は何かしら鉄っぽいものが足りてないのかなぁ。 たしかになんか会社のメシで内蔵とか出ないしな。
(00:17)
なんか zsh が動かんくなっていた。 libncurses がどうこうらしい。 とりあえず .cshrc をどければ普通にログインできるようだった。 ちょっとほげった感じ bash があればとりあえず良さげなので exec /usr/local/bin/bash とかでお茶を濁すことに。
(00:28)
推定4位(99-100倍の範囲に人がいたら5位)かー。 120倍付近にはいたかった感じだなぁ。 未だによくわかってないけど lqr 多すぎとかが メインの死因だったのかなぁ。 今度調べよう。
110倍台のところにいる人はどなたなんだろうか どいう違いがあったんだろうと気になるな。
学生弱いのは cell challenge のおかげで oxy さんみたいな頭おかしいのがいなかったとかありそうだなぁ。
(06:03)
わかってる範囲では
あたりで、 bit いじった人で 現段階で post mortem にもいらっしゃらなさげな方は 110倍台の人だけかなぁという。
(06:18)
def bitonic_sort(a, b, e, z) s = (e-b)/2 return if s == 0 s.times{|i| if a[b+i+s] && ((z != 0) ^ (a[b+i] > a[b+i+s])) a[b+i], a[b+i+s] = a[b+i+s], a[b+i] end } bitonic_sort(a, b, b + s, z) bitonic_sort(a, b + s, e, z) end def bitonic_merge_sort(a) s = 1 n = a.size while n > 1 n /= 2 s *= 2 n.times{|i| bitonic_sort(a, s*i, s*i+s, i%2) } end end a = [*0...32].sort_by{rand} p a bitonic_merge_sort(a) p a
こんなかんじ? 2 の倍数じゃないと動かんが。
(08:20)
http://golf.shinh.org/reveal.rb?Quine/kurimura/1237450284&d
via http://niha.tumblr.com/post/87839196/mixin
なるほどなぁ。
(13:46)
http://www.mail-archive.com/tinycc-devel@nongnu.org/msg01798.html
http://landley.net/code/tinycc/
でこのバグの fix は rob's mail-list とやらにあるはずなんだけど、 その ML 自体見つからんしこまるね
まあ shared object とかの方が面白そうだしそっち見るか
(16:03)
_ niha [>'\0'が〜 ボクもそう思います…]
そういえば
「薬三つ出しとくよ、抗生物質と痛み止めと胃薬」 「胃薬ってなんすか」 「抗生物質飲むんだから胃薬必要なのは当たり前でしょ。胃荒れちゃうから」
とかそんなかんじの会話があって、 今にして思うとこれもひどい気がした。 当たり前じゃないよ
(00:07)
http://b.hatena.ne.jp/entry/http://shinh.skr.jp/m/?date=20090316%23p06
個人的な感覚では、バッファ破壊してようが 一旦ポインタのリストを返しちゃうような実装だと strtol 連打より遅くなっちゃうし、 かといって callback 渡すような実装だとめんどくさいし、 それにたぶん今時のアーキテクチャじゃ分岐予測的な観点で最速じゃない。 まあ関数オブジェクトなり C++0x の lambda を渡す実装ならいいんだろうけど。
でまあというわけで split/join とかしたい時は 99% 速度なんて気にしてないという法則から、 普通に vector<string> かえす split がとりあえず あったりいいんじゃないかなぁとか思うわけです。 まあ insert_iterator を引数とする関数でも許せなくはない。 join は input iterator 二つに対して lexical_cast<string> かまして 合成していくようなのがあればいいんじゃないかな。
なんかしら、C++ の遅くなるようなものは加えれない原則は インターフェースを壊滅的に使いにくくしてると思うんだよなぁ。 他には assert(hogeMap.insert(make_pair("abc", 4)).second); とか書き飽きた。 second とか冗談じゃないというかんじ。
(00:24)
最近コンビニで復刊してるので地道に買って読んでいる。 足りない分は中古で補完したり別に面白くない部分は飛ばしたりしつつ。 まあ昔読んだことはあるのだけど、地味に面白いなあと思う。 まず「ぼくの考えた理想の社会」ネタは個人的に好きなんだよなぁ。 自分でもよくぼんやり考えるし。
あれこれ考えると自分的には、 「暗黙のうちに個人同士で助けあう仕組みになっていて、戦争がない」 あたりがとりあえずぼくの考えた無敵の理想社会の要素なわけだけど、 後者は目的の同意は簡単に得られるのに方法論がサッパリ見当がつかないんだよね。 そいう意味で破天荒な SF とは言えその方法論が語られるのは面白い。
あとたぶんかわぐちかいじが見開きのとこかなんかに書いていた、 「この本に出てくる人はどの立場の人もみんな自分の仕事に真摯です」 みたいなのがいいなと。 マンガって安易に悪役出しがちだけど、 実際んとこは自分が悪だとはとても思ってない者同士で あらそうケースの方が多いよねー的な
(00:37)
まとめると、
#define min(a, b) ((a) < (b) ? (a) : (b)) printf("min=%d\n", min(1, min(2, -1)));
は常識で考えて展開してくれないとこまる。
int A = 1; #define A 1+A #define B(x) x printf("%d\n", B(A));
は常識で考えて2回展開されちゃこまる。
さらに、マクロは外から展開していかなければならない。
これらを両立させるには、
という感じでやればいいんだと思う。 TCC 的には nested_list をややこしいことにすればたぶん良い。
(22:17)
typedef struct { unsigned long long a: 1; unsigned long long ll: 50; unsigned int r; } S;
に対して
S s; s.ll = 0x123456789aULL;
がこうなる。 こう長くなっちゃうと 最適化しないコンパイラの方が読みにくいとおもう
8048459: 48 b8 9a 78 56 34 12 mov $0x123456789a,%rax 8048460: 00 00 00 8048463: 48 c7 c1 9a 78 56 34 mov $0x3456789a,%rcx 804846a: 48 89 ca mov %rcx,%rdx 804846d: 89 55 ec mov %edx,-0x14(%rbp) 8048470: 48 89 c2 mov %rax,%rdx 8048473: 89 4d e8 mov %ecx,-0x18(%rbp) 8048476: 8b 4d ec mov -0x14(%rbp),%ecx 8048479: 48 89 55 e0 mov %rdx,-0x20(%rbp) 804847d: 8b 55 e8 mov -0x18(%rbp),%edx 8048480: 48 8b 4d e0 mov -0x20(%rbp),%rcx 8048484: 48 89 45 d8 mov %rax,-0x28(%rbp) 8048488: 48 b8 ff ff 03 00 00 mov $0x3ffff,%rax 804848f: 00 00 00 8048492: 48 21 c1 and %rax,%rcx 8048495: 48 89 c8 mov %rcx,%rax 8048498: 48 c1 e0 01 shl $0x1,%rax 804849c: 48 8b 4d f0 mov -0x10(%rbp),%rcx 80484a0: 48 ba 01 00 f8 ff ff mov $0xfffffffffff80001,%rdx 80484a7: ff ff ff 80484aa: 48 21 d1 and %rdx,%rcx 80484ad: 48 89 c2 mov %rax,%rdx 80484b0: 48 89 c8 mov %rcx,%rax 80484b3: 48 09 c2 or %rax,%rdx 80484b6: 48 89 d0 mov %rdx,%rax 80484b9: 48 89 45 f0 mov %rax,-0x10(%rbp)
(00:20)
8048459: 48 b8 9a 78 56 34 12 mov $0x123456789a,%rax 8048460: 00 00 00 8048463: 48 c7 c1 9a 78 56 34 mov $0x3456789a,%rcx 804846a: 48 89 ca mov %rcx,%rdx 804846d: 89 55 ec mov %edx,-0x14(%rbp) // 32, 0x3456789a 8048470: 48 89 c2 mov %rax,%rdx 8048473: 89 4d e8 mov %ecx,-0x18(%rbp) // 32, 0x3456789a 8048476: 8b 4d ec mov -0x14(%rbp),%ecx 8048479: 48 89 55 e0 mov %rdx,-0x20(%rbp) // 64, 0x123456789a // uint32 edx = 0x3456789a; 804847d: 8b 55 e8 mov -0x18(%rbp),%edx // uint64 rcx = 0x123456789a; 8048480: 48 8b 4d e0 mov -0x20(%rbp),%rcx 8048484: 48 89 45 d8 mov %rax,-0x28(%rbp) // 64, 0x123456789a 8048488: 48 b8 ff ff 03 00 00 mov $0x3ffff,%rax 804848f: 00 00 00 // uint64 rcx = 0x3ffff & 0x123456789a; // 18bit from LSB 8048492: 48 21 c1 and %rax,%rcx 8048495: 48 89 c8 mov %rcx,%rax // uint64 rax = (0x3ffff & 0x123456789a) << 1; 8048498: 48 c1 e0 01 shl $0x1,%rax 804849c: 48 8b 4d f0 mov -0x10(%rbp),%rcx 80484a0: 48 ba 01 00 f8 ff ff mov $0xfffffffffff80001,%rdx 80484a7: ff ff ff 80484aa: 48 21 d1 and %rdx,%rcx 80484ad: 48 89 c2 mov %rax,%rdx 80484b0: 48 89 c8 mov %rcx,%rax 80484b3: 48 09 c2 or %rax,%rdx 80484b6: 48 89 d0 mov %rdx,%rax 80484b9: 48 89 45 f0 mov %rax,-0x10(%rbp)
なるほどね。 bitmask が根本的に間違ってるよ。 OK 一見 fix できてる。 つかたぶんこれ x86 でも動くな。
(01:13)
> cat bitfield_ll2.c #include <stdio.h> int main() { struct sbf2 { long long f1 : 3; } st2; st2.f1 = 3; printf("%lld\n", st2.f1); } > gcc bitfield_ll2.c && ./a.out 3 > gcc -m32 bitfield_ll2.c && ./a.out -18650500345888765
GCC ってこのへんどうなの…
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7018
うーん int より小さいものに long long 使うなってか。
(02:28)
http://code.google.com/p/jaikuengine/
opensource すか。
177348 642108 6749045 total
web service の OSS 化って珍しい気もするな。 OpenPNE とかあるか。
一見だからどうした感は否めないけど、 OpenPNE とかみたいにプラグインとかつくれるんなら なんかコミュニティごとに立てるとかできたりするんかいな。 ちなみに OpenPNE に本当にプラグインがあるかは知りません
(03:04)
http://d.hatena.ne.jp/kazuhooku/20090216/1234771983
さすがに 24 はうざいかなあ… とループ書いてみたけど sscanf の方が良い気もした。
#include <stdio.h> #include <stdlib.h> #include <assert.h> int main() { int i; char* buf = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24"; unsigned hits[24]; char* p; for (p = buf, i = 0;; i++) { hits[i] = strtol(p, &p, 10); if (!*p) break; assert(*p == ','); p++; } assert(i == 23); for (i = 0; i < 24; i++) { assert(i+1 == hits[i]); } }
要は assert がうざいのだけど、 strtok は微妙だし strtok_r も標準じゃないしなぁとかいう。 やっぱ split/join は必要なんだよなぁ。
(10:30)
#include <stdio.h> int A = 1; #define A 1+A #define B(x) x int main() { printf("%d\n", B(A)); }
で TCC が 3 とか出力しやがってこまる。 おそらく、 B(A) => B(1+A) => 1+A => 1+1+A の順番で展開されてそうに思える。
でも K&R にある
#define cat(x, y) x ## y cat(cat(1,2), 3)
とかいう例でちゃんとコンパイルコケるってことは 外からやってるのかなぁ。
(11:18)
_ Wcikoeqt [この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5..]
なんか最近頻尿とか残尿感とかそんな感じだなあとか思ってたけど そろそろなんか明らかにおかしいだろと思ったので病院へ行ってきた。
で、なんかちんこもまれるわケツに指つっこまれるわで大変なのだった。いたかった。 ケツに指つっこむのは前立腺の触診プラス精液回収が目的らしいんだけど、 あんま精液出ないな若いのにとか罵倒されてついでに言葉責めもされた。
老人にケツに指つっこまれて精液出すのが正常だなんてひどい話です。
で、なんか出ないもんだから尿道になんか少し入れられて大変いたかった。 あと運動してるかと聞かれてノーと言うと 運動しないヤツは頭でっかちで中身が無いとか そのうち鬱になるとか言われた。
その時はおもろいオッサンだなーとか思ってたけど、 冷静に考えるとひどい話だった。
でまあ前立腺炎とのこと。 悪いことにはならんけどあんま簡単には治らんとのこと。 ひどい。 運動しろ酒飲むな香辛料喰うなと踏んだりけったりである。
そろそろ自分の体のパーツで健康的な部分が無い気がする。
(22:04)
前 | 2025年 1月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ kodera [ああやっぱり、20人ともなると多少は何かあった方が良いですよね。 簡単にパワポでも用意しときます。すごい部分とか言う..]
_ shinh [ええ、結構時間も長いし、意外と話題も多そうですし、なんか資料的なのはあった方がいいかなぁと。 kik さんには頼んで..]
_ kik [プレゼン形式になってない文書はもうたくさん書いたので 新規で作るのめんどくさいんですが ホワイトボードはありますか?]
_ shinh [あ、はい、あれだけあればあの pdf で十分ではないかと思います。ホワイトボードは…まぁあるんじゃないでしょうかと思..]
_ wo [ホワイトボードはあります]