Fortran+ openmp实现实例
2017-12-18 21:36
295 查看
转载于:http://download.csdn.net/download/bingdaozaixian/4810039
PROGRAM parallel_01 USE omp_lib IMPLICIT NONE INTEGER :: i,j INTEGER(4) :: time_begin, time_end, time_rate REAL, DIMENSION(1:50,1:50) :: f, g REAL :: k WRITE(*,*) '开始进行串行计算' !>@ 1、通过串行计算获得两个矩阵的初始化计算 CALL system_clock(time_begin,time_rate) DO i = 1, 50 DO j = 1, 50 f(i,j) = i*j k = k + 1 END DO END DO DO i = 1, 50 DO j = 1, 50 g(i,j) = i*j + 1 k = k + 1 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' !>@ 2、通过块并行计算获得两个矩阵的初始化计算 k = 0 ! 重新初始化k的值 CALL system_clock(time_begin,time_rate) CALL omp_set_num_threads(2) !$omp parallel !$omp sections private(i,j,k) !$omp section DO i = 1, 50 DO j = 1, 50 f(i,j) = i*j k = k + 1 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 = 1, 50 DO j = 1, 50 g(i,j) = i*j + 1 k = k + 1 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' !>@ 3、通过DO循环实现两个矩阵的初始化计算 k = 0 ! 重新初始化k的值 CALL system_clock(time_begin,time_rate) !$omp parallel private(k,j,i) !$omp do DO i = 1, 50 DO j = 1, 50 f(i,j) = i*j k = k + 1 ! 去掉注释后,可现实每一次循环所在的线程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 = 1, 50 DO j = 1, 50 g(i,j) = i*j k = k + 1 ! 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
相关文章推荐
- Fortran+ OpenMP实现实例
- OpenMP & Fortran
- 本文实例讲述了js实现window.open不被拦截的解决方法。
- OpenWrt Web界面修改及功能实现实例说明
- java实现附件预览(openoffice+swftools+flexpaper)实例
- OpenWrt Web界面修改及功能实现实例说明
- OpenMP for Fortran
- OpenWrt Web界面修改及功能实现实例说明
- OpenMP to GPGPU:一种实现自动翻译和调优的编译框架[1]
- OpenWrt Web界面修改及功能实现实例说明
- 实现Android半透明Menu效果的开发实例
- 禁止程序多开,程序单一实例实现
- JSP + ajax实现输入框自动补全功能 实例代码
- php实现base64图片上传方式实例代码
- jQuery - 综合实例 - 实现前一个和后一个效果
- jQuery实现的五子棋游戏实例
- [转]在Windows下使用MingGW[GCC+OpenMP]和CodeBlocks开发多核应用基本环境配置
- spring boot拦截器实现IP黑名单实例代码
- C++ 实现求小于n的最大素数的实例
- js实现的捐赠管理完整实例