超大规模科学计算中的动态数组无法释放
如题,我在用FORTRAN进行上亿未知量的超大规模科学计算时,遇到了动态数组无法deallocate的情况。关于这个错误我已经debug一个多月了,我确定没有犯任何低级错误,比如数组未开辟或者已经释放过这种错误。另外,每次执行同一程序时,错误点的定位并不确定,而是随机的,但出问题的地方都是某个动态数组无法被释放。请问各位大虾,有人遇到过类似的情况吗?若能指点一二,在下感激不尽!!!并非所有的量都必须放在内存里,除了内存你还有硬盘。学会用什么拿什么,别把洗衣机扛在肩上。 请贴一段可以复现问题的最短代码,否则无从谈起 pasuka 发表于 2015-12-14 06:41
请贴一段可以复现问题的最短代码,否则无从谈起
感谢回答!我也知道不贴代码很难复现……但这个真的不现实,代码过于庞大,而且涉密……我只能是问问各位前辈以前有没有遇到过类似的共性的问题…… 爱莫能助,如果涉及openmp或者mpi的话,还不如去国外论坛问问 虽然我没遇到过,但是我建议你从算法入手降低对内存的需求。
所有计算机的系统,基本上都有一个通病,那就是在系统开销快要达到系统容限的时候,会出莫名其妙的问题。 本帖最后由 aliouying 于 2015-12-14 14:41 编辑
我可以提一个简单想法:
1、复制一份完整程序,备份
2、删除其中除了allocate和deallocate以及所有函数的参数,
3、更改所有函数名和变量名,防止泄密
4、调试,正对特定的问题,计算问题大小,赋值allocate的数组大小
aliouying 发表于 2015-12-14 14:38
我可以提一个简单想法:
1、复制一份完整程序,备份
谢谢,我找您的意见试试,但愿能行 这个动态数组是不是过大了那,能不能分成几个小的动态数组那~~
页:
[1]