Fortran+ OpenMP实现实例
PROGRAM parallel_01 USE omp_lib
IMPLICIT NONE INTEGER :: i,j
INTEGER() :: time_begin, time_end, time_rate
REAL, DIMENSION(:,:) :: f, g
REAL :: k WRITE(*,*) '开始进行串行计算'
!>@ 、通过串行计算获得两个矩阵的初始化计算
CALL system_clock(time_begin,time_rate)
DO i = ,
DO j = ,
f(i,j) = i*j
k = k +
END DO
END DO DO i = ,
DO j = ,
g(i,j) = i*j +
k = k +
END DO
END DO CALL system_clock(time_end,time_rate)
WRITE(*,*) 'The value of k after serial computing is: ', k
WRITE(*,*) 'The time wasted on serial computing is: ',(time_end - time_begin)/time_rate WRITE(*,*)
WRITE(*,*)
WRITE(*,*) '开始进行第一类串行计算—SECTIONS' !>@ 、通过块并行计算获得两个矩阵的初始化计算
k = ! 重新初始化k的值
CALL system_clock(time_begin,time_rate)
CALL omp_set_num_threads()
!$omp parallel
!$omp sections private(i,j,k)
!$omp section
DO i = ,
DO j = ,
f(i,j) = i*j
k = k +
END DO
END DO
WRITE(*,*) 'The value of k after parallel computing is: ', k,', and it comes from the thread of ',omp_get_thread_num() !$omp section
DO i = ,
DO j = ,
g(i,j) = i*j +
k = k +
END DO
END DO
WRITE(*,*) 'The value of k after parallel computing is: ', k,', and it comes from the thread of ',omp_get_thread_num()
!$omp end sections
!$omp end parallel CALL system_clock(time_end,time_rate)
WRITE(*,*) 'The time wasted on the first class parallel computing is: ',(time_end - time_begin)/time_rate
WRITE(*,*)
WRITE(*,*)
WRITE(*,*) '开始进行第二类并行计算—DO' !>@ 、通过DO循环实现两个矩阵的初始化计算
k = ! 重新初始化k的值
CALL system_clock(time_begin,time_rate)
!$omp parallel private(k,j,i)
!$omp do
DO i = ,
DO j = ,
f(i,j) = i*j
k = k +
! 去掉注释后,可现实每一次循环所在的线程ID
! WRITE(*,*) 'The value of k after parallel computing is: ', k,', and it comes from the thread of ',omp_get_thread_num()
END DO
END DO
!$omp end do
!$omp end parallel !$omp parallel private(k,j,i)
!$omp do
DO i = ,
DO j = ,
g(i,j) = i*j
k = k +
! WRITE(*,*) 'The value of k after parallel computing is: ', k,', and it comes from the thread of ',omp_get_thread_num()
END DO
END DO
!$omp end do
!$omp end parallel
CALL system_clock(time_end,time_rate)
WRITE(*,*) 'The time wasted on the first class parallel computing is: ',(time_end - time_begin)/time_rate
END PROGRAM --------------------- 本文来自 B325帅猫-量子前沿技术研究所 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/dengm155/article/details/78837408?utm_source=copy
Fortran+ OpenMP实现实例的更多相关文章
- OpenMP并行化实例----Mandelbrot集合并行化计算
在理想情况下,编译器使用自动并行化能够管理一切事务,使用OpenMP指令的一个优点是将并行性和算法分离,阅读代码时候无需考虑并行化是如何实现的.当然for循环是可以并行化处理的天然材料,满足一些约束的 ...
- OpenMP for Fortran
OpenMP for Fortran OpenMP Directive Syntax of OpenMP compiler directive for Fortran: !$OMP Directive ...
- OpenMP并行编程
什么是OpenMP?“OpenMP (Open Multi-Processing) is an application programming interface (API) that support ...
- OpenMP Programming
一.OpenMP概述 1.OpenMP应用编程接口API是在共享存储体系结构上的一个编程模型 2.包含 编译制导(compiler directive).运行库例程(runtime library). ...
- c的详细学习(8)指针学习(二)
(1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...
- 最近学习工作流 推荐一个activiti 的教程文档
全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...
- 在fortran下进行openmp并行计算编程
最近写水动力的程序,体系太大,必须用并行才能算的动,无奈只好找了并行编程的资料学习了.我想我没有必要在博客里开一个什么并行编程的教程之类,因为网上到处都是,我就随手记点重要的笔记吧.这里主要是open ...
- OpenMP的简单使用教程
转自:http://binglispace.com/2015/01/09/openmp-intro/ OpenMP的简单使用教程 今天有幸参加了一个XSEDE OpenMP的workshop讲座,真是 ...
- 应用OpenMP的一个简单的设计模式
小喵的唠叨话:最近很久没写博客了,一是因为之前写的LSoftmax后馈一直没有成功,所以在等作者的源码.二是最近没什么想写的东西.前两天,在预处理图片的时候,发现处理200w张图片,跑了一晚上也才处理 ...
随机推荐
- Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境
一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...
- BeagleBone Black 从零到一 (2 MLO、U-Boot) 转
文章原址:jexbat.com/categories/BeagleBone/ 什么是 U-Boot 熟悉嵌入式开发的应该都听过它,U-boot 就是启动系统前的一段引导程序,虽然是引导程序,但是功能非 ...
- vscode那些事儿
2015年,微软发布了Visual Studio Code 一.编辑器配置 下面介绍两种方案. 1.设置文件 文件 -> 首选项 -> 设置vscode的字体大小,缩进. { " ...
- 2018-6-20-随笔-SQL Server中乱码
SQL Server中乱码解决方案: 在Sql Server2005英文版中,如果未对Varchar类型的字段进行设置,那么很多朋友会发现向数据库中插入记录时,如果对应的varchar类型字段 的值为 ...
- [NOIp2018提高组]货币系统
[NOIp2018提高组]货币系统 题目大意: 有\(n(n\le100)\)种不同的货币,每种货币的面额为\([1,25000]\)之间的一个整数.若两种货币系统能够组合出来的数是相同的的,那我们就 ...
- (转)ConurrentHashMap和Hashtable的区别
集合类是Java API的核心,但是我觉得要用好它们是一种艺术.我总结了一些个人的经验,譬如使用ArrayList能够提高性能,而不再需要过时的Vector了,等等.JDK 1.5引入了一些好用的并发 ...
- BZOJ4966 : 总统选举
线段树维护每个点的最有可能是答案的数以及它的权重. 合并两个节点的时候,将权重互相抵消,保留较大的那一个. 得到答案后,再在对应权值的Treap中查询出现次数,检查是否真正是答案. 时间复杂度$O(n ...
- BZOJ3655 : 神经错乱数
注意到前3个操作都不会影响每列的情况,而第4个操作必然会将行列交换,故只要每行的和相同即可满足条件. 考虑数位DP,设$f[i][j][k][t]$表示考虑最高的$i$位,第一行的和是$j$,当前行的 ...
- phpstorm连接ftp
1.先到服务器中添加一个专门连接ftp的账号 useradd --help useradd -c sftp -d /data/project/testdir/ -g root -M sftp // 创 ...
- printf scanf cin cout的区别与特征
printf和scanf是c语言的输入输出,学习c++以后,自然是用cin cout这两个更简单的输入输出 printf scanf 都需要进行格式控制,比较麻烦,但优点是速度比较快,毕竟多做了一些事 ...