OpenMp 个人笔记(一)
来源:互联网 发布:中日关系走向 知乎 编辑:程序博客网 时间:2024/05/22 12:48
1先来个HelloWorld
OpenMP是一个非常好用的并行编程的库,在我们的Windows平台上,只要下载了mingw(gomp)就可以使用了,可以说配置起来很方便,配合GCC来进行C语言的并行程序开发也是一件非常爽的事情啦。下面给出一个在网上找到的OpenMP的代码,并且用GCC编译来看看效果如何。
Noname1.c代码:
#include <omp.h>#include <stdio.h>#include <stdlib.h>#include <time.h>void test(){int a=0;clock_t t1=clock();for(int i=0;i<100000000;i++){a=i+1;}clock_t t2=clock();printf("Time = %d\n",t2-t1);}int main(int argc, char* argv[]) {clock_t t1=clock();#pragma omp parallel for for(int j=0;j<2;j++){test();}clock_t t2= clock();printf("Total time: %d\n",t2-t1);test();return 0;}
编译的命令行:
gcc -std=c99 -fopenmp Noname1.c -o hello.exepause
这里要加上-fopenmp,-o可以指定输出的文件名,默认的是a.exe。
在笔者的破机子上这个代码跑出来的结果是
time=600
time=690
totaltime=700
time=660
totaltime 是两个test并行执行的时间,最后一个time是一个test执行的时间,可以看到这个效果还是不错的。关键我们几乎什么都没干,只不过在for循环上加了一条类似注释而已。因为笔者还要写论文,靠着并行计算的名头来忽悠毕业,所以还是先扯一点OpenMP的概念吧。
2 fork/join模式
openmp是的卖点是“共享式存储”并行,笔者现在还不是非常明白她的运作机理。而所谓的fork/join模式是说要等并行程序执行完成之后才能执行后面的非并行部分,不知道这和fork,join有什么关系? 相当于主线程创建的线程是不会和主线程一起并行执行的。
0 0
- OpenMp 个人笔记(一)
- openMP学习笔记(一)
- OpenMP学习笔记<一>
- OpenMP编程学习笔记一
- OpenMP (一)
- OpenMP学习(一)
- 多核编程学习笔记之OpenMP(一)
- 个人学习笔记(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- OpenMP并行程序设计(一)
- iOS 使用ASIHTTPRequest实现图片下载,断点续传,cell自定义
- 非交互分割的背景去除
- 远程访问MySQL
- jsp页面上传图片之后页面,当前页面的显示上传的图片可以自行更新
- Combinations
- OpenMp 个人笔记(一)
- javascritp知识点
- HDU 1213 How Many Tables
- 人生
- Android开发之获取联系人信息
- 佛,我心中的一朵莲花
- 哈希(hdu 1280 && 1425 && 1264 && 1496 && 2522 && 2600)
- 管理上的心得分享(一)
- Java开发中的23种设计模式详解