我的主要 FORTRAN MPI 代码达到了所有进程都调用脚本的地步。代码看起来像
write(syscommand,'(a131xi3)') './vscript.csh' my_mpi_proc_num
rc=system(syscommand)
现在,这部分代码循环了一百多次,并且脚本在所有进程上运行良好。然后,据我所知,一些进程会随机进入系统,然后会返回错误代码 32512。然后会发生其他一些事情(抱歉,我无法显示更多代码。我的雇主不会太高兴。 ),然后调用 MPI_ABORT 并且所有进程都死掉。有人告诉我,32512 通常是找不到命令时返回的错误代码。这不太可能,因为正如我所指出的那样,在这次崩溃之前已经找到了数百次脚本,并且没有任何东西可以移动它。
我似乎找到了一个权宜之计:
write(syscommand,'(a131xi3)') './vscript.csh' my_mpi_proc_num
rc=32512
num_attempts=0
do while (num_attempts<100 .and. rc==32512)
num_attempts=num_attempts+1
rc=system(syscommand)
enddo
即每个进程将尝试 100 次以通过 32512 的事情。尽管我确信这是可怕的代码,但它确实有效。
那么,有人知道我为什么会收到此错误吗?一个想法:如果两个进程试图同时运行相同的脚本,其中一个会被踢出并被迫返回那个 32512 吗?谢谢。