24小时热门版块排行榜    

查看: 796  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

ddli123456

铁虫 (初入文坛)

[求助] 内存泄漏

有没有哪位编写过并行程序的?额用fortran,调用MKL库不断求解7200*7200矩阵的本征值,可是循环几次,内存就被消耗完了,额没有使用过动态数组,可能是内存泄漏。不知道有木有碰到过类是问题的?有木有知道该怎么解决的?谢谢啦!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

看了下scalapack的api,,eigen,BB,应该一个是线程输出,一个是全局输出。两个维数不一样。那你后面call PDLACP3(N,1,BB,DESCZ,vect,N,-1,-1,0)的维数和前面的N比就不对了吧。我觉得你要是只要单节点并行的矩阵计算可以直接用lapack,再设置OMP_NUM_THREADS环境变量,稍新一点的MKL都是默认并行的。
11楼2012-02-12 13:08:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

锐利的碎片

木虫 (正式写手)

star watcher

【答案】应助回帖

感谢参与,应助指数 +1
你算下内存占用,如果是双精度,一个差不多有400M的样子。如果你内存里同时有好几个的话,就会溢出。一个办法是用动态数组,循环一次释放一次。
2楼2012-02-11 17:26:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

锐利的碎片

木虫 (正式写手)

star watcher

#include

算的方法
int main()
{
     long memsize;
     memsize = sizeof(double) * 7200 * 7200;
     printf("%d,%ld\n", sizeof(double), memsize/1024/1024);

     return 0;
}
3楼2012-02-11 17:27:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ddli123456

铁虫 (初入文坛)

引用回帖:
: Originally posted by 锐利的碎片 at 2012-02-11 17:26:20:
你算下内存占用,如果是双精度,一个差不多有400M的样子。如果你内存里同时有好几个的话,就会溢出。一个办法是用动态数组,循环一次释放一次。

动态数组我用过了,并且也释放了,没有效果。我用的服务器单个节点内存有20G,有4个线程,每个线程同时有3个那么大的矩阵,循环7次就死掉了,有没有函数可以监测剩余内存的?谢谢!
4楼2012-02-11 18:25:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见