http://mic-hackathon.peatix.com/
隣の席の人に来いとか言われたので行ってきた。
とりあえずばーっと作業して作った資料↓
https://skydrive.live.com/view.aspx?cid=ECB59E566C2D71F1&resid=ECB59E566C2D71F1!1467&app=PowerPoint
ちょうど1日で作業クローズさせたし偉すぎるな…なんか最近作業継続力なさすぎて逆に一日で終わる課題設定力上がってる気がしないでもない。
以下あとでまとめようと思って書いてためも(たぶんまとめないが)
まあ作業はじめた。おいもう12時か… まあmicでGCC動かせるところまで頑張ろう。 いやまずbinutilsか。 http://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss からソースとってきてつくる。 ./configure --target=x86_64-pc-linux-gnu --host=x86_64-k1om-linux 一発で通った。 すばらしいな。x86機械語()がそのまま()動く()から移植性()高すぎでしょ()とか言って馬鹿にしててすいません。 まあつまりシンプルなコアでもPOSIX動くかどうかはかなり重要ということだな。 さてGCCでクロスコンパイラをクロスで作る方法ってどうすればいいんだ。libgcc とかどうやってビルドされるんだっけ… <a href="http://trac.cross-lfs.org/">CLFS</a> でも読むか…<a href="http://cross-lfs.org/view/CLFS-2.0.0/mips/cross-tools/gcc-static.html"> これ </a> いや.oが出ればいいんだからlibgccいらないんだよな。 つまり、 --enable-languages=c,c++ で、 all-gcc すればいいのかな。 oh... mpfr/gmp/mpc がいるのだった。 GMP ... それなりにはまった。なんだっけ。デフォルトだと -mtune=k8 が付いて、そうするとffreep 命令が出て、ffreep命令はkncで対応してないとかだった。あとcmovを直接書いてる。 まあできた。ついに本体。 ../../gcc/configure --target=x86_64-pc-linux-gnu --host=x86_64-k1om-linux --prefix=/home/tanakmura/usr/gcc --with-gmp=/home/w0/k1om/dest/home/tanakmura/usr/gcc --with-mpfr=/home/w0/k1om/dest/home/tanakmura/usr/gcc --with-mpc=/home/w0/k1om/dest/home/tanakmura/usr/gcc --enable-languages=c --disable-libssp --disable-libmudflap --disable-threads --disable-bootstrap こんな感じにした。まあこれでいけたらc,c++もやるか。 作業してると話聞けない…まあでもなんか意味も無く30時間ぐらい起きてるからあんまりこれから徹夜する元気とか無いが… http://www.gentoo.org/doc/ja/cross-compiling-distcc.xml このページが無かったら人生で色々諦めてたと思う。 mic make -j 128 (distccmon-textで見てると50ぐらいで飽和<さち>ってるように見えたが) /home/tanakmura/src/linux-3.10.4/init/do_mounts.c:430: undefined reference to `__stack_chk_guard' init/built-in.o: In function `change_floppy': /home/tanakmura/src/linux-3.10.4/init/do_mounts.c:474: undefined reference to `__stack_chk_guard' init/built-in.o:/home/tanakmura/src/linux-3.10.4/init/do_mounts.c:499: more undefined references to `__stack_chk_guard' follow make: *** [vmlinux] Error 1 Command exited with non-zero status 2 Command being timed: "make -j128" User time (seconds): 779.64 System time (seconds): 257.20 Percent of CPU this job got: 144% Elapsed (wall clock) time (h:mm:ss or m:ss): 11:55.63 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 1195216 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 4 Minor (reclaiming a frame) page faults: 51564617 Voluntary context switches: 565757 Involuntary context switches: 249978 Swaps: 0 File system inputs: 2248 File system outputs: 20335824 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 2 [tanakmura@YamadaSystem002 linux-3.10.4]$ /usr/bin/time -v make -j128 なんかリンク失敗する。まあホストgcc4.4 で Phi がgcc4.7だからな… Haswell 2.4GHz make[1]: *** [drivers/infiniband/core/ib_umad.mod.o] Interrupt make[1]: *** [drivers/infiniband/core/ib_ucm.mod.o] Interrupt make: *** [modules] Interrupt Command terminated by signal 2 Command being timed: "make -j8" User time (seconds): 5804.34 System time (seconds): 757.96 Percent of CPU this job got: 624% Elapsed (wall clock) time (h:mm:ss or m:ss): 17:31.26 Average shared text size (kbytes): 0 Average unshared data size (kbytes): 0 Average stack size (kbytes): 0 Average total size (kbytes): 0 Maximum resident set size (kbytes): 431084 Average resident set size (kbytes): 0 Major (requiring I/O) page faults: 7124 Minor (reclaiming a frame) page faults: 137308746 Voluntary context switches: 764752 Involuntary context switches: 1001000 Swaps: 0 File system inputs: 2106456 File system outputs: 10602168 Socket messages sent: 0 Socket messages received: 0 Signals delivered: 0 Page size (bytes): 4096 Exit status: 0 [w0@localhost linux-3.10.4]$ cat /proc/cpuinfo processor : 0 あenable-languages=c++やってない。まあいいか… リンク後途中で止めたけど1分ぐらいなんかやってたから条件同じにするなら16分くらいかな…ちゃんとはかるべきだった。 あとこのノートPCはじめてちゃんと椅子に座って使ったが角が鋭利でいたい。
なんかgithubに成果上げろと言われたができたバイナリぼんと置けばいいのかな…