首页 > 其他分享 >OpenMP - 编译制导(五)task、team

OpenMP - 编译制导(五)task、team

时间:2024-03-16 14:46:29浏览次数:19  
标签:task thread taskwait 任务 线程 team OpenMP excuting

task制导

显式地将代码块作为任务创建,并将这些任务分配给线程池中的线程执行,多个任务可以并行执行,每个任务都可能在不同的线程上执行。通过#pragma omp task指令来创建任务,以及通过#pragma omp taskwait指令来等待任务的完成。

#include <iostream>
#include <omp.h>
using namespace std;

void func(int task){
    cout << "thread " << omp_get_thread_num() << " is excuting task " << task << endl;
}

int main(int argc, char* argv[]){
    #pragma omp parallel
    {
        #pragma omp single
        {
            #pragma omp task
            {
                func(1);
            }
            #pragma omp task
            {
                func(2);
            }
            #pragma omp taskwait
            cout << "taskwait..." << endl;
            #pragma omp task
            {
                func(3);
            }
        }
    }
    return 0;
}
task
thread 5 is excuting task 2
thread 4 is excuting task 1
taskwait...
thread 0 is excuting task 3
no taskwait
taskwait...
thread 3 is excuting task 3
thread 0 is excuting task 1
thread 4 is excuting task 2

。。。

 

标签:task,thread,taskwait,任务,线程,team,OpenMP,excuting
From: https://www.cnblogs.com/tao-gak567/p/18077051

相关文章

  • TEAM标签管理体系是什么?如何进行数据权益的保护?
    TEAM标签管理体系是什么?如何进行数据权益的保护?导读一、数据权益保护的难点及解决思路二、数据权益保护的“TEAM”管理体系1、Tagging(打标):为数据资源提供全生命周期跟踪保护2、Ensuring(保障):为数据资源合法开发提供有效监管机制3、Authorization(授权):实现数据权益的管理与......
  • task1
    #include<stdio.h>intmain(){intx;for(x=1;x<=2;x++){printf("o\n");printf("<H>\n");printf("II\n");}return0;}#include<stdio.h>intm......
  • OpenMP - runtime库函数
    常用函数。#include<iostream>#include<omp.h>#defineNUM_THREADS16usingnamespacestd;intmain(intargc,char*argv[]){omp_set_num_threads(NUM_THREADS);#pragmaompparallel{cout<<"threadnum:"<&......
  • OpenMP - default子句
    OpenMP是基于共享内存编程模型的,这意味着除非明确指定,否则所有的变量在并行区域中都是共享的。使用default子句,程序员可以更改这种默认行为。default(none)指定在并行区域内,除非明确指定为shared或private,否则所有变量都是未定义的。这要求程序员显式地指定每个变量的作用域;defau......
  • OpenMP - 嵌套循环"collapse"
    collapse子句用于将多个嵌套的循环折叠成一个单独的循环。这个特性通常用于在嵌套循环上并行化以提高性能。参数n指定了折叠的层数。#include<iostream>#include<omp.h>usingnamespacestd;intmain(intargc,char*argv[]){inta[6][6];#pragmaompparallel......
  • OpenMP - 同步机制“锁”
    OpenMP中的锁(lock)是一种同步机制,用于保护共享资源,以防止多个线程同时访问或修改它,从而避免竞态条件。锁允许线程在访问临界区之前获取锁,并在退出临界区时释放锁。这样可以确保在任何给定时间只有一个线程能够访问临界区,从而保证了数据的一致性。简单锁最基本的锁,只能被一个线程......
  • Spring Task 定时任务框架 以及cron表达式
    一:SpringTask介绍SpringTask是spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码应用场景:·信用卡每月还款提醒·银行贷款每月还款提醒·火车票售票系统处理未支付订单·入职纪念日为用户......
  • 适合上班族的副业:steam游戏搬砖1天3小时,月入8K
    互联网新时代,做副业的人越来越多。如果能充分利用下班后的时间,还真能赚到不少钱。steam游戏搬砖项目就是这样一个非常适合上班的副业,只要用心去操作,一个月至少收入两三千,多的轻松上万。steam游戏搬砖项目其实做的是中间商的生意,在Steam平台充值美金,购买道具装备,搬砖到网易BU......
  • Centos部署Teamspeak语音服务器
    本案例基于阿里云ECS部署,其厂商设备均可1、关闭防火墙和selinux安全$systemctlstopfirewalld$systemctldisablefirewalld$sed-i's/SELINUX=.*/SELINUX=disabled'//etc/selinux/config$setenforce02、下载文件$yuminstall-ywget$wgethttps://file......
  • OpenMP 编程模型
    OpenMP内存模型共享内存模型:OpenMP专为多处理器/核心、共享内存机器设计,底层架构可以是共享内存UMA或NUMOpenMP执行模型基于线程的并行:OpenMP程序基于多线程来实现并行,线程是操作系统可以调度的最小执行单元。线程存在于单个进程的资源中,没有进程,线程就不存在。......