最近要做一个程序引擎优化的报告,要达到1500万的数据在1秒内处理完成。先是测试了OpenMP,效果很不错。实现也简单,i7处理器能把处理时间缩短到三分之一左右,基本达到要求。
然后作为比较,探讨了多台电脑并性处理的可能性。发现效率也很不错,似乎比自己用OpenMP实现要好。而且通信的时间基本可以忽略,对处理时间没有什么影响,很不错,以后可以又多了一个思路。
实现结果如下。
两台电脑传送400byte数据的时间
C:/public>mpiexec -hosts 2 kisyu 1 127.0.0.1 1 P2PTest
wall clock time = 0.000011
C:/public>mpiexec -hosts 2 kisyu 1 127.0.0.1 1 P2PTest
wall clock time = 0.000011
C:/public>mpiexec -hosts 2 kisyu 1 127.0.0.1 1 P2PTest
wall clock time = 0.000011
运行同时例子里cpi.exe(计算圆周率)
(cpi.exe intervals:1000000000)
线程数 1 2 4 6 8
时间(本地) 6.244453 3.231248 2.094743 1.862757 1.721809
时间(远程) 6.255718 3.229636 2.262906 1.832473 1.721826
两台 3.92263