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实现实例的更多相关文章

  1. OpenMP并行化实例----Mandelbrot集合并行化计算

    在理想情况下,编译器使用自动并行化能够管理一切事务,使用OpenMP指令的一个优点是将并行性和算法分离,阅读代码时候无需考虑并行化是如何实现的.当然for循环是可以并行化处理的天然材料,满足一些约束的 ...

  2. OpenMP for Fortran

    OpenMP for Fortran OpenMP Directive Syntax of OpenMP compiler directive for Fortran: !$OMP Directive ...

  3. OpenMP并行编程

    什么是OpenMP?“OpenMP (Open Multi-Processing) is an application programming interface (API) that support ...

  4. OpenMP Programming

    一.OpenMP概述 1.OpenMP应用编程接口API是在共享存储体系结构上的一个编程模型 2.包含 编译制导(compiler directive).运行库例程(runtime library). ...

  5. c的详细学习(8)指针学习(二)

    (1)指针与二维数组 一个数组的名字代表该数组的的首地址,是地址常量(作为形式参数的数组名除外),这一规定对二维数组或更高维数组同样适用. 在c语言中定义的任何一个二维数组实际上都可以看做是一个一维数 ...

  6. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  7. 在fortran下进行openmp并行计算编程

    最近写水动力的程序,体系太大,必须用并行才能算的动,无奈只好找了并行编程的资料学习了.我想我没有必要在博客里开一个什么并行编程的教程之类,因为网上到处都是,我就随手记点重要的笔记吧.这里主要是open ...

  8. OpenMP的简单使用教程

    转自:http://binglispace.com/2015/01/09/openmp-intro/ OpenMP的简单使用教程 今天有幸参加了一个XSEDE OpenMP的workshop讲座,真是 ...

  9. 应用OpenMP的一个简单的设计模式

    小喵的唠叨话:最近很久没写博客了,一是因为之前写的LSoftmax后馈一直没有成功,所以在等作者的源码.二是最近没什么想写的东西.前两天,在预处理图片的时候,发现处理200w张图片,跑了一晚上也才处理 ...

随机推荐

  1. Xamarin Essentials教程屏幕状态DeviceDisplay

    Xamarin Essentials教程屏幕状态DeviceDisplay   由于移动设备型号众多,采用的显示屏幕也千差万别.为了获取较好的显示效果,应用程序往往需要获取设备的显示状态,如屏幕参数. ...

  2. XamarinEssentials教程应用程序信息AppInfo

    XamarinEssentials教程应用程序信息AppInfo   很多应用程序都提供一个“关于”功能.该功能会向用户展示应用程序的基本信息,如版本号.应用程序名称等.这个功能可以通过Xamarin ...

  3. Yolov3参数解释以及答疑

    目录 参数解析 训练答疑 ​ 参数解析 [net] #Testing #batch=1 //test:一次一个图片 #subdivisions=1 #Training batch=32 //一次迭代送 ...

  4. 数据源、数据集、同步任务、数据仓库、元数据、数据目录、主题、来源系统、标签、增量识别字段、修改同步、ES索引、HBase列族、元数据同步、

    数据源.数据集.同步任务.数据仓库.元数据.数据目录.主题.来源系统.标签. 增量识别字段.修改同步.ES索引.HBase列族.元数据同步.DS.ODS.DW.DM.zk集群地址 == 数据源 数据源 ...

  5. 《C#图解教程》一览

    本书针对编程新手和中级水平的程序员.笔者尽力专注 C# 语言本身,详尽深入地描述语言及各部分.少涉及 .NET 和相关编程实践.本书写作过程中,笔者始终坚持确保内容简洁性的同时又能透彻地讲解这门语言. ...

  6. id生成器,分布式ID自增算法(Snowflake 算法)

    接口: /** * id生成器 */ public interface IdGenerator { String next(); } 实现类: /** * 分布式ID自增算法<br/> * ...

  7. python基础一 -------如何在列表字典集合中根据条件筛选数据

    如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...

  8. js 函数与类的区别

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. docker -v挂载

    docker run -d -p 3306:3306 -v /var/lib/mydata:/var/lib/mysql  my_sql docker exec -it mys_sql /bin/ba ...

  10. python网络编程(七)

    应用:模拟QQ聊天 客户端参考代码 #coding=utf-8 from socket import * # 创建socket tcpClientSocket = socket(AF_INET, SO ...