64bits
linux で 64 ビット環境を構築。そして64ビットマルチプロセス対応プログラムを作る - 志を立てるのに、遅すぎることはない -- by ピカソ河
↪ 新規投稿する
全52件 - 52 42 32 22 12 2
43 owa #e8faefa 2007/10/29 22:37 prob:0.0%
ビットの連続抽出 0.230秒/100万 (gcc -O3 Athlon64x2 3800+ x86_64 vine seed) 0.513秒/100万 (gcc -O3 Athlon64x2 3800+ i386 vine 4.1) ビット位置を一個ずつ取り出すイテレータ。 肝は bits & (-bits) で LSB (Least Significant Bit) が求められること。 --- #if defined(__x86_64__) typedef unsigned long ULong; #elif defined(__i386__) typedef unsigned long long ULong; #endif class CBitPos { ULong bits; public: CBitPos(ULong x) : bits(x) {} ULong next() { ULong x = bits & (-bits); bits &= ~x; return x; } }; --- 一回あたり44ビットONのデータで測定。つまり一個のイテレータで44回ループ処理した。 for (long i = 0; i < 1000000L; i++) { CBitPos a(0x7777777777773333LL); int pos = a.next(); while (pos) pos = a.next(); } ちなみに MSB (Most Significant Bit) を求める方法を用いると三倍くらい遅くなる。 --- x |= (x >> 1); x |= (x >> 2); x |= (x >> 4); x |= (x >> 8); x |= (x >> 16); x |= (x >> 32); x &= ~(x >> 1); ---
42 owa #e8faefa 2007/10/29 22:18 prob:0.0%
ビット数のカウント 0.0085秒/100万 (gcc -O3 Athlon64x2 3800+ x86_64 vine seed) 0.0251秒/100万 (gcc -O3 Athlon64x2 3800+ i386 vine 4.1) 立ってるビットを数えるには隣同士の和を求めることを繰り返す。 --- int bitcount(unsigned long long x) { x -= ((x >> 1) & 0x5555555555555555LL); x = (((x >> 2) & 0x3333333333333333LL) + (x & 0x3333333333333333LL)); x = (((x >> 4) + x) & 0x0f0f0f0f0f0f0f0fLL); x += (x >> 8); x += (x >> 16); x += (x >> 32); return x & 0x0000007f; } --- 参考サイト: http://www.nminoru.jp/~nminoru/programming/bitcount.html http://aggregate.org/MAGIC/#Most%20Significant%201%20Bit http://graphics.stanford.edu/~seander/bithacks.html
41 owa #e8faefa 2007/08/22 01:01 prob:0.0%
80コアチップ http://pc.watch.impress.co.jp/docs/2007/0215/kaigai337.htm http://pc.watch.impress.co.jp/docs/2007/0214/isscc02.htm 8x10=80CPU だそうです。おしいな 9x9=81CPU だと面白いかも^^; 64コアCPU なんてのも http://pc.watch.impress.co.jp/docs/2007/0821/tilera.htm http://www.tilera.com/products/processors.php
40 owa #e8faefa 2007/03/14 15:02 prob:0.0%
円周率 300 万桁の計算 http://www.h2np.net/pi/ これは hoihoi-p 氏のブログから http://hoihoi-p.yosiki.org/blog/435 http://h2np.net/pi/pi_quick_start.tar.gz を試してみると Pentium4 2.8E (32bit): 14.77 sec Athlon64 3700+ (32bit): 10.15 sec Athlon64 3700+ (64bit): 5.92 sec 予備マシンながら、なかなかの性能^^
39 owa #e8faefa 2006/07/26 23:27 prob:0.0%
Debian to Run on AMD64 http://linux.slashdot.org/linux/06/07/26/0057215.shtml http://linux.slashdot.org/comments.pl?sid=192198&cid=15782532 明日読もう。
38 owa #e8faefa 2006/07/06 01:12 prob:0.0%
マシンの起動時にエラーが出るので良く見たら which コマンドなどがセグメンテーションエラー。 リビルドしてみると /usr/lib/libiberty.a なんてゴミを拾ってた。 こいつは本来 binutils-*.x86_64.rpm 入れた時に削除されてるはずのもの。なんでだろう... やっぱり大掃除しないといかんなー 追記: 一応 /lib, /usr/lib の下は掃除完了
37 owa #e8faefa 2006/05/29 23:57 prob:0.0%
>>36 util-linux-2.12p-0vl4 ... 大量に依存関係のエラー 古い i386 版が残っていたためでした。少し間隔が空いて惚けてますね;; gtk2 関連が整備されて来たので、試しに Sylpheed をビルドしたら OK これでセカンドマシンとして十分機能する状態になりました w(^o^)w
36 owa #e8faefa 2006/05/28 23:14 prob:0.0%
久しぶりに vine x86_64 を apt-get; dist-upgrade してみた。 いつの間にかいろいろ更新されてました。感謝。 http://owa.as.wakwak.ne.jp/zope/docs/Vine/release 寝る前に、もう一度 dist-upgrade を試みたら util-linux-2.12p-0vl4 を入れるとおっしゃる。 そして大量に依存関係のエラーが出ました;; util-linux-2.12p-0vl4 はもう入ってるので、うちの rpm がおかしくなってるのか? udev 関連の下調べがまだ出来てないし、基本的なところに少し勉強時間が必要ですね。 しかし今週も、何も出来ないことが判っています。すいません。 # と思いながらメインの Seed の方も apt-get しようとしたら沢山入れ換えがあるみたい。 # 今日は何もしない、何も足さないで寝るのが吉かも。
35 owa #e8faefa 2006/05/19 22:59 prob:0.0%
Vine は lib/lib64 ですが lib32/lib の組合せもあるらしい。その方が自然かも。 ただ 32 ビットモードで動作するプログラムは lib/lib64 の組合せでないと動きません。 http://japan.linux.com/desktop/06/05/19/0241229.shtml?topic=1 その中で紹介されてるのが mozilla の i386 版 plug-in を x86_64 で使うためのラッパー http://www.gibix.net/dokuwiki/en:projects:nspluginwrapper とりあえずリンクだけ
34 owa #e8faefa 2006/05/14 23:03 prob:0.0%
念のため memtest86 を試した http://www.memtest86.com/ 試すのは簡単。以下の手順で 5 分もあればできます。 まずメインの i386 マシンで floppy をフォーマットします 現在の VineSeed 環境では /dev/fd0H1440 では無く /dev/fd0u1440 です。知りませんでした;; $ fdformat /dev/fd0u1440 $ mformat -t 80 -h 2 -s 18 a: 次に memtest86 をインストールします。 $ wget http://www.memtest86.com/memtest86-3.2.tar.gz $ tar xvzf memtest86-3.2.tar.gz $ cd memtest86-3.2/ $ make $ make install dd <memtest.bin >/dev/fd0 bs=8192 11+1 records in 11+1 records out 94356 bytes (94 kB) copied, 3.53392 seconds, 26.7 kB/s これで /dev/fd0 にインストールされます あとはできあがった floppy を AMD64 マシンにセットしてリブートすれば OK です。 #0 〜 #9 のテストが一応無事通りました (1 時間くらい)。 まだマシンの換気が悪いので、ほどほどで止めて置きます。 kernel と gcc がビルドできれば少し安心できるかと思いますが、それはまた後で。 http://www-06.ibm.com/jp/developerworks/linux/010608/j_l-hw1.html