并行编程之OpenMP(2)

第一个程序"Hello World"

       在进行并行编程之前,首先要知道自己的电脑是几核的。

(1)OpenMP线程数设定

       在计算机管理—设备管理器—处理器一栏中有多少个图标就是几核。一个核能跑一个线程,当所需线程超过CUP核数目时,CPU会采用一定的调度算法每隔一段时间就将这些线程调入或调出CPU,以确保每个线程都能分享一部分CPU时间,实现多线程并发。所以线程的数目最好与核数目相同为好。如下图,我的电脑为12核,所以就设置为12线程。
在这里插入图片描述

(2)代码实现

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

int main()
{
    
    
    int number;                    //存储核数的变量
    number = omp_get_num_procs();  //读取电脑的核数
    omp_set_num_threads(number);   //设置线程数为核数

#pragma omp parallel
    {
    
    //分支
        cout << "Hello World\n";
     //聚合
    }
    return 0;
}

在这里插入图片描述
       如上图所示,同传统的C++代码的唯一区别是增加了#pragma omp parallel这样一条指令。该指令的作用为派生分配的线程,使得12个线程均运行打印的指令。在该作用域开始,主进程分支成了12个线程,在作用域结束前,12个线程又聚合为一个主进行,该模型就是最简单的聚合模型,也是OpenMP的核心思想。

猜你喜欢

转载自blog.csdn.net/qq_41641553/article/details/115427911