[Go to BBS]
All articles in a thread
SubjectSAD with SUSE Linux
Article No112
Date: 2006/04/21(Fri) 13:10:57
ContributorS. Yoshimoto < >
吉本です。

SUSE Linux 10.0でSADのmakeを試みましたが以下のところでこけます。

gcc-4.1.0 -o tfefundl_.o -c -g -O1 -I/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src \
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c: In function 'dlfuncall_':
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c:150: warning: incompatible implicit declaration of built-in function 'strncpy'
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c: In function 'dlsymfunaloc_':
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c:221: warning: incompatible implicit declaration of built-in function 'strncpy'
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c: In function 'dlfunaloc':
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c:264: warning: incompatible implicit declaration of built-in function 'strlen'
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c: In function 'DynamicCall':
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c:379: warning: incompatible implicit declaration of built-in function 'strlen'
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/tfefundl_.c:386: warning: incompatible implicit declaration of built-in function 'memcpy'
gcc-4.1.0 -o sim/dynl-dl.o -c -g -O1 -I/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src \
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/sim/dynl-dl.c
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/sim/dynl-dl.c: In function 'dynl_symbol':
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/sim/dynl-dl.c:86: error: 'RTLD_NEXT' undeclared (first use in this function)
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/sim/dynl-dl.c:86: error: (Each undeclared identifier is reported only once
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/src/sim/dynl-dl.c:86: error: for each function it appears in.)
make[2]: *** [sim/dynl-dl.o] Error 1
make[2]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/obj/unknown-Linux2'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563'
make: *** [all] Error 2

環境は、

> gfortran -v
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-4.1.0/configure --prefix=/users/yosimoto/local --with-gmp=/users/yosimoto/local --enable-languages=c,fortran --libdir=/users/yosimoto/local/lib --with-mpfr=/users/yosimoto/local
Thread model: posix
gcc version 4.1.0

> uname -a
Linux b-dama 2.6.13-15.8-smp #1 SMP Tue Feb 7 11:07:24 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux

でCPUは
AMD Opteron(tm) Processor 254 stepping 01x2

な構成のマシンです。

SubjectRe: SAD with SUSE Linux
Article No113
Date: 2006/04/22(Sat) 14:41:14
ContributorShin-ichi Yoshimoto < >
吉本です。

> > uname -a
> Linux b-dama 2.6.13-15.8-smp #1 SMP Tue Feb 7 11:07:24 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux
>
> でCPUは
> AMD Opteron(tm) Processor 254 stepping 01x2
>
> な構成のマシンです。

森田さんのアドバイスで、

--- config/Linux.spec.orig 2006-01-17 15:37:18.000000000 +0900
+++ config/Linux.spec 2006-04-21 15:10:31.000000000 +0900
@@ -3,7 +3,7 @@
HAVE_LIBCRYPT=YES
HAVE_LIBUTIL=YES

-OBJDYNL=sim/dynl-dl.o
+#OBJDYNL=sim/dynl-dl.o

ifeq ($(COMPILER),System)
override COMPILER=GCC

とすれば最後までmakeは通りますした、しかし、走らせると以下のように落ちてしまいます。

chmod 755 /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/bin/gs
mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/Documents/example
(cd /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/Documents/example ; \
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/script/design_example.sad > /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/script/design_example.sad.result ; rm -f a fort.9)
lmalloc4: allocated chunk offset is out of range
base=0xfffffffffffb2bd8 heap=0x2aaaaaac1010 offset=0x55555561c87
/bin/sh: line 1: 30413 Segmentation fault /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/script/design_example.sad >/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/script/design_example.sad.result
mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/Documents/example
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/script/help2HTML.sad
*** Welcome to SAD Ver.1.0.8.19.3b Revision 563 [2006-04-19 10:10 JST] ***
*** This binary is built at 2006-04-22 14:31:41 JST ***
*** Today: 14:31:41 Monday 04/22/2006 ***
cpu time= 4.0000E-03(sec) dt= 4.000(msec) free area:: 16148
OFF LOG ECHO;READ 77 ; 23
cpu time= 4.0000E-03(sec) dt= 4.000(msec) free area:: 16148
cpu time= 4.0000E-03(sec) dt= 4.000(msec) free area:: 16147
lmalloc4: allocated chunk offset is out of range
base=0xfffffffffffb2bd8 heap=0x2aaaaaac1010 offset=0x55555561c87
make[2]: *** [/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/Documents/SADHelp.html] Segmentation fault
make[2]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563/obj/unknown-Linux2'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-563'
make: *** [all] Error 2

やっぱり64bitは駄目なのかなぁ?

SubjectRe: SAD with SUSE Linux
Article No114
Date: 2006/04/22(Sat) 15:43:07
ContributorAkio Morita
森田です
> lmalloc4: allocated chunk offset is out of range
> base=0xfffffffffffb2bd8 heap=0x2aaaaaac1010 offset=0x55555561c87
SADでのアドレスの内部表現は、ベースからのオフセットを 8byte word単位で 31bitで数えるので
16GBまでしか表現できません。割り当てられてる heap領域は 0x2aaa aaac 1010なので
表現不可能な領域ですね

