saupt005 发表于 2015-12-13 21:28:54

超大规模科学计算中的动态数组无法释放

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

fcode 发表于 2015-12-13 22:27:10

并非所有的量都必须放在内存里,除了内存你还有硬盘。学会用什么拿什么,别把洗衣机扛在肩上。

pasuka 发表于 2015-12-14 06:41:37

请贴一段可以复现问题的最短代码,否则无从谈起

saupt005 发表于 2015-12-14 09:03:39

pasuka 发表于 2015-12-14 06:41
请贴一段可以复现问题的最短代码,否则无从谈起

感谢回答!我也知道不贴代码很难复现……但这个真的不现实,代码过于庞大,而且涉密……我只能是问问各位前辈以前有没有遇到过类似的共性的问题……

pasuka 发表于 2015-12-14 10:01:08

爱莫能助,如果涉及openmp或者mpi的话,还不如去国外论坛问问

fcode 发表于 2015-12-14 10:45:05

虽然我没遇到过,但是我建议你从算法入手降低对内存的需求。

所有计算机的系统,基本上都有一个通病,那就是在系统开销快要达到系统容限的时候,会出莫名其妙的问题。

aliouying 发表于 2015-12-14 14:38:24

本帖最后由 aliouying 于 2015-12-14 14:41 编辑

我可以提一个简单想法:

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

saupt005 发表于 2015-12-15 18:38:27

aliouying 发表于 2015-12-14 14:38
我可以提一个简单想法:

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


谢谢,我找您的意见试试,但愿能行

mangix2010 发表于 2016-1-15 16:14:36

这个动态数组是不是过大了那,能不能分成几个小的动态数组那~~
页: [1]
查看完整版本: 超大规模科学计算中的动态数组无法释放