- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Hello,
I have some troubles with Pardiso, it uses my whole memory (8 GB) and swaps data to my HDD. I have tried to use
Pardiso solves my problem fine but the output of the program is:
Can anybody help me with that?
Thanks,
matse
//Edit: OK, I just read that setting the Pardiso parameter "phase" to "-1" and calling Pardiso afterwards with this parameter releases the memory, so then it works as expected. But shouldn't mkl_free_buffers() work, too?
I have some troubles with Pardiso, it uses my whole memory (8 GB) and swaps data to my HDD. I have tried to use
[cpp]mkl_free_buffers();[/cpp]with no success. My code now basically looks like this:
[cpp]AllocatedBytes = mkl_mem_stat(&N_AllocatedBuffers);
printf("\nusing %ld bytes in %d buffers\n",(long)AllocatedBytes,N_AllocatedBuffers);
//calling pardiso
pardiso( pt , & maxfct , & mnum , & mtype , & phase , &n , a , ia , ja , perm , & nrhs, iparm , & msglvl , y , sol , & error );
AllocatedBytes = mkl_mem_stat(&N_AllocatedBuffers);
printf("\nusing %ld bytes in %d buffers\n",(long)AllocatedBytes,N_AllocatedBuffers);
mkl_free_buffers();
AllocatedBytes = mkl_mem_stat(&N_AllocatedBuffers);
printf("\nusing %ld bytes in %d buffers\n",(long)AllocatedBytes,N_AllocatedBuffers);[/cpp] Pardiso solves my problem fine but the output of the program is:
[bash]using 524352 bytes in 1 buffers . .//some pardiso output, seems to work fine . //before mkl_free_buffers(); using 1428469361 bytes in 126 buffers //after mkl_free_buffers(); using 1411149489 bytes in 116 buffers [/bash]The thing is that I use Pardiso in a loop, so it solves different kind of problems - but after the fifth run I'm out of memory and the swapping begins.
Can anybody help me with that?
Thanks,
matse
//Edit: OK, I just read that setting the Pardiso parameter "phase" to "-1" and calling Pardiso afterwards with this parameter releases the memory, so then it works as expected. But shouldn't mkl_free_buffers() work, too?
コピーされたリンク
1 返信
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
Hi,
MKL function mkl_free_buffers() releases all memory which is taken by MKL memory manager software and already maked as free but can be used in the future. As to PARDISO-memory, it needs explicitly free such memory.
MKL function mkl_free_buffers() releases all memory which is taken by MKL memory manager software and already maked as free but can be used in the future. As to PARDISO-memory, it needs explicitly free such memory.