C++ OpenMP中omp\U set\U max\U active\U级别的最佳值是多少?

C++ OpenMP中omp\U set\U max\U active\U级别的最佳值是多少?,c++,recursion,parallel-processing,openmp,sections,C++,Recursion,Parallel Processing,Openmp,Sections,我有一个具体的例子,但我也对更一般的答案感兴趣。给定以下代码和一个均衡的二叉树: 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

我有一个具体的例子,但我也对更一般的答案感兴趣。给定以下代码和一个均衡的二叉树:

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是设置最大活动水平的最佳值吗?
这段代码将创建多少线程?

您应该使用OpenMP任务(而不是分区和嵌套并行)来完成这项工作,因为您的问题无法回答

你应该使用任务而不是嵌套的部分。谢谢,我同意,但我必须为作业这样做。处理任务要容易得多,但我也在努力理解部分是如何工作的。