OpenMP入门(1)创建一个简单的OpenMP程序与其编译
来源:互联网 发布:b站up主 知乎 编辑:程序博客网 时间:2024/05/13 00:11
在C/C++和Fortran中,都有编译器支持OpenMP,这里我们举一个简单的C程序的例子
test.c :
#ifdef _OPENMP#include <omp.h>#endifint main(){#pragma omp parallel { printf("is parallel ! \n"); printf("Always // \n"); } printf("is sequential \n");}
其中#pragma omp <directive> [clause[[,] clause] ...]
是OpenMP的语法结构。directive 有11种,parallel 代表接下来的代码块将被多个线程并行各执行一遍。其他的directive我会在后续的文章中讲解。
test2.c:
#ifdef _OPENMP#include <omp.h>#endifint main(){#pragma omp parallel{ printf("is parallel ! \n");} printf("is sequential \n");}
编译:
下面是两种编译方法,第一行是编译成普通的c程序
第二行是编译成并行化程序
gcc test2.c -o test2gcc -fopenmp test2.c -o test2_openmp
运行test2与其结果:
$./test2is parallel !is sequential
运行test2_openmp与结果:
$export OMP_NUM_THREADS=4$./test2_openmpis parallel !is parallel !is parallel !is parallel !is sequential
通过export指令我们把线程数设置为4,所以输出is parallel !结果4次。
如果#pragma omp parallel后面没有中括号,它只对紧跟着的那条指令并行化:
test3.c
#ifdef _OPENMP#include <omp.h>#endifint main(){#pragma omp parallel printf("is parallel ! \n"); printf("is sequential \n");}
test2.c 和 test3.c 是一样的。
在下一篇文章中我会为大家介绍OpenMP条件编译和几个常用函数。
http://blog.csdn.net/liuxingrui4p/article/details/44118297
0 0
- OpenMP入门(1)创建一个简单的OpenMP程序与其编译
- 从一个简单的OpenMP程序学习VS2003的OpenMP程序编译
- openmp 例子:一个简单的OpenMP例子
- Openmp入门(1)
- 环境: OpenMp入门系列1: OpenMP QT 编译配置
- OpenMP入门程序
- 使用OpenMP的一个简单例子
- OpenMP: OpenMP测试程序
- openmp的简单介绍
- OpenMP 入门
- OpenMP 入门
- OpenMP入门
- OpenMp入门
- OPENMP入门的一些文章
- OpenMP: 使用OpenMP优化程序
- OpenMP: 使用OpenMP优化程序
- OpenMP入门(2)条件编译和查看线程数的函数
- OpenMP
- Jquery表单取值赋值的一些基本操作
- java创建Socket
- C++ 内存分配(new,operator new)
- 【C/C++】Linux下使用system()函数一定要谨慎
- StoryBoard没有设置默认显示的controller(入口箭头不见了)
- OpenMP入门(1)创建一个简单的OpenMP程序与其编译
- Ubutu 14.04 安装配置Android opencv开发环境
- intent传递参数
- Android简易短信发送器
- vagrant启动报错The following SSH command responded with a non-zero exit status.
- 高精度运算类bign
- YT15-HDU-坐电梯要不要这么麻烦
- 微信公众平台开发(80) 上传下载多媒体文件
- 大数乘法&除法