我最近对MPI有一个非常奇怪的问题。我在Windows 7 x64上使用Visual Studio 2010。 我正在开发一个更大的软件,它使用MPI进行并行化。它工作正常,直到二月(源代码没有改变)。然而,就在这个月它开始丢弃非常奇怪的错误消息。我在Win7的不同计算机上尝试过它,所有结果都相同......整个代码当然太大而无法提交,所以我尝试以较短的形式重现它。 问题其实很简单。程序的所有内核都尝试启动软件(实际代码不是同时启动)。为此,使用简单的system()函数。这个问题实际上很容易用几种不同的软件重现(我通常使用参数化的CAD软件),但仅举例来说我粘贴了一个带GIMP的版本。如果代码如下所示:
int main(int argc, char* argv[])
{
int l_iResult=MPI_Init (&argc, &argv);
system("\"D:\\Program Files\\GIMP 2\\bin\\gimp-2.8.exe\"");
MPI_Finalize();
return 1;
}
然后它将通过“program.exe”命令正确执行。但是,如果我通过“mpiexec -n 1 program.exe”启动它,它不起作用。所有程序都会丢弃不同的错误消息,对于系统响应的某些程序,可执行文件不存在(我总是使用绝对路径,并且可以在串行模式下找到它)。虽然它应该以相同的方式执行。我使用Argonne Lab MPICH2 1.4.1p1(http://www.mpich.org/downloads/)。 也许我只是错过了一些细节,但事实上,两个月前完全相同的程序在这台计算机上运行,并且现在不起作用,这让我得出结论,它是由操作系统更新引起的。虽然我不知道它是如何以及为什么会发生的。
祝你好运, xoranus