2013-11-27 42 views
1

我正在编写一个结合使用消息传递接口(MPI)和qthreads的代码。即使我的实际代码在每个qthread下的使用率低于1 KB,我也不得不使用大于默认堆栈大小(8KB而不是4KB)的大小。我相信MPI调用是堆栈溢出的原因。MPI调用需要多少堆栈空间?

该代码使用来自桑迪亚国家实验室的OpenMPI和qthreads。

该代码在每个MPI进程上使用qthread“shepherd”运行,使用qthread_init(1) - qthreads仅用于MPI进程中的上下文切换。

我的问题是: 1)有没有一种方法可以确定MPI调用将使用多少堆栈空间? 2)有没有办法减少它使用多少堆栈空间? 3)是否有特定的MPI调用比平均MPI调用使用更多的堆栈空间?

回答

0

有这方面的配置工具,谷歌mpi profiling我会推荐mpip,因为它很容易设置。另外Valgrind有关于调试mpi和并行程序的章节。如果这些不能识别问题,则需要深入挖掘性能调整并利用message sizes等进行调整。

0

MPI可以从Pthreads中调用,它有8MB的默认堆栈大小。在实践中,我认为它低于1 KB,并且在堆上分配了大量临时数据。