C++ 使用openMP在指定内核上执行特定函数
是否可以使用OpenMP修复在特定内核上运行的一个函数 例如:我有两个函数,即:Foo1和Foo2 我的计算机(Linux操作系统)有两个核心:core0和core1 那么,我如何同时在core0上运行应用程序Foo1和Foo2始终在core1上运行呢 <>我用C++进行编码。< /P>C++ 使用openMP在指定内核上执行特定函数,c++,parallel-processing,openmp,core,C++,Parallel Processing,Openmp,Core,是否可以使用OpenMP修复在特定内核上运行的一个函数 例如:我有两个函数,即:Foo1和Foo2 我的计算机(Linux操作系统)有两个核心:core0和core1 那么,我如何同时在core0上运行应用程序Foo1和Foo2始终在core1上运行呢 我用C++进行编码。< /P> 请帮忙 听起来你想这么做 将OpenMP线程数设置为2(omp\u set\u num\u threads(2)),并 在并行区域中,检查线程ID并相应地调用Foo1或Foo2 OpenMP文档中描述了如何执行这些
请帮忙 听起来你想这么做
omp\u set\u num\u threads(2)
),并Foo1
或Foo2
另一种方法是创建两个openMP任务,每个任务运行一个函数。感谢@Novelocrat和@Joachim的有用评论: 我是这样做的:
int main() {
#pragma omp parallel num_threads(2)
{
#pragma omp sections
{
#pragma omp section
{
foo1();
}
#pragma omp section
{
foo2();
}
}
}
return 0; }
现在,foo1()总是在线程1上运行,foo2()总是在线程2上运行
在运行时设置环境变量:GOMP\u CPU\u AFFINITY=“0 1”
它将线程1绑定到core0,将线程2绑定到core1 阅读这个术语。实际上,我想将Foo1绑定到core0,Foo2绑定到core1。我得到了一些绑定它的命令:export-OMP\u-PROC\u-bind=true将线程绑定到特定的核心,即不进行切换,或者我们可以使用:GOMP\u-CPU\u-Affinity=“0-1”设置CPU相关性。它将线程0设置为core0,将线程1设置为core1。