使用OpenMP在指定的核心上执行特定函数
Executing a particular function on specified core using openMP
是否可以使用OpenMP在特定核心上运行一个函数?
例如:我有两个函数: foo1 和 foo2
和我的计算机(Linux OS)有两个内核: core0 和 core1 。
那么,如何在core0 和 foo2上运行应用程序 foo1始终在core1上同时?
我正在使用C 进行编码。
请帮忙!
听起来您想
- 将OpenMP线程的数量设置为2(
omp_set_num_threads(2)
)和 - 在A 并行区域中,检查线程ID并相应地调用
Foo1
或Foo2
。
在OpenMP文档中描述了这些事情。
另一种方法是创建两个OpenMP任务,每个任务运行您的一个功能。
感谢@novelocrocat和@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_CPU_AFFINITY =" 0 1"
将线程1与core0结合,而螺纹2与core1结合。
相关文章:
- 执行函数时导致崩溃的变量
- 在多个时间戳处执行函数
- 程序不会执行函数 c++
- 仅在函数模板中为那些定义了函数的类型执行函数
- 如何在 c++ 的类声明中执行函数?
- 从 std::vector 迭代器中执行函数指针
- 异步 60 秒延迟后C++执行函数?
- 如果发生错误,则返回错误值,否则,继续执行函数
- 执行函数两次
- C++11:如何在 n 秒后在主线程中执行函数
- C++执行函数和 lambda 内部
- 从主线程C 11执行函数调用的线程
- 现代C++执行函数返回指针的方法
- 为什么Win API线程执行函数,而标准线程则没有
- varargs宏以执行函数调用或将其转换为字符串
- 单步执行函数,但不进入VS2017的参数评估
- 加载 Lua 文件并使用变量而不执行函数
- 尽可能在编译时执行函数契约
- 在QT应用程序中创建并执行函数
- 如何使用boostsio_service.post()执行函数并使用数组或指针作为参数