MPI 计时器函数 MPI_Wtime()
▶ 计时器函数 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()的更多相关文章
- MPI聚合函数
MPI聚合通信 MPI_Barrier int MPI_Barrier( MPI_Comm comm ); 所有在该通道的函数都执行完后,才开始其他步骤. 0进程在状态T1调用MPI_Barrier函 ...
- MPI初学-安装及OpenMPI函数说明
一.Mac下OpenMPI的安装 所用电脑:MacBook Pro,OSX 10.11.2 从openmpi官网下载相应版本:OpenMPI 1.8下载 解压文件 双击解压或者tar zxvf ope ...
- MPI编程简单介绍
第三章MPI编程 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植.一般来讲,并行机不一定在各处理器之间共享存储 ...
- MPI编程简述
第三章MPI计划 3.1 MPI简单介绍 多线程是一种便捷的模型,当中每一个线程都能够訪问其他线程的存储空间.因此,这样的模型仅仅能在共享存储系统之间移植. 一般来讲,并行机不一定在各处理器之间共享存 ...
- MPI编程简介[转]
原文地址http://blog.csdn.net/qinggebuyao/article/details/8059300 3.1 MPI简介 多线程是一种便捷的模型,其中每个线程都可以访问其它线程的存 ...
- MPI小例子
MPI示例 MPI时间函数测试 #include<stdio.h> #include<mpi.h> #include<stdlib.h> #include<t ...
- MPI 学习笔记
目录 MPI学习笔记 MPI准备 概述 前置知识补充 环境部署 1.修改IP及主机名 2.关闭防火墙 3.实现免密码SSH登录 4.配置MPI运行环境 5.测试 程序的执行 编译语句 运行语句 MPI ...
- MPI简谈
MPI简谈 MPI是分布式内存系统,区别于OpenMP和Pthreads的共享内存系统.MPI是一种基于消息传递的并行编程技术,是如今最为广泛的并行程序开发方法. MPI前世今生 MPI(Messag ...
- (转)C#精确时间计时器
原文地址:http://blog.sina.com.cn/s/blog_699d3f1b01012vgb.html 1 调用WIN API中的GetTickCount [DllImport(" ...
随机推荐
- spring boot: 热部署spring-boot-devtools
spring boot: 热部署spring-boot-devtools 1引入spring-boot-devtools依赖包 <!-- spring boot devtools 热部署 --& ...
- Autofac Mvc注入
private void DependencyInjection() { var builder = new ContainerBuilder(); builder.RegisterControlle ...
- EF大数据批量添加性能问题
前几天做一个批量发消息的功能,因为要向消息表中批量写入数据,用的EF框架的插入方法:不用不知道,一用吓一跳:就10000条数据就耗时好几分钟,对应追求用户体验的我来说这是极不能容忍的,后来改为拼接SQ ...
- linux三尖刀
序 我们都知道,一个可执行程序的基本的生命过程是如此的: (编辑)源文件--->(编译)目标文件--->(链接)可执行文件--->(调试排错)稳定执行 所以,在这个过程中,我们很容易 ...
- CentOS下安装docker,docker-compose
1.查看系统发行版本: lsb_release -a 2.安装docker:Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行 ...
- jQuery实现鼠标经过图片预览大图效果
jQuery:是一种客户端的技术,它的诞生的理由是:write less,do more(写更少的代码,做更多的事情). 因此,我们可以借助jQuery来实现一些很酷炫的效果,相比于javaScrip ...
- MIPS 汇编指令学习
MIPS 寄存器 MIPS comes with 32 general purpose registers named $0. . . $31Registers also have symbolic ...
- Winform开发之ADO.NET对象Connection、Command、DataReader、DataAdapter、DataSet和DataTable简介
ADO.NET技术主要包括Connection.Command.DataReader.DataAdapter.DataSet和DataTable等6个对象,下面对这6个对象进行简单的介绍:(1)Con ...
- [CF321E]Ciel and Gondolas&&[BZOJ5311]贞鱼
codeforces bzoj description 有\(n\)个人要坐\(k\)辆车.如果第\(i\)个人和第\(j\)个人同坐一辆车,就会产生\(w_{i,j}\)的代价. 求最小化代价.\( ...
- ppt修改默认字体
首先,在文本框中输入文字,选中文字设置为自己需要的效果,比如文字字体设置为微软雅黑,大小设置为24,颜色设置为水绿色. 鼠标移动到到输入文本框的边上,此时鼠标形状会变成十字形,单击右键,在弹出 ...