《OpenMP程序的编译和运行》由会员分享,可在线阅读,更多相关《OpenMP程序的编译和运行(13页珍藏版)》请在人人文库网上搜索。

1、SHANGHAI UNIVERSITY学 院计算机工程与科学学院实验OpenMP程序的编译和运行姓名陈帅学号教师刘芳芳时间2015.05.06报告成绩实验2-1. OpenMP程序的编译和运行1. 实验目的1) 在Linux平台上编译和运行OpenMP程序;2) 在Windows平台上编译和运行OpenMP程序。3) 掌握OpenMP并行编程基础。2. 实验环境1) 硬件环境:计算机一台;2) 软件环境:Linux、Win2003、GCC、MPICH、VS2008或其他版本Visual Studio;3. 实验内容1. Linux下OpenMP程序的编译和运行。OpenMP是一个共享存储并行系。

2、统上的应用编程接口,支持C/C+和FORTRAN等语言,编译和运行简单的Hello World程序。在Linux下编辑hellomp.c源程序,或在Windows下编辑并通过附件中的FTP工具(端口号:1021)上传,用gcc -fopenmp -O2 -o hellomp.out hellomp.c命令编译,用./hellomp.out命令运行程序。注:在虚拟机中当使用vi编辑文件时,不是以ESC键退出插入模式,可以使用“Ctrl+c”进入命令模式,然后输入wq进行存盘退出。代码如下:#include #include int main()int nthreads,tid;omp_set_n。

3、um_threads(8);#pragma omp parallel private(nthreads,tid)tid=omp_get_thread_num();printf(Hello World from OMP thread %dn,tid);if(tid=0)nthreads=omp_get_num_threads();printf(Number of threads is %dn,nthreads);安装gcc检查GCC是否安装完成 编写hellomp.c编译运行2.控制并行执行的线程数。根据算法的要求和硬件情况,例如CPU数量或者核数,选择适合的线程数可以加速程序的运行。请按照下列。

4、的方法进行线程数量的设置。/设置线程数为10xuycsv168 openmp$ OMP_NUM_THREADS=10/将线程数添加为环境变量xuycsv168 openmp$ export OMP_NUM_THREADS/运行修改hellomp.c程序,删除omp_set_num_threads(8);语句如果不定义OMP_NUM_THREADS,默认会等于CPU数量,在8核心的机器上,会打印出8行Hello World.omp_set_num_threads(8); 设置了子线程数为8,即是可以有8个子线程并行运行。#pragma omp parallel private(nthreads,。

5、tid) 为编译制导语句,每个线程都自己的nthreads和tid两个私有变量,线程对私有变量的修改不影响其它线程中的该变量。程序的功能是对于每个线程都打印出它的id号,对于id号为0的线程打印出线程数目。2. Windows下OpenMP程序的编译和运行。用VS2013编辑上述的hellomp.c源程序,注意在菜单“项目-属性-C/C+-语言”选中“OpenMP支持”,编译并运行程序。打开或者新建一个c+项目,依次选择Project-属性-配置属性(configuration property)-c/c+-语言(Language),打开OpenMP支持;设置环境变量OMP_NUM_THREA。

6、DS。设置环境变量:我的电脑-属性-高级-环境变量,新建一个OMP_NUM_THREADS变量,值设为2,即为程序执行的线程数。图3 VS2013使用界面使用VS2013进行并行程序设计,图3为VS2013使用界面,图4为运行结果截图。图4 程序运行结果截图虽然线程都是一起开始运行,但实验中每次运行的结果都不一样,这个是因为每次每个线程结束的先后可能不一样的。所以每次运行的结果都是随机的。这是串行程序和并行程序不同的地方:串行程序可以重新运行,结果和之前一样;并行程序却因为执行次序无法控制可能导致每次的结果都不一样。实验2-2 矩阵乘法的OpenMP实现及性能分析1. 实验目的1) 用Open。

