在Linux系统上如何进行openmp多线程编程

飞之乎者也

飞之乎者也

2016-02-19 19:45

今天图老师小编给大家介绍下在Linux系统上如何进行openmp多线程编程,平时喜欢在Linux系统上如何进行openmp多线程编程的朋友赶紧收藏起来吧!记得点赞哦~

OpenMP是一种多处理器多线程的编程语言,能够支持多个平台,包括Linux系统,那么Linux下要如何进行openmp多线程编程呢?一起来了解下吧。

 在Linux系统上如何进行openmp多线程编程

关键语法:

代码如下:

#inlcude 《omp.h》

#pragma omp parallel for

#pragma omp for reduction(+: 变量)

#pragma omp critical//锁

{

}

#pragma omp parallel for private(x,y)//每个线程都独立拷贝x, y变量,互不干扰,如果不设默认是共享变量

#pragma omp parallel for schedule(static/dynamic/guided, k)//总工作量划分成n/k块,再多线程调度

#pragma omp parallel sections

{

#pragma omp section//要保证几个section下的函数之间没有变量依赖

。。。。。。。。。

#pragma omp section

。。。。。。。。。

}

#pragma omp parallel

{

。。。。。。。();

#pragma omp master/single //保证只有主线程/某个线程能访问下面的函数,区别是使用master没有barrier珊障,single的话先完成的线程等待没完成的线程

{

}

。。。。。。。

}《/p》 《p》#pragma omp barrier/nowait //强制设置珊障/无需等待,如果后续函数对前面的多线程没有依赖,即可使用nowait

#pragma omp parallel for firstprivate(变量)/lastprivate(变量) //为每个多线程赋初值/出多线程回到主线程时赋值供主线程使用

还有就是OpenMP的API:

代码如下:

int omp_get_num_threads(); //获取当前使用的线程个数

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

int omp_get_num_threads(2/3/。。。)//设置要使用的线程个数

nt omp_get_thread_num(void);//返回当前线程号

int omp_get_num_procs(void);//返回可用的处理核个数

ubuntu下,无需加《omp.h》头文件,只需在编译的时候增添-fopenmp即可。

例如:emacs操作命令如下

代码如下:

emacs omp.c《/p》 《p》#include 《stdio.h》

int main()

{

int rank, size;

#pragma omp parallel num_thread(3) private(rank) //num_threads用来控制线程数量

//或者使用omp_set_num_threads(3);《/p》 《p》 {

rank = omp_get_thread_num();

size = omp_get_num_threads();

printf(using %d of %d now.n, rank, size);

}

return 0;

}《/p》 《p》ctrl+x s

alt+x compile

gcc -fopenmp -o omp omp.c

alt+shift+1 。/omp

上面就是Linux下实现OpenMP多线程编程的方法介绍了,本文主要通过一个实例来给大家讲解OpenMP多线程编程,如果还想了解更多的相关知识,不妨多多关注本站吧。

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)
展开更多 50%)
分享

猜你喜欢

在Linux系统上如何进行openmp多线程编程

电脑入门
在Linux系统上如何进行openmp多线程编程

Linux下的多线程编程

编程语言 网络编程
Linux下的多线程编程

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux操作系统下的多线程编程详细解析

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
Linux操作系统下的多线程编程详细解析

Java 多线程编程

编程语言 网络编程
Java 多线程编程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java多线程编程精要

Java JAVA基础
Java多线程编程精要

Java多线程编程精要之实现线程

Java JAVA基础
Java多线程编程精要之实现线程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

SQL Server数据库实用小技巧集合

SQL Server数据库实用小技巧集合

做Oracle DBA要会些什么问题

做Oracle DBA要会些什么问题
下拉加载更多内容 ↓