我正在并行化一个模拟非饱和土壤区域中的传输和流动过程的软件。该软件由一个VB.NET用户界面和一个FORTRAN DLL内核来完成计算。 我在VB.NET部分使用MPI.NET软件包对软件进行了并行处理。当程序以多个进程启动时,除主进程外,它们全部进入等待功能,而主进程负责软件与用户的交互。当输入模拟所需的所有数据时,主进程进入FORTRAN DLL,并调用其他进程。这些跳转到DLL中函数的起始点,并且所有过程一起求解线性方程组大约10-20次(原始偏微分方程是非线性的,因此这些迭代为了获得解决方案的准确性)。计算解决方案时,所有进程都返回到VB.NET,这是针对模拟的所有时间步骤完成的。当计算完所有步骤后,主进程继续进行用户交互,而其他进程则返回 进入等待函数,直到主进程再次调用它们。 事情是这个程序运行得比原来的顺序版本慢得多。现在可能有很多原因。我使用FORTRAN DLL中的PETSc库来解决方程组,并且我认为我配置得非常好。我的问题是,如果在我描述的体系结构的某个时间点,如果处理不当,可能会有一两点可能导致显着的放缓。我不确定f.e.如果后续调用DLL函数会花费很多时间。 我的系统是带有8GB RAM的Intel Xeon 3470处理器。我试图解决的系统有高达120.000个未知数,我知道它应该在并行计算的下限,但至少在120.000的矩阵中,我预计会有比我测量的更好的性能。慢并行编程 - MPI,VB.NET和FORTRAN
预先感谢您的想法, 马丁
这不应该是一个单独的答案。如果你想提供额外的信息,你可以编辑你的原始问题;如果你想回复一个特定的答案,你可以在它下面发表评论。 – eriktous 2011-04-27 12:31:39
@eriktous:我猜Martin发布了这个答案,因为他不小心创建了另一个帐户并登录。 @Martin:你可以[请求版主合并你的账户](http://meta.stackoverflow.com/questions/18232/how-can-one-link-merge-combine-associate-two-accounts-users-anonymous -unregiste/73801#73801),因此您可以更好地跟踪自己的帖子并对其发表评论。 – Helen 2011-04-27 17:58:46