在生成MPI进程之前,请检查可用的插槽/资源
在生成如下所示的大量worker进程之前,我需要检查这个数字是否可用,以便在请求的插槽不可用时,下面的代码不会崩溃在生成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_
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
属性的值