小编Ann*_*Kim的帖子

OpenMP任务有和没有并行

Node *head = &node1;
while (head)
{
    #pragma omp task 
        cout<<head->value<<endl;
    head = head->next;
}

#pragma omp parallel
{
    #pragma omp single
    {
        Node *head = &node1;
        while (head)
        {
            #pragma omp task 
                cout<<head->value<<endl;
            head = head->next;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在第一个块中,我只创建了没有并行指令的任务,而在第二个块中,我使用了并行指令和单指令,这是我在论文中看到的常见方法.我想知道它们之间的区别是什么?顺便说一句,我知道这些指令的基本含义.

我的评论中的代码:

void traverse(node *root)
{
    if (root->left) 
    {
        #pragma omp task 
        traverse(root->left);
    }
    if (root->right) 
    {
        #pragma omp task 
        traverse(root->right);
    }
    process(root);
}
Run Code Online (Sandbox Code Playgroud)

task openmp

7
推荐指数
1
解决办法
4019
查看次数

标签 统计

openmp ×1

task ×1