▶ 计时器函数 MPI_Wtime() 以及头文件 timer.h 中的宏函数 GET_TIME(),类似 time.h 中函数 clock() 的用法。注意 函数 clock() 记录的是CPU时间(包含用户代码,库函数,系统调用耗时,不包括空闲等待时间),而 MPI_Wtime() 和 GET_TIME()记录的是墙上时间(在 CPU 时间的基础上包括了空闲等待时间)。

● MPI_Wtime() 使用范例

 {
const int globalSize = ;
int globalDataInt[globalSize], i, comSize, comRank, sumInt;
double time; MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comSize);
MPI_Comm_rank(MPI_COMM_WORLD, &comRank); if (comRank == )
for (i = ; i < globalSize; globalDataInt[i] = i, i++); time = MPI_Wtime(); // 开始计时
MPI_Bcast(globalDataInt, globalSize, MPI_DOUBLE, , MPI_COMM_WORLD);
for (i = sumInt = ; i < globalSize; sumInt += globalDataInt[i++]);
time = MPI_Wtime() - time; // 终止计时 printf("Size = %d, rank = %d, resultInt = %d, time = %f ms\n", comSize, comRank, sumInt, time * );
MPI_Finalize();
return ;
}

● 输出结果:

D:\Code\MPI\MPIProjectTemp\x64\Debug>mpiexec -n  -l MPIProjectTemp.exe
[]Size = , rank = , resultInt = , time = 0.497859 ms
[]Size = , rank = , resultInt = , time = 0.466163 ms
[]Size = , rank = , resultInt = , time = 0.459093 ms
[]Size = , rank = , resultInt = , time = 0.442270 ms
[]Size = , rank = , resultInt = , time = 0.385950 ms
[]Size = , rank = , resultInt = , time = 0.437638 ms
[]Size = , rank = , resultInt = , time = 0.574171 ms
[]Size = , rank = , resultInt = , time = 0.542719 ms

● GET_TIME() 使用范例

 #include <stdio.h>
#include "timer.h"
#include <mpi.h> int main(int argc, char *argv[])
{
const int globalSize = ;
int globalDataInt[globalSize], i, comSize, comRank, sumInt;
double timeStart,timeEnd; MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &comSize);
MPI_Comm_rank(MPI_COMM_WORLD, &comRank); if (comRank == )
for (i = ; i < globalSize; globalDataInt[i] = i, i++); GET_TIME(timeStart); // 开始计时
MPI_Bcast(globalDataInt, globalSize, MPI_DOUBLE, , MPI_COMM_WORLD);
for (i = sumInt = ; i < globalSize; sumInt += globalDataInt[i++]);
GET_TIME(timeEnd); // 终止计时 printf("Size = %d, rank = %d, resultInt = %d, time = %f ms\n", comSize, comRank, sumInt, (timeEnd - timeStart) * );
MPI_Finalize();
return ;
}

● timer.h 的主要内容,我的 time.h 中没有结构体 struct timeval,无法运行上面的代码

 #ifndef _TIMER_H_
#define _TIMER_H_ #include <time.h> // 注意参数 now 是 double 类型而不是 double* 类型
#define GET_TIME(now) {struct timeval t; gettimeofday(&t, NULL); now = t.tv_sec + t.tv_usec/1000000.0; } #endif

MPI 计时器函数 MPI_Wtime()的更多相关文章

  1. MPI聚合函数

    MPI聚合通信 MPI_Barrier int MPI_Barrier( MPI_Comm comm ); 所有在该通道的函数都执行完后,才开始其他步骤. 0进程在状态T1调用MPI_Barrier函 ...

  2. MPI初学-安装及OpenMPI函数说明

    一.Mac下OpenMPI的安装 所用电脑:MacBook Pro,OSX 10.11.2 从openmpi官网下载相应版本:OpenMPI 1.8下载 解压文件 双击解压或者tar zxvf ope ...

  3. MPI编程简单介绍

    第三章MPI编程 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植.一般来讲,并行机不一定在各处理器之间共享存储 ...

  4. MPI编程简述

    第三章MPI计划 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植. 一般来讲,并行机不一定在各处理器之间共享存 ...

  5. MPI编程简介[转]

    原文地址http://blog.csdn.net/qinggebuyao/article/details/8059300 3.1 MPI简介 多线程是一种便捷的模型,其中每个线程都可以访问其它线程的存 ...

  6. MPI小例子

    MPI示例 MPI时间函数测试 #include<stdio.h> #include<mpi.h> #include<stdlib.h> #include<t ...

  7. MPI 学习笔记

    目录 MPI学习笔记 MPI准备 概述 前置知识补充 环境部署 1.修改IP及主机名 2.关闭防火墙 3.实现免密码SSH登录 4.配置MPI运行环境 5.测试 程序的执行 编译语句 运行语句 MPI ...

  8. MPI简谈

    MPI简谈 MPI是分布式内存系统,区别于OpenMP和Pthreads的共享内存系统.MPI是一种基于消息传递的并行编程技术,是如今最为广泛的并行程序开发方法. MPI前世今生 MPI(Messag ...

  9. (转)C#精确时间计时器

    原文地址:http://blog.sina.com.cn/s/blog_699d3f1b01012vgb.html 1 调用WIN API中的GetTickCount [DllImport(" ...

随机推荐

  1. JSP 语法

    JSP 语法 本小节将会简单地介绍一下JSP开发中的基础语法. 脚本程序 脚本程序可以包含任意量的Java语句.变量.方法或表达式,只要它们在脚本语言中是有效的. 脚本程序的语法格式: <% 代 ...

  2. 【Demo】CSS3 动画 加载进度条

    实例结果图: 完整代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...

  3. 多目标跟踪方法 NOMT 学习与总结

    多目标跟踪方法 NOMT 学习与总结 ALFD NOMT MTT 读 'W. Choi, Near-Online Multi-target Tracking with Aggregated Local ...

  4. show()是非模式窗体. showDialog()是模式窗体.

    show()仅仅是显示出来窗口界面而已```也就是和你执行的结果在同一窗口显示```所显示的窗口可以在后台运行```而showDialog()是一个对话框窗口界面```执行结果以新窗口界面出现```不 ...

  5. 阿里历年经典Java面试题汇总

    Volatile的特征: A.禁止指令重排(有例外) B.可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存. 当读一个vol ...

  6. Linux修改串口irq

    /******************************************************************************* * Linux修改串口irq * 说明 ...

  7. 20155239 2016-2017-2 《Java程序设计》第8周学习总结

    教材学习内容总结 - NIO 在Java1.4之前的I/O系统中,提供的都是面向流的I/O系统,系统一次一个字节地处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,面向流的I/O速 ...

  8. 51Nod 1089:最长回文子串 V2(Manacher算法)

    1089 最长回文子串 V2(Manacher算法)  基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题  收藏  关注 回文串是指aba.abba.cccbccc.aaa ...

  9. python基于协程的网络库gevent、eventlet

    python网络库也有了基于协程的实现,比较著名的是 gevent.eventlet 它两之间的关系可以参照 Comparing gevent to eventlet, 本文主要简单介绍一下event ...

  10. html css 怎么使img和a标签在一个行内元素中间对齐

    答案是:#box ul.games li img{vertical-align: middle;} 这行很重要哦. <div id="box"> <div cla ...