> > やっぱり64bitは駄目なのかなぁ?
作戦は、幾つか有って
1. heapの割り当てアドレス空間を制限する
2. common blockを heapと同様の高位アドレス空間に持っていく
3. 全てのアドレス参照にオフセットをかませて、heapと同じ高位アドレス空間にずらす
4. データ構造を、きちんと 64bit化する
でも、一番簡単なのは 32bitバイナリを動かすかな?

SubjectRe: SAD with SUSE Linux
Article No115
Date: 2006/04/23(Sun) 07:41:50
ContributorShin-ichi Yoshimoto < >
吉本です。

> SADでのアドレスの内部表現は、ベースからのオフセットを 8byte word単位で 31bitで数えるので
> 16GBまでしか表現できません。割り当てられてる heap領域は 0x2aaa aaac 1010なので
> 表現不可能な領域ですね

了解しました。

> 作戦は、幾つか有って
> 4. データ構造を、きちんと 64bit化する

これは森田さんに期待するとして(笑)僕の方は

> でも、一番簡単なのは 32bitバイナリを動かすかな?

をやってみます。

SubjectRe: SAD with SUSE Linux
Article No116
Date: 2006/04/26(Wed) 20:58:31
ContributorShin-ichi Yoshimoto < >
吉本です。

564を64bitモードでmakeした結果です。

chmod 755 /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs
mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example
(cd /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example ; \
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad > /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad.result ; rm -f a fort.9)
lmalloc4: allocated chunk offset is out of range
base=0xfffffffffffcd7c0 heap=0x2aaaaaac1010 offset=0x5555555e70a
STOP pfinit is failed to allocate memory
mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/help2HTML.sad
lmalloc4: allocated chunk offset is out of range
base=0xfffffffffffcd7c0 heap=0x2aaaaaac1010 offset=0x5555555e70a
STOP pfinit is failed to allocate memory
*** Welcome to SAD Ver.1.0.8.19.3b Revision 564 [2006-04-25 14:31 JST] ***
*** This binary is built at 2006-04-26 20:50:43 JST ***
*** Today: 20:50:44 Friday 04/26/2006 ***
make[2]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/obj/unknown-Linux2'
make[1]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564'

となりました。ずらす量をを変えればうまくいくのかな?

> > でも、一番簡単なのは 32bitバイナリを動かすかな?
>
> をやってみます。

これはどうやっても作れない事がわかりました。

SubjectRe: SAD with SUSE Linux
Article No117
Date: 2006/04/26(Wed) 21:29:17
ContributorAkio Morita
> 吉本です。
> > 564を64bitモードでmakeした結果です。
> > chmod 755 /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs
> mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example
> (cd /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example ; \
> /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad > /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad.result ; rm -f a fort.9)
> lmalloc4: allocated chunk offset is out of range
> base=0xfffffffffffcd7c0 heap=0x2aaaaaac1010 offset=0x5555555e70a
> STOP pfinit is failed to allocate memory
> > となりました。ずらす量をを変えればうまくいくのかな?
offset=0x5555555e70aだから src/inc/MACCBK.incの RBASEパラメータを現在値から
-5461 * 1024^3ぐらい引けばいいはず....
いまの初期値は 1.5 * 1024^2だからほとんど誤差なので、RBASEを integer*8にして
-5462 * 1073741824(1024^3)ぐらいにしてどうなるでしょうか?

SubjectRe: SAD with SUSE Linux
Article No118
Date: 2006/04/27(Thu) 03:10:01
ContributorShin-ichi Yoshimoto < >
吉本です。

> offset=0x5555555e70aだから src/inc/MACCBK.incの RBASEパラメータを現在値から
> -5461 * 1024^3ぐらい引けばいいはず....
> いまの初期値は 1.5 * 1024^2だからほとんど誤差なので、RBASEを integer*8にして
> -5462 * 1073741824(1024^3)ぐらいにしてどうなるでしょうか?

えっと、RBASEをinteger*8にして値を-5465*1073741824にすると怒られるんで、他に変更しないと
いけないところがあるんじゃないですか?

ちょっと眠いので追いかけるのは明日、いや今日かぁ、します。

from 自宅

