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

Subject Re: Build 1.0.10.6.4.7k64 on Linux(CentOS5.8 x86_64)
Date: 2012/12/07(Fri) 15:22:33
ContributorAkio Morita

>  皆様,
>
>  お世話になっております。佐藤@入射器です。
> どなたか,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.)