Conference Room SAD
[thread display] [new arrival display] [word search] [past log] [管理用]

Subject Re^2: Build 1.0.10.6.4.7k64 on Linux(CentOS5.8 x86_64)
Date: 2012/12/17(Mon) 16:18:32
ContributorK. Oide

現状、SADインタープリータ用内部stack pointerを32 bitとしている関係でktaloc(64 bit)でなくitaloc(32 bit)を残しているところがあります。なんとかしなければなりません。


> >  皆様,
> >
> >  お世話になっております。佐藤@入射器です。
> > どなたか,Linux環境下においてk64-1-6系のBuildiに成功した方はいらっしゃいますでしょうか?
> >
> >  CentOS5.8(x86_64, gcc 4.7.2)にて,1.0.10.6.4.7k64のmakeは出来たのですが,実行すると下記のエラーが出ます。
> > (Ver.1.0.10.5.5a43は問題なく動作するのですが。)
> >  sad.confで指定するオプションを,いろいろと(生出さんや森田さんのもの)試してみましたが,同じ結果でした。(gccも,4.3.3, 4.3.4, 4.5.1などを試しました)
> >
> > <12-12-06(Thu) 21:31:24><-tcsh-></usr/users/masanori/src/sad/oldsad/src/><masanori@vera>sadm
> > *** Welcome to SAD Ver.1.0.10.6.4.7k64 built at 2012-12-06 14:15:56 +0900 ***
> > *** Today: 21:33:28 Thursday 12/06/2012 ***
> > cpu time= 3.8993E-02(sec) dt= 38.993(msec) free area:: 1794
> > ffs;
> > italoc memory allocation error 5993238088291
> >
> 震源地は、src/italoc.fの
> integer*4 function italoc(n)
> use tfstk
> implicit none
> integer*4 n
> integer*8 ktaloc,ix
> ix=ktaloc(n)
> if(ix .ge. 2**31 .or. ix .le. 0)then
> write(*,*)'italoc memory allocation error ',ix
> stop
> endif
> italoc=int(ix)
> return
> end
> です
> 内容としては、ktaloc()が割り当てたメモリブロックのインデックス(rlist(0)から real*8単位で数えたアドレス)が
> 2^31に収まるかどうかを調べてるので…
>
> Solution 1.
> italoc() APIのアドレス域を拡張する
>
> Solution 2.
> カーネルから貰うヒープ領域のアドレス域を制限する
>
> Solution 3.
> 諦めて IA-32で実行する
>
> 辺りの対処が必要と思われます
>
> * afsadに関しては、カーネルパラメータを操作して (2)を実現しています
> * amorita branch on Linuxでは、mallocの代わりにオプション付き mmapで (2)を実現


- 関連一覧ツリー (Click ▼ to display all articles in a thread.)