在生成 MPI 进程之前检查可用的 slots/resources
check the available slots/resources before spawning MPI processes
我需要,在生成如下所示的一些工作进程之前,检查这个数字是否可用,这样如果请求的插槽不可用,下面的代码就不会崩溃。
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 的可用插槽?
这是在服务接受多个请求的上下文中发生的:
让我们suppose:Total可用的插槽:13
REQ1:生成 5 个进程
要求 2:生成另外 5 个 proc
Req3:将尝试产生 5 个 proc,但会崩溃,因为只有 3 个可用。如何检查只有 3 个可用?
或者如何处理因资源不可用而导致的崩溃。这次崩溃正在终止服务。
您可以简单地询问 MPI_Comm_spawn()
到 return 一个错误代码,而不用中止应用程序。
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
}
我需要,在生成如下所示的一些工作进程之前,检查这个数字是否可用,这样如果请求的插槽不可用,下面的代码就不会崩溃。
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 的可用插槽?
这是在服务接受多个请求的上下文中发生的:
让我们suppose:Total可用的插槽:13
REQ1:生成 5 个进程
要求 2:生成另外 5 个 proc
Req3:将尝试产生 5 个 proc,但会崩溃,因为只有 3 个可用。如何检查只有 3 个可用?
或者如何处理因资源不可用而导致的崩溃。这次崩溃正在终止服务。
您可以简单地询问 MPI_Comm_spawn()
到 return 一个错误代码,而不用中止应用程序。
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
}