由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Computation版 - fortran里矩阵传递有维数限制吗?
相关主题
[求教]请各位推荐解大型矩阵的子程序 (转载)[合集] 请教:关于用arpack
请教一个matlab问题C++,一个函数完成后出segmentaion fault
请教:Matlab中要处理的矩阵太大怎么办?贡献一个问题
[合集] 请教稀疏矩阵相加的算法How to constrain the solution to be positive?
请问一个函数传递结构的初级问题求计算associated legendre polynomial的子程序
Fortran 子程序可以调用另一个子程序吗?菜鸟问个有限元的弱问题
dense matrix、sparse matrixany body have some experience using 64bit Linux?
我的matlab内存太小了?请问谁有tricubic spline interpolation的子程序吗?
相关话题的讨论汇总
话题: at0话题: 矩阵话题: 维数话题: 调用话题: unlimited
进入Computation版参与讨论
1 (共1页)
s***e
发帖数: 911
1
我的一个计算涉及很大维数的矩阵操作. 其中含有一个整数参数n, 维数是该参数的
平方, dim=n^2
在所有其他参数固定的情况下, n<=17, 整个计算可以顺利进行. n=18时, 出现
segment fault错误.
对矩阵赋值是通过调用一个子程序完成的:
call MAT0(dim,LMAX1,LMAX2,a,b,f,pil1,AT0)
这个调用没有问题. 返还的sparse矩阵AT0经查没有什么异常.
之后调用另外一个子程序,
call mat_product(NSITE-2,LMAX,dim,AT0,Z0L)
目的是要对AT0进行一系列操作. 现在发现调用过程出了segment fault错误,
根本没有进入这个子程序内部.
麻烦各位帮忙参考一下, 大概可能是什么样的问题所致.
机器系统是dual opteron 260, Fedora Core 2 64, gcc-g77-3.3.3.
THX
a*******x
发帖数: 47
2

象是堆栈溢出,试试(bash下)
# ulimit -a
看看stacksize 的上限是多少,如果不是unlimited的话
# ulimit -s unlimited

【在 s***e 的大作中提到】
: 我的一个计算涉及很大维数的矩阵操作. 其中含有一个整数参数n, 维数是该参数的
: 平方, dim=n^2
: 在所有其他参数固定的情况下, n<=17, 整个计算可以顺利进行. n=18时, 出现
: segment fault错误.
: 对矩阵赋值是通过调用一个子程序完成的:
: call MAT0(dim,LMAX1,LMAX2,a,b,f,pil1,AT0)
: 这个调用没有问题. 返还的sparse矩阵AT0经查没有什么异常.
: 之后调用另外一个子程序,
: call mat_product(NSITE-2,LMAX,dim,AT0,Z0L)
: 目的是要对AT0进行一系列操作. 现在发现调用过程出了segment fault错误,

s***e
发帖数: 911
3
Problem solved!
Thanks.

【在 a*******x 的大作中提到】
:
: 象是堆栈溢出,试试(bash下)
: # ulimit -a
: 看看stacksize 的上限是多少,如果不是unlimited的话
: # ulimit -s unlimited

s***e
发帖数: 911
4
再向你请教一个问题:
ulimit -s unlimited 确实解决了我前面的segment fault错误. 具体计算结果正确不
正确得到明天才能知道. 我想问的是:
每次我logout再login时, stacksize都是有限制的. 有什么办法把它设置成
unlimited by default的吗?
此外, 运算一旦开始, 就算我logout, 这个后台运行的程序还是自动具有
unlimited stacksize吗?
如果我不想设置unlimited stacksize, 是否可以通过定义公告区来传递大矩阵, 而
不会出现这个segment fault? 利用公共区, 程序速度是否会有显著提升?
THX

【在 a*******x 的大作中提到】
:
: 象是堆栈溢出,试试(bash下)
: # ulimit -a
: 看看stacksize 的上限是多少,如果不是unlimited的话
: # ulimit -s unlimited

a*******x
发帖数: 47
5

把上面的命令放在~/.bashrc里就可以了。
这个可能跟你后台运行的方式有关,为了保险, 你可以写一个简单的脚本:
#!/usr/bin/bash
cd MYDIR
ulimit -s unlimited
./a.out
这样之后你提交该脚本后台运行时就保证了ulimit。注意该脚本必须是可执行的:
$ chmod u+x myscript
提交任务时用
nohup ./myscript
或者
qsub myscript (如果你们的系统用qsub提交后台任务的话,你的脚本里应该规定
一些其他的参数)
应该不会出现segmentation fault.,因为堆栈主要是存放调用参数的。但是公用区
的写法不推荐,我不觉得它会使程序速度改善多少。
可以试试其它的编译器,比如free的intel的fortran95 compiler,
虽然你用的是AMD opteron,不妨试一试。

【在 s***e 的大作中提到】
: 再向你请教一个问题:
: ulimit -s unlimited 确实解决了我前面的segment fault错误. 具体计算结果正确不
: 正确得到明天才能知道. 我想问的是:
: 每次我logout再login时, stacksize都是有限制的. 有什么办法把它设置成
: unlimited by default的吗?
: 此外, 运算一旦开始, 就算我logout, 这个后台运行的程序还是自动具有
: unlimited stacksize吗?
: 如果我不想设置unlimited stacksize, 是否可以通过定义公告区来传递大矩阵, 而
: 不会出现这个segment fault? 利用公共区, 程序速度是否会有显著提升?
: THX

r**********e
发帖数: 28
6
Use pointer and target will save memory

确不

的?: : 的写法不推荐,我不觉得它会使程序速度改善多少。
1 (共1页)
进入Computation版参与讨论
相关主题
请问谁有tricubic spline interpolation的子程序吗?请问一个函数传递结构的初级问题
LP, IP package in C++?Fortran 子程序可以调用另一个子程序吗?
Fortran 90 中有没有计算程序运行时间的内部函数?dense matrix、sparse matrix
再问一个fortran的问题我的matlab内存太小了?
[求教]请各位推荐解大型矩阵的子程序 (转载)[合集] 请教:关于用arpack
请教一个matlab问题C++,一个函数完成后出segmentaion fault
请教:Matlab中要处理的矩阵太大怎么办?贡献一个问题
[合集] 请教稀疏矩阵相加的算法How to constrain the solution to be positive?
相关话题的讨论汇总
话题: at0话题: 矩阵话题: 维数话题: 调用话题: unlimited