SubjectRe: SAD with SUSE Linux
Article No119
Date: 2006/04/27(Thu) 14:27:08
ContributorAkio Morita
URLhttp://acc-physics.kek.jp/SAD/SADrelease/distfiles/oldsad-1.0.8.22.5b.tar.gz
> 吉本です。
> > > offset=0x5555555e70aだから src/inc/MACCBK.incの RBASEパラメータを現在値から
> > -5461 * 1024^3ぐらい引けばいいはず....
> > いまの初期値は 1.5 * 1024^2だからほとんど誤差なので、RBASEを integer*8にして
> > -5462 * 1073741824(1024^3)ぐらいにしてどうなるでしょうか?
> > えっと、RBASEをinteger*8にして値を-5465*1073741824にすると怒られるんで、他に変更しないと
> いけないところがあるんじゃないですか?
>
手持ちのコンパイラでチェックしました
GCC 3.4.4/amd64 OK
GCC 4.2.0/amd64 NG
症状としては、GFORTRANが 配列の添字として暗黙のうちに
integer(integer*4)を仮定している模様
-fdefault-integer-8で、暗黙のうちに仮定する integer型を integer*8にすると
その部分は乗り越えられるが、他の部分でコンパイルエラーがでます

SubjectRe: SAD with SUSE Linux
Article No120
Date: 2006/04/28(Fri) 03:44:21
ContributorShin-ichi Yoshimoto < >
吉本です。

gcc-3.4.6を作ってやってみました。

> diff -u src/inc/MACCBK.inc.orig src/inc/MACCBK.inc
--- src/inc/MACCBK.inc.orig 2006-04-25 14:31:41.000000000 +0900
+++ src/inc/MACCBK.inc 2006-04-28 03:36:25.000000000 +0900
@@ -15,8 +15,8 @@
c
include 'inc/MACMAX.inc'
c define `RBASE': base index number in pfalloc.f
- integer*4 RBASE
- parameter (RBASE=1513*1024)
+ integer*8 RBASE
+ parameter (RBASE=-5462*1073741824)
integer*4 ilistroot,ilistdummy(LILISTDUMMY)
real*8 rlist
integer*4 ilist(2,RBASE:RBASE)

> g77-3.4.6 -v
Reading specs from /raid/users/yosimoto/pkg/bin/../lib/gcc/x86_64-unknown-linux-gnu/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --prefix=/users/yosimoto/pkg --enable-languages=c,f77 -program-suffix=-3.4.6
Thread model: posix
gcc version 3.4.6

> env CC=gcc-3.4.6 FC=g77-3.4.6 make all

(途中省略)

(cd /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example ; \
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad > /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/design_example.sad.result ; rm -f a fort.9)
lmalloc4: allocated chunk offset is out of range
base=0x400bbb800 heap=0x2aaaaaac2010 offset=0x554d53e0d02
STOP pfinit is failed to allocate memory statement executed
mkdir -p /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/Documents/example
/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/bin/gs /users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/script/help2HTML.sad
*** Welcome to SAD Ver.1.0.8.19.3b Revision 564 [2006-04-25 14:31 JST] ***
*** This binary is built at 2006-04-28 03:37:41 JST ***
*** Today: 03:37:41 Friday 04/28/2006 ***
lmalloc4: allocated chunk offset is out of range
base=0x400bbb800 heap=0x2aaaaaac2010 offset=0x554d53e0d02
STOP pfinit is failed to allocate memory statement executed
make[2]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564/obj/unknown-Linux2'
make[1]: Leaving directory `/raid/users/yosimoto/SAD/src/oldsad-amorita-snapshot-564'

コンパイラを変えてずらせ方が変わったのかな?

今日も眠いので、続きは起きてから (^^

よしもと@自宅

SubjectRe: SAD with SUSE Linux
Article No122
Date: 2006/05/12(Fri) 10:25:47
ContributorAkio Morita
b-damaでの SADのテスト速報(bench2.sad)
Opteron 254(2.8GHz)
 *********** summary of the bench mark 
        Function Test   2.096130888909101
        Optics Test     2.964184999465942
        Tracking Test   3.464217662811279
        Matching Test   2.736170768737793
        Overall Score (smaller is faster): .145372184880433

SubjectRe: SAD with SUSE Linux
Article No123
Date: 2006/05/12(Fri) 15:03:56
ContributorAkio Morita
まともに実運用で使えるレベルには達していないので、開発者向けにヒントだけ
Revision 574以降で src/inc/MACMAX.incの MAXMEM0パラメータを
いじると 64bit環境でも サンプルスクリプトぐらいは動くようになります(g77 + gcc)
PGIの方も動きましたが -fastを付けて最適化すると NG

SubjectRe: SAD with SUSE Linux
Article No125
Date: 2006/05/13(Sat) 07:51:47
ContributorShin-ichi Yoshimoto < >
> まともに実運用で使えるレベルには達していないので、開発者向けにヒントだけ
> Revision 574以降で src/inc/MACMAX.incの MAXMEM0パラメータを
> いじると 64bit環境でも サンプルスクリプトぐらいは動くようになります(g77 + gcc)
> PGIの方も動きましたが -fastを付けて最適化すると NG

すばらしい。やっぱり森田先生に引き継いでやってもらって正解ですね。

#これで強引にでもアカウントを作った甲斐があります :-)