主题:[讨论]Stack Overflow
BiCGSTAB
[专家分:780] 发布于 2010-09-15 05:45:00
同样的代码,在CVF里运行成功,在IVF里栈溢出。
修改Project-Properties-Linker-System-Stack Reserve Size无效果。
请问可能是什么原因?
溢出发生在LFCCG()函数,是IMSL中的矩阵LU分解函数。
虽说在CVF里可以运行,但是是在旧电脑里。
今后扩大问题的规模,需要更多的内存,就必须用装IVF的新电脑了。
谢谢!
回复列表 (共8个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-09-15 06:04:00
自己的数组改用动态内存分配试试呢?
板凳
BiCGSTAB [专家分:780] 发布于 2010-09-15 07:42:00
比较大的数组都allocatable了。
我猜测程序本身没有问题,因为在旧电脑的CVF上可运行。
不知是不是IVF设置的问题。
3 楼
BiCGSTAB [专家分:780] 发布于 2010-09-15 07:51:00
除了IVF设置问题,还有一种可能是IMSL 6.0里的矩阵LU分解函数LFCCG()和CVF里的不一样。
因为栈溢出就是发生在LFCCG()处的,并且同样的程序,同等的矩阵大小,在CVF里就是可以分解的。
4 楼
BiCGSTAB [专家分:780] 发布于 2010-09-16 06:26:00
不知有没有人习惯用MKL的,里面的算法如何?
在使用栈方面会不会比IMSL要强一些?
如果MKL优于IMSL的话,我试一试,只是没有把握,不知会不会做无用功。
5 楼
cgl_lgs [专家分:21040] 发布于 2010-09-16 17:28:00
已改用BLAS等有源码的东西了:)
6 楼
dongyuanxun [专家分:7180] 发布于 2010-09-16 22:27:00
试试lapack的dgetrf
7 楼
BiCGSTAB [专家分:780] 发布于 2010-09-17 03:21:00
五楼cgl_lgs:我看了一下BLAS的介绍,所有的Linear Solver都是解上三角/下三角系数矩阵的。你确定可以解一般性的矩阵吗?我的矩阵是复数矩阵,非三角、非带状,非对称,非Hermite正定。
我是在www.netlib.com看的。
8 楼
cgl_lgs [专家分:21040] 发布于 2010-09-18 22:24:00
理論上來說應該是可以的,您的矩陣是密實的?
c打頭的函數就是復數參數:)
我来回复