Fortran Coder

标题: 关于特大数组的编译运行问题 [打印本页]

作者: glodve    时间: 2016-7-24 21:22
标题: 关于特大数组的编译运行问题
楼主的电脑是32G内存,64位系统,但是在VS2012运行IVF的时候,经常提示内存不足或者出错。这里已经是经过稀疏矩阵存储处理过(有2000万的非零元素),有大神能够帮忙解答吗,这里感激不尽!

作者: fcode    时间: 2016-7-24 22:13
详解本群官网文章: http://memory.w.fcode.cn
作者: glodve    时间: 2016-7-25 09:14
我看了这个帖子,还没有得到我想要的答案,难道就是说我不能够充分利用32G内存吗?
作者: fcode    时间: 2016-7-25 09:28
你再确认一下你使用的编译器是否是64位的编译器?
给一张错误提示的截图出来?

有必要可以用64位的linux上跑跑试试看?
此外,能否更合理的使用内存?例如波前法。
作者: glodve    时间: 2016-7-25 10:28
本帖最后由 glodve 于 2016-7-25 12:52 编辑

附上我的一些错误提示。还有我不是很确定怎么设置64位编辑器。是选定图上的X64吗?
还有因为是做科学计算的,目前就想着把程序跑起来,所以暂时不去做内存存储优化。对这方面的了解不是太多也有难度。



还有提示错误就是提示insufficient virtual memory。

另外一个问题
程序中使用了qsort函数。当我选择x64而不是win32时会出现错误




谢谢!






作者: fcode    时间: 2016-7-25 19:42
选择了 x64 就是64位的。也可以从内存地址 0x000000013F612229 这种里看出来,0x 后面有16个十六进制数,就是64位的。

存储空间不足,就是内存不足了。64位只是可用的寻址空间更大, 但依然是有限的。

映像大小太大,是静态数组太大导致的。请用动态分配数组试试。

综合来看,你的数组还是太大了。建议从算法上优化,减少内存的需求量。
作者: glodve    时间: 2016-7-26 15:04
fcode 发表于 2016-7-25 19:42
选择了 x64 就是64位的。也可以从内存地址 0x000000013F612229 这种里看出来,0x 后面有16个十六进制数,就 ...

好的,谢谢指教。




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