在生成MPI进程之前,请检查可用的插槽/资源

在生成MPI进程之前,请检查可用的插槽/资源,mpi,Mpi,在生成如下所示的大量worker进程之前,我需要检查这个数字是否可用,以便在请求的插槽不可用时,下面的代码不会崩溃 int numworkers = settings.Parallelism + 1; //omp_get_num_procs(); MPI_Comm_spawn("./processes/montecarlo", MPI_ARGV_NULL, numworkers, MPI_INFO_NULL, 0, MPI_COMM_

在生成如下所示的大量worker进程之前,我需要检查这个数字是否可用,以便在请求的插槽不可用时,下面的代码不会崩溃

   int numworkers = settings.Parallelism + 1; //omp_get_num_procs();
    MPI_Comm_spawn("./processes/montecarlo", MPI_ARGV_NULL, numworkers,
            MPI_INFO_NULL,
            0, MPI_COMM_SELF, &workercomm, MPI_ERRCODES_IGNORE);
如何检查mpi的可用插槽

这是在接受多个请求的服务上下文中发生的:

让我们假设:总可用插槽数:13

需求1:生成5个进程

要求2:产生另一个5过程

请求3:将尝试生成5个进程,但将崩溃,因为只有3个可用。如何检查只有3个可用


或者如何处理由于资源不可用而导致的崩溃。此崩溃正在终止服务。

您只需请求
MPI\u Comm\u spawn()
返回错误代码,而不是中止应用程序

MPI_Comm_set_errhandler(MPI_COMM_SELF, MPI_ERRORS_RETURN);
int res = MPI_Comm_spawn("./processes/montecarlo", MPI_ARGV_NULL, numworkers,
                          MPI_INFO_NULL, 0, MPI_COMM_SELF, &workercomm, MPI_ERRCODES_IGNORE);
if (MPI_SUCCESS != res) {
    // MPI_Comm_spawn failed
}

好的,我会试试这个方法。有没有办法获取可用插槽?您可以尝试获取
MPI\u COMM\u WORLD的
MPI\u UNIVERSE\u SIZE
属性的值