mpi 的计时函数 和 C/C++ 的计时函数 有什么区别吗?
来源:互联网 发布:理财哪个软件好 编辑:程序博客网 时间:2024/05/02 04:28
MPI 中有
double MPI_Wtime(void) 取得当前时间, 计时的精度有 double MPI_Wtick(void) 取得
C/C++ time.h 有 clock_t clock(void) 取得当前时间, 计时的精度有 常数 CLOCKS_PER_SEC 定义。
对于使用 C 语言编程的人来说,二者都可以使用。在我的机器上 MPI_Wtick 说时间精度是 1e-6 秒,
CLOCKS_PER_SEC 是1E6, 看起来没有什么区别, 也许 MPI_Wtime 计时更准确些,因为在我的机器山
使用的time.h 的函数取得时间长度总是只有两位小数,而 MPI_Wtime 则有很多位小数。
使用 MPI函数计时的代码:
#include "mpi.h"
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int rank;
int size;
MPI_Init(0,0);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
double start , finish;
MPI_Barrier(MPI_COMM_WORLD);
start = MPI_Wtime();
for(double i =0; i < 10000; i+=0.01) {i=sin(cos(2.0))*i/(sin(cos(2.0)));};
finish = MPI_Wtime();
MPI_Barrier(MPI_COMM_WORLD);
if(rank==0){
cout<<"mpi的计时函数:Elapsed time is "<< finish-start <<" seconds"<<endl;
cout<<"时间精度是 "<<MPI_Wtick()<<" 秒钟"<<endl;
}
MPI_Finalize();
return 0;
}
使用 time.h 的函数来计时的代码:
#include "mpi.h"
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
int main(){
int rank;
int size;
MPI_Init(0,0);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
clock_t start , finish;
MPI_Barrier(MPI_COMM_WORLD);
start = clock();
for(double i =0; i < 10000; i+=0.01) {i=sin(cos(2.0))*i/(sin(cos(2.0)));};
finish = clock();
MPI_Barrier(MPI_COMM_WORLD);
if(rank==0){
cout<<"C语言的计时函数:Elapsed time is "<< double(finish-start)/CLOCKS_PER_SEC <<" seconds"<<endl;
cout<<"时间精度是 "<<1./CLOCKS_PER_SEC<<" 秒钟"<<endl;
}
MPI_Finalize();
return 0;
}
编译命令:
tlu:mpi$ mpicxx -O3 -o mpitime.exe mpitime.cpp
tlu:mpi$ mpicxx -O3 -o mpitime1.exe mpitime1.cpp
运行结果:
tlu:mpi$ mpirun -np 1 ./mpitime.exe
mpi的计时函数:Elapsed time is 0.0233588 seconds
时间精度是 1e-06 秒钟
tlu:mpi$ mpirun -np 1 ./mpitime1.exe
C语言的计时函数:Elapsed time is 0.02 seconds
时间精度是 1e-06 秒钟
C/C++ time.h 有 clock_t clock(void) 取得当前时间, 计时的精度有 常数 CLOCKS_PER_SEC 定义。
对于使用 C 语言编程的人来说,二者都可以使用。在我的机器上 MPI_Wtick 说时间精度是 1e-6 秒,
CLOCKS_PER_SEC 是1E6, 看起来没有什么区别, 也许 MPI_Wtime 计时更准确些,因为在我的机器山
使用的time.h 的函数取得时间长度总是只有两位小数,而 MPI_Wtime 则有很多位小数。
使用 MPI函数计时的代码:
#include "mpi.h"
#include <iostream>
#include <math.h>
using namespace std;
int main(){
int rank;
int size;
MPI_Init(0,0);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
double start , finish;
MPI_Barrier(MPI_COMM_WORLD);
start = MPI_Wtime();
for(double i =0; i < 10000; i+=0.01) {i=sin(cos(2.0))*i/(sin(cos(2.0)));};
finish = MPI_Wtime();
MPI_Barrier(MPI_COMM_WORLD);
if(rank==0){
cout<<"mpi的计时函数:Elapsed time is "<< finish-start <<" seconds"<<endl;
cout<<"时间精度是 "<<MPI_Wtick()<<" 秒钟"<<endl;
}
MPI_Finalize();
return 0;
}
使用 time.h 的函数来计时的代码:
#include "mpi.h"
#include <iostream>
#include <math.h>
#include <time.h>
using namespace std;
int main(){
int rank;
int size;
MPI_Init(0,0);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
clock_t start , finish;
MPI_Barrier(MPI_COMM_WORLD);
start = clock();
for(double i =0; i < 10000; i+=0.01) {i=sin(cos(2.0))*i/(sin(cos(2.0)));};
finish = clock();
MPI_Barrier(MPI_COMM_WORLD);
if(rank==0){
cout<<"C语言的计时函数:Elapsed time is "<< double(finish-start)/CLOCKS_PER_SEC <<" seconds"<<endl;
cout<<"时间精度是 "<<1./CLOCKS_PER_SEC<<" 秒钟"<<endl;
}
MPI_Finalize();
return 0;
}
编译命令:
tlu:mpi$ mpicxx -O3 -o mpitime.exe mpitime.cpp
tlu:mpi$ mpicxx -O3 -o mpitime1.exe mpitime1.cpp
运行结果:
tlu:mpi$ mpirun -np 1 ./mpitime.exe
mpi的计时函数:Elapsed time is 0.0233588 seconds
时间精度是 1e-06 秒钟
tlu:mpi$ mpirun -np 1 ./mpitime1.exe
C语言的计时函数:Elapsed time is 0.02 seconds
时间精度是 1e-06 秒钟
- mpi 的计时函数 和 C/C++ 的计时函数 有什么区别吗?
- C语言的计时函数
- C/C++计时函数的比较
- C语言计时函数
- 【c++】计时函数
- c计时函数
- C语言计时函数
- C/C++计时函数
- C语言计时函数
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- 【C/C++】计时函数比较
- Linux 抓取网页方式(curl+wget)
- 软件工程的总结
- bitmap解析
- SQL拾遗
- mini2440移植之yaffs2
- mpi 的计时函数 和 C/C++ 的计时函数 有什么区别吗?
- java学习1
- SQL Server 数据库基础编程
- 把二元查找树转变成排序的双向链表
- struts-config.xml配置文件使用说明(转自lanxin1020的博客)
- Struts2自定义标签使用说明(转自黑暗浪子)
- linux_mint14
- ubuntu编译安装配置java、tomcat、probe
- struts学习(框架概况)