トップ 最新 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2009-03-03 [長年日記]

_ [雑記]母板交換

テスト用に持ってきていた筐体の中身を TigerMPX with AthlonMP2800+から TigerK8W + Opteron 242へ換装した。

32bit modeでの SADの実行速度だと AthlonMP2800+の方が僅かに早い模様。 やはり、クロック差が地味に効いている? (AthlonMP final core 2.133GHz vs Opteron CG core 1.6GHz)

TigerMPX-4M 32bit専用ならまだまだ戦える TigerMPX-4M with AthlonMP 2800+

TigerK8W PATA/SATA両方使えるテスト機として復帰した TigerK8W with Opteron 242


2009-03-04 [長年日記]

_ [SAD]ベンチマーク

AthlongMP2800+(2133MHz)と Opteron 242(1600MHz)の比較が結構おもしろい

CPU Clock OS Compiler FunctionOpticsTrackingMatchingOver All
Opteron 242 1.6GHz FreeBSD/amd64 7.1R GCC 4.4.0 20080905(-O3)3.6005.0886.0314.613.2496
Opteron 242 1.6GHz FreeBSD/amd64 7.1R GCC 4.4.0 20080905(-O1)3.9965.1986.4744.699.2657
AlthonMP2800+ 2.13GHzFreeBSD/i386 7.1R GCC 4.4.0 20080905(-O3)4.7895.2894.9704.585.2686
AlthonMP2800+ 2.13GHzFreeBSD/i386 7.1R GCC 4.4.0 20080905(-O1)5.5045.1784.9964.513.2733
Opteron 242 1.6GHz FreeBSD/i386 7.1R GCC 4.4.0 20080905(-O3)4.5285.7026.5115.027.2874
Opteron 242 1.6GHz FreeBSD/i386 7.1R GCC 4.4.0 20080905(-O1)4.7965.9206.5525.230.2986
Opteron 242 1.6GHz FreeBSD/amd64 7.1R GCC 4.4.0 20080905(-m32 -O3)4.6166.0387.0825.322.3020
Opteron 242 1.6GHz FreeBSD/amd64 7.1R GCC 4.4.0 20080905(-m32 -O1)4.8136.2307.1825.478.3114
  • 32bitモードのみで動かすと実クロックの高いAthlonMP2800+が僅かに早い
  • Opteron CG coreのクロック当たりの性能はAthlongMP Barton coreよりも高い
  • Opteron CG coreの64bitモードは、32bitモードに対して15%優速
  • Opteron CG coreの64bitモード内で 32bitバイナリを動作させると5%程度のオーバーヘッドがある

要するに、AMD64なプロセッサでは、可能な限り64bitバイナリを走らせた方が 良いという当たり前の結論にたどり着く。 また、64bitモード内での32bitバイナリ互換機能を使うことが前提なら 最初から32bitモードで動作させた方が良い。

_ [FreeBSD]7-STABLEがbroken?

手元の i386環境だと起動1秒目でハングアップ Orz

Copyright (c) 1992-2009 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 7.1-STABLE #0: Wed Mar  4 16:01:29 JST 2009
    amorita@morita-pc2.kek.jp:/var/obj/usr/SRC/RELENG_7/sys/RUMIYA
WARNING: DIAGNOSTIC option enabled, expect reduced performance.
panic: vm_page_startup: inconsistent page counts
Uptime: 1s

アサートに引っかかるのは、vm_page_startup()@sys/vm/vm_page.cで、 最近の変更は

revision 1.357.2.6
date: 2009/02/26 15:59:22;  author: jhb;  state: Exp;  lines: +129 -14
SVN rev 189075 on 2009-02-26 15:59:22Z by jhb

MFC: Add support for "superpages" on amd64 and i386.  This includes adding the
superpage reservation system to the machine-independent VM system as well as
changes to the pmap code for amd64 and i386 to support superpages.

Reviewed by:    alc
Tested by:      ps
revision 1.357.2.5
date: 2009/01/17 14:45:07;  author: kib;  state: Exp;  lines: +5 -1
SVN rev 187364 on 2009-01-17 14:45:07Z by kib

MFC r186719:
Extend the struct vm_page wire_count to u_int to avoid the overflow of
the counter, that may happen when too many sendfile(2) calls are being
executed with this vnode.

To keep the size of the struct vm_page and offsets of the fields
accessed by out-of-tree modules, swap the types and locations of the
wire_count and cow fields. Add safety checks to detect cow overflow and
force fallback to the normal copy code for zero-copy sockets.

だが、2009-02-18に構築したカーネルは動いているので SVN rev 189075が怪しい?

_ [FreeBSD]7-stable/amd64も不調

2009-02-18にビルドした 7-stable/amd64なカーネルがshutdown時に 必ずパニックになる Orz

Waiting (max 60 seconds) for system process `vnlru' to stop...done
Waiting (max 60 seconds) for system process `bufdaemon' to stop...done
Waiting (max 60 seconds) for system process `syncer' to stop...
Syncing disks, vnodes remaining...6 6 4 3 3 0 0 0 done
All buffers synced.
panic: insmntque() failed: error 16
cpuid = 0
Uptime: 2d2h30m33s
Physical memory: 16374 MB
Dumping 2057 MB: 2042 ....

一方、2009-03-04にビルドした 7-stable/amd64カーネルは デバイス認識に進んだ後、恐ろしい勢いでパニックメッセージを吐いて リブートしてしまう。 メッセージを確認するには、シリアルコンソールかビデオカメラが 必要な気がするぞ Orz

_ [FreeBSD][雑記]ブランチの時刻指定cvs checkout

時刻指定でRELENG_7を checkoutしようと思ったのだが、 -rオプションと -Dオプションが両立しないことに気がついた。

-jオプションで差分を当てて巻き戻すのはエレガントで無いし、 どうしたものか?


2009-03-09 [長年日記]

_ [FreeBSD]INVARIANTS is broken on 7-stable

先日の起動不良の件であるが、 FreeBSD/i386なカーネルに関しては、どうやら INVARIANTSINVARIANT_SUPPORTが付いていると 起動時にpanic: vm_page_startup: inconsistent page countsを 発生することが分かった。


2009-03-10 [長年日記]

_ [FreeBSD]make -j8 buildworld

% grep ^CPU /var/run/dmesg.boot
CPU: Quad-Core AMD Opteron(tm) Processor 2376 (2300.11-MHz K8-class CPU)

な環境で、NO_BLUETOOH, NO_LPR, NO_SENDMAIL, NO_BIND付き

BDECFLAGS=      -W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align \\
                -Wcast-qual -Wchar-subscripts -Winline \\
                -Wmissing-prototypes -Wnested-externs -Wpointer-arith \\
                -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings
CFLAGS= -O2 -fno-strict-aliasing -pipe

で実行した結果

--------------------------------------------------------------
>>> World build completed on Tue Mar 10 20:47:45 JST 2009
--------------------------------------------------------------
3561.490u 1076.600s 18:52.50 409.5%     6078+2008k 29714+7580io 4041pf+0w

実効並列度は、4が限界の模様

Y氏のニューマシン より遅いのは、最適化 or I/O回りが原因か?

本日のツッコミ(全1件) [ツッコミを入れる]

_ Y氏 [最適化はデフォのままです。]


2009-03-11 [長年日記]

_ [FreeBSD]make -j8 buildworld

/etc/make.confの最適化オプションと NO_*を外した状態で、 /usr/objMFS化して再チャレンジ

% grep ^CPU /var/run/dmesg.boot
CPU: Quad-Core AMD Opteron(tm) Processor 2376 (2300.11-MHz K8-class CPU)
--------------------------------------------------------------
>>> World build completed on Wed Mar 11 16:27:12 JST 2009
--------------------------------------------------------------
3650.744u 990.505s 17:52.16 432.8%      6277+2052k 30871+7984io 4422pf+0w

あと残るのは、/usr/srcへの atime更新に伴うアクセスか?


2009-03-12 [長年日記]

_ [SAD]OpenSolaris

取り合えず、Sun Studio Expressを使ったコンパイルで、 FFSが起動程度まで動くバイナリを生成出来る所まで到達した。

strtodの動作が、おかしいような気がする。 マニュアルの記述ではISO C99に適合し、 0xで始まる16進数をサポートするはずなのだが...


2009-03-13 [長年日記]

_ [Admin]久々にハングアップ

3wareの 3DM2を止めてから快調だったのですが、 またしても原因不明のハングアップです Orz

uptimeは、1月25日から50日弱でした

_ [SAD]OpenSolaris + SunStudio Express

まだ、全部コミットが終わっていないけど、 Revision 2834以降で、 SunStudio Express on OpenSolaris/x86な環境で SADのコンパイルと bench2.sadの実行に 成功しました。

ただし、-stackvar(スタック上にサブルーチン変数を置く。 要するに、間接再帰での動作を保証する)とかを付けないと、 正しく動かない&最適化レベルを上げる(たとえば、-xO3)と 正しく動作しなくなるといった状況です。

実行速度は-xO1では、GCC 4.4.0で生成した バイナリよりも遅く、-xO3は実用にならないので あくまでも開発用の域を出ません。

やはり、SADのFortranコードが言語仕様で保証される範囲を 逸脱しているのが諸悪の根源か?

あと、*BSDやLinuxと浮動小数点トラップの扱いが異なるらしく bench2.sadの実行中やTkinter周りの動作時にFPEが 発生するので実運用では問題が出ると思います。


2009-03-16 [長年日記]

_ [SAD]SAD on SunStudio Express

Option bench2.sad Notes
-g -xO1 OK
-g -xO2 -- 内部エラー *1
-g -xO2(-xO1 for tfshow.f) SEGV at Fact[200] Fact[200] -> Fact[170]で、OKに *2
-g -xO3 SEGV at Fact[200] Fact[200] -> Fact[170]で、OKに *2
*1
sunf95 -o tfshow.o -c  -g -xO2  -xtypemap=integer:32,real:64,double:64 -xalias=dummy,overindex -stackvar  -I/export/home/amorita/SVNwork/SAD/trunk/src -I/export/home/amorita/SVNwork/SAD/trunk/arch/i386-SunOS5/include -I/usr/X11R6/include -I/export/home/amorita/SVNwork/SAD/trunk/arch/i386-SunOS5/include -I/export/home/amorita/SVNwork/SAD/trunk/obj/i386-SunOS5   /export/home/amorita/SVNwork/SAD/trunk/src/tfshow.f
sunf95: Warning: Option -xalias has no effect if the optimizer level is -xO2 or below

assertion failed in function gather_proc_statistic() @ cginit.c:59
assert(ex_op_(eopcall) == EOPCALL)
*2
--- script/bench2.sad.orig	2009-03-12 14:57:39.565946294 +0900
+++ script/bench2.sad	2009-03-16 11:44:27.671423463 +0900
@@ -765,7 +765,7 @@
       Print[Timing[Do[Fact/@[a,{-1}],{1}];"Map"]];
       Print[Timing[Do[Thread[a],{30}];"Thread Real List"]];
       Print[Timing[Do[Thread[b],{15}];"Thread Non-Real List"]];
-      Print[Timing[Do[Fact[200],{500}];"Fact"]];
+      Print[Timing[Do[Fact[170],{500}];"Fact"]];
       Print[Timing[Do[Flatten[b],{16}];"Flatten"]];

       Print[" \n******* Function Test CPU used = ",tf=TimeUsed[]-t0," sec\n"]);

Fact[200]で、Overflow Trapが発生した後の動作が怪しい。 おそらく、Floating Point Exceptionの扱いに問題がある。


2009-03-17 [長年日記]

_ [SAD]FPE on OpenSolaris

コンパイラオプションで、デフォルトのFPE trapを無効化して対応。 一応、script/bench2.sadがそのまま動くようになった...

もっとも、途中でFPEが発生した際に Timing[]関数の戻り値が おかしくなること自体が問題な気もする。

_ [SAD]getfd(3f) on SunStudio

FortranのLogical Unit Numberからunix file descriptorを 取り出す関数が、SunStudioに有ったので有効化する(Rev.2838)

これで、Pipe[]とかが動くようになるはず


2009-03-24 [長年日記]

_ [SAD]ORGコマンド覚書

ORG element_ gx_ gy_ gz_ [chi1_ chi2_ chi3_]

elementの(ビームラインに並べる前の)入り口を(gx,gy,gz)へ 載せた状態から、ビーム座標系と大域座標系を(chi1,chi2,chi3)で回転させる。

つまり、DIR=-1でビームラインに組み込まれているelementを 参照すると、エレメントを並べる前の入り口が基準になるので、 実質的にelementの出口の座標系を揃えることになるので要注意。

  • chi1,chi2,chi3に負の値を書くときは、(, )で括ること(コマンドラインパーサーのバグだと思うのだが...Orz)
  • DIR=-1のelementを参照するときは、element-1と書くと良い

2009-03-27 [長年日記]

_ [SAD]amsad6完成間近

MacOS X 10.5/i386用の SAD cluster構築手順書の検証& ツール類のアップデートと動作確認をしていたら、ほぼ実戦投入 可能なところまで来てしまった orz

積み残しとしては

  • VNC server環境用のfvwm
  • X11のmenuの設定

あたりかな?


カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記