7、MP实现最基本的数值算法“矩阵乘法”2) 掌握for编译制导语句3) 对并行程序进行简单的性能调优2. 实验内容1) 运行并测试OpenMP编写两个n阶的方阵a和b的相乘程序,结果存放在方阵c中,其中乘法用for编译制导语句实现并行化操作,并调节for编译制导中schedule的参数,使得执行时间最短。要求在window环境(不用虚拟机),在linux环境(用和不用虚拟机情况下)测试程序的性能,并写出详细的分析报告。源代码如下:#include#include#includevoid comput(float* A,float* B,float* C)/两个矩阵相乘传统方法int x,y;fo。

8、r(y=0;y#include#includeusing namespace std;void qh (int i)float sum = 0;int j;for (int j = 1; j = i; j+)sum += sqrt(j);void qh1(int i)/计算1到i平方根的和float sum = 0;int j;for (int j = 1; j = i; j+)sum += sqrt(j);cout sum= sumendl;int main()int i = 10;clock_t s, f;s = clock();double duration;int x = 0;int 。

9、y = 0;int n = 0;int k = 0;/#pragma omp parallel if(false)for (n = 0; n; n+)qh(i);qh1(i);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf(s-1,000,000 :%fn, duration);printf(n=n);s = clock();/parallel 2#pragma omp parallel forfor (n = 0; n2; n+)/CPU是核线程的for (k = 0; k; k+)/每个线程管个循环qh(i);q。

10、h1(i);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf(p2-500,000:%fn, duration);/parallel 3s = clock();#pragma omp parallel forfor (n = 0; n4; n+) /CPU是核线程的for (k = 0; k; k+)/每个线程管个循环qh(i);qh1(i);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf(p3- 250,000:%fn, duration)。

11、;/parallel 4s = clock();#pragma omp parallel forfor (n = 0; n4; n+) /CPU是核线程的for (k = 0; k; k+)/每个线程管个循环qh(i);qh1(i);f = clock();duration = (double)(f - s) / CLOCKS_PER_SEC;printf(p4- 500,000:%fn, duration);/parallel 1s = clock();#pragma omp parallel forfor (n = 0; n; n+)qh(i);qh1(i);f = clock();dur。

12、ation = (double)(f - s) / CLOCKS_PER_SEC;printf(p1- 1,000,000 :%fn, duration);system(pause);return 0;运行结果:结果分析:程序计算的是1到10 的平方根的和,由运行结果可以看出,串行运算s-1的时间比并行运算p-1的时间要稍短一些,这是因为并行运算有创建和销毁线程的时间,当计算量比较少时,这部分的时间就变为主要的消耗时间。p-2是以2线程运算次,p-4是以4线程运算次,由p-4比p-2多出的0.时间可以看出多创建2个线程是非常消耗时间的(运算量较少时)。P-3是以4线程运算次,耗时同p-2相同,说明在计算量小的情况下使用OMP多核线程是非常划不来的。总之,OMP并行多核线程技术适用于计算量很大时使用,这是线程创建和销毁的时间就可以忽略不计,对于计算量小的运算,还是串行运算靠谱。

Linux下开启openmp编译,OpenMP程序的编译和运行相关推荐

  1. mysql5.5.8编译安装_Mysql应用linux下mysql 5.5.8 源码编译安装

    <MysqL应用linux下MysqL 5.5.8 源码编译安装>要点: 本文介绍了MysqL应用linux下MysqL 5.5.8 源码编译安装,希望对您有用.如果有疑问,可以联系我们. ...

  2. 在Linux下使用linuxdeployqt发布Qt程序

    一.简介 linuxdeployqt 是Linux下的qt打包工具,可以将应用程序使用的资源(如库,图形和插件)复制到二进制运行文件所在的文件夹中. 二.安装linuxdeployqt 去github ...

  3. php开启sockets模块,linux下开启php的sockets扩展支持实例

    下个相同版本的php源码,进行编译安装,再按照上面步骤搞,生成的so.copy到rpm装的那个,修改php.ini进行扩展就行了, 或者到网上找相同版本,相同系统 的编译好的so文件. 在linux下 ...

  4. Linux下推荐的常用应用程序列表

    Linux下推荐的常用应用程序列表 一,网页浏览 1,firefox firefox是现在最火的一个浏览器,支持好多扩展和插件,也有很多漂亮的主题.firefox就是mozilla-firefox,他 ...

  5. linux下 为自己编写的程序 添加tab自动补全 功能

    linux下 为自己编写的程序 添加tab自动补全功能 入门 complete 在我的tmp下随便写了一个a.sh, 为他补全 edit /etc/bash_completion.d/foo _foo ...

  6. 如何起Linux服务器的21端口,linux下开启ftp的21号端口

    linux下开启ftp的21号端口 1.先运行vsftpd服务: #service vsftpd start 2.通过iptables开放21号端口 (1) 先查看iptables设置: #iptab ...

  7. linux下使用AppImage打包qt程序

    linux下使用AppImage打包qt程序 下载工具 1.1 linuxdeployqt 下载地址:https://github.com/probonopd/linuxdeployqt/releas ...

  8. Linux下配置IPV6,C程序适配IPV6

    Linux下配置IPV6,C程序适配IPV6 1. 环境 CentOS7.7 最小系统 2. linux下配置IPV6 需要先确认CentOS7.7操作系统中已安装 ip6tables 组件 修改网络 ...

  9. linux apache部署php,Linux下apache虚拟主机配置多版本php同时运行 | 系统运维

    学习本教程须掌握: 1.Linux下指定版本编译安装LAMP 2.Linux下Apache虚拟主机配置 3.CentOS 7.x编译安装Nginx1.10.3+MySQL5.7.16+PHP5.2 5 ...

  10. 【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程

    一. C程序编译过程 编译过程简介 : C语言的源文件 编译成 可执行文件需要四个步骤, 预处理 (Preprocessing) 扩展宏, 编译 (compilation) 得到汇编语言, 汇编 (a ...

最新文章

  1. Milking Cows 挤牛奶
  2. 索引中丢失 IN 或 OUT 参数:: 103,解决办法
  3. 如何根据两个顺序构造⼀个唯⼀的⼆叉树?
  4. 计算机网络管理员五级试题,计算机网络管理员考试试题库和答案.doc
  5. 【TensorFlow】TensorFlow函数精讲之tf.get_variable()和tf.get_variable_scope()
  6. JSP — 小项目【实现登录界面】
  7. java移位运算符_Java中的移位运算符(“”、“”、“”)
  8. angular自带的一些api_在Angular软件中执行API请求的正确方式,了解一下
  9. 使用现有在线翻译服务进行代码翻译的体验
  10. linux下配置内网ip
  11. 短信软件平台源码数据库配置与客户端功能介绍|国际短信通道短信后台-移讯通
  12. NetWorkHelper 检测网络状态
  13. IC设计之CDC(跨时钟域)问题
  14. 东塔靶场之文件上传cms--pluck
  15. android原生坐标系,经纬度查寻地图位置,坐标系在线互转
  16. 如何用保险抵御人生中的死亡风险【全攻略】
  17. windows 剪贴板监控
  18. 一个简单的全排列算法
  19. 保姆级二进制安装高可用k8s集群文档(1.23.8)
  20. 数值分析 python_数值分析实验之矩阵特征值(Python代码)

热门文章

  1. 智能家居产品存在的几大安全问题
  2. mysql的左右连接 分页_Java 与 Mysql连接,并分页显示
  3. 巴比特 | 元宇宙每日必读:杭州亚运会组委会将发售“亚运在中国”系列数字藏品;“戏曲元宇宙”戏曲元宇宙”是啥?怎么建?...
  4. c语言解张静态的消消乐的图片,开心消消乐:那些迷失在消消乐的小时光,我们中招都一个样...
  5. UI设计规范技巧——文件整理
  6. selenium 酷狗音乐搜索歌曲播放
  7. P1195 口袋的天空-Kruskal(优先队列+并查集)
  8. 看WIZ110SR如何实现串口转以太网功能
  9. 【年度总结】— 向前一步
  10. scala字符串切割截取split