gpt4 book ai didi

multithreading - 强制MPI使用指定的编号。核心

转载 作者:行者123 更新时间:2023-12-03 13:19:39 30 4
gpt4 key购买 nike

我对MPI还是陌生的,所以如果这是一个琐碎的问题,请原谅我。我有一个四核CPU。我想运行一个在单个内核上使用两个进程的OpenMPI C++程序。有什么办法吗?如果是这样,那又如何?我提到了this link on stack overflow,它很可能说可能有一种方法...如果是这样,那我该怎么办呢?

最佳答案

由于MPI会生成单独的进程,因此通常在/通常由您的操作系统执行将进程调度到内核上的过程。您仍然可以通过手动设置进程对特定核心的亲和力来实现所需的目标。

您可以在Linux中使用sched_setaffinity函数进行此操作。

要将进程固定到特定的内核,可以使用以下方法:

#include <mpi.h>
#include <sched.h>

// ...

void pin_to_core(int cpuid) {
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(cpuid,&set);
sched_setaffinity(0,sizeof(cpu_set_t),&set);
}

// ....

int main(int argc, char* argv[]) {
MPI_Init(&argc, &argv);
pin_to_core(0); // pin process to core 0
// ...
MPI_Finalize();
}

MPI_Init函数中调用 main并指定要将该进程固定到的核心后,请确保调用此函数。

关于multithreading - 强制MPI使用指定的编号。核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396103/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com