Fortran Coder

标题: 超大规模科学计算中的动态数组无法释放 [打印本页]

作者: saupt005    时间: 2015-12-13 21:28
标题: 超大规模科学计算中的动态数组无法释放
如题,我在用FORTRAN进行上亿未知量的超大规模科学计算时,遇到了动态数组无法deallocate的情况。关于这个错误我已经debug一个多月了,我确定没有犯任何低级错误,比如数组未开辟或者已经释放过这种错误。另外,每次执行同一程序时,错误点的定位并不确定,而是随机的,但出问题的地方都是某个动态数组无法被释放。请问各位大虾,有人遇到过类似的情况吗?若能指点一二,在下感激不尽!!!

作者: fcode    时间: 2015-12-13 22:27
并非所有的量都必须放在内存里,除了内存你还有硬盘。学会用什么拿什么,别把洗衣机扛在肩上。
作者: pasuka    时间: 2015-12-14 06:41
请贴一段可以复现问题的最短代码,否则无从谈起
作者: saupt005    时间: 2015-12-14 09:03
pasuka 发表于 2015-12-14 06:41
请贴一段可以复现问题的最短代码,否则无从谈起

感谢回答!我也知道不贴代码很难复现……但这个真的不现实,代码过于庞大,而且涉密……我只能是问问各位前辈以前有没有遇到过类似的共性的问题……
作者: pasuka    时间: 2015-12-14 10:01
爱莫能助,如果涉及openmp或者mpi的话,还不如去国外论坛问问
作者: fcode    时间: 2015-12-14 10:45
虽然我没遇到过,但是我建议你从算法入手降低对内存的需求。

所有计算机的系统,基本上都有一个通病,那就是在系统开销快要达到系统容限的时候,会出莫名其妙的问题。
作者: aliouying    时间: 2015-12-14 14:38
本帖最后由 aliouying 于 2015-12-14 14:41 编辑

我可以提一个简单想法:

1、复制一份完整程序,备份
2、删除其中除了allocate和deallocate以及所有函数的参数,
3、更改所有函数名和变量名,防止泄密
4、调试,正对特定的问题,计算问题大小,赋值allocate的数组大小

作者: saupt005    时间: 2015-12-15 18:38
aliouying 发表于 2015-12-14 14:38
我可以提一个简单想法:

1、复制一份完整程序,备份

谢谢,我找您的意见试试,但愿能行
作者: mangix2010    时间: 2016-1-15 16:14
这个动态数组是不是过大了那,能不能分成几个小的动态数组那~~




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2