OpenMP 中omp_set_max_active_levels的最佳值是多少?
What is the optimum value for omp_set_max_active_levels in OpenMP?
我有一个具体的例子,但我也对更一般的答案感兴趣。给定以下代码和一个均匀平衡的二叉树:
void mainTraverse(tree *node) {
omp_set_nested(1);
omp_set_max_active_levels(4);
recurseTraverse(node);
}
void recurseTraverse(tree *node)
{
if (node == NULL)
return;
#pragma omp parallel
{
#pragma omp sections
{
#pragma omp section
recurseTraverse(node->left);
#pragma omp section
recurseTraverse(node->right);
}
}
// lengthy per-node computation here
}
根据 OpenMP 规范:
omp_set_max_active_levels例程限制嵌套的活动并行区域的数量。
但这究竟意味着什么?4 是set_max_active_levels的最佳值吗?此代码将创建多少个线程?
您应该使用 OpenMP 任务(而不是部分和嵌套并行性(执行此操作,正是因为您的问题无法回答!
相关文章:
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- 实现基于数字值(正、负、零)的条件表达式的最佳方法
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- 在C++中共享键值对的最佳方式
- 访问 std::multimap 值的最佳方式?
- 用于浮点值的最佳变量类型
- 以最佳方式返回复制的值
- OpenMP 中omp_set_max_active_levels的最佳值是多少?
- 编写两个方法的最佳方法,这些方法在C++中返回同一项的值和引用
- 获取地图值作为向量的最佳方法是什么
- C++ 最佳键值容器,可按值排序,并可快速删除
- 设置带有布尔值的比特集的最佳方法
- 在映射最小值和最大值时从未签名转换为已签名的最佳方法?
- 用于在具有更新查询的二维矩阵中查找最大值的最佳数据结构
- 将值传递给自定义QtWidget的最佳方式
- 从初始值设定项列表中填充boost::multi_array的最佳方法是什么
- 是从C 中更新QML梯度值的最佳方法
- 在.NET中存储一堆恒定值的最佳方法
- 读取内存值(实时)最佳实践
- 在有限差分法中使用的最佳ε/dx值是多少