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に成果上げろと言われたができたバイナリぼんと置けばいいのかな…

まあGCCのクロスコンパイル手順とか実績ある作業手順を残したほうがいい気もする。