多核编程提高程序效率的试验(OpenMP和MPICH2)
来源:互联网 发布:淘宝触屏版手机版 编辑:程序博客网 时间:2024/05/17 03:17
最近要做一个程序引擎优化的报告,要达到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.922634 1.588577 1.639943 1.145696 0.986242
这次试验用的MPICH2是与MPI-2相对应的MPICH实现版本,包含了MPI-2相对于MPI-1扩充后的一些功能,比如动态任务管理,并行I/O等。当前最新版本是MPICH2-1.3.2p1
的安装与配置
安装MPICH2 for Microsoft Windows 对系统有如下要求:
1. Windows 7/2003/XP/ 的Professional 或Server 版(不支持Windows 95/98)
2. 所有主机必须能够建立TCP/IP 连接
3. MPICH支持的编译器有:MS VC++ 6.x,MS VC++.NET, Compaq Visual Fortran 6.x,Intel Fortran,gcc,以及g77。安装MPICH,必须以管理员的身份登录。
本次实验使用的是MPICH2 for Microoft Windows 版本是1.3.2p1 ,
下载后直接运行,安装即可。下载地址是:http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
分为32位和64位,要注意。以管理员的身份登录每台主机,在所有主机上建立一个同样的有管理权限的账户(当然也可以每个机器使用不同的用户名和账户,然后建立一个配置文件,使用命令行的方式运行程序),然后,运行下载的安装文件,将MPICH 安装到每台主机上。安装后会添加一个“MPICH2 Process Manager, Argonne National Lab”的服务,开机时自动运行。并且打开“任务管理器”中的“进程”选项卡,查看会有一个smpd.exe 的进程。
添加 MPICH2 路径到Windows,以便后面可以在任何路径下使用mpiexec:
1. 右击 “My Computer” and 点击 properties.
2. 选择 Advanced 标签.
3. 选择 Environment Variables 按钮.
4. 在”System Variables”下选中 “path”变量并且单击edit. 添加 “C:/Program Files/MPICH2/bin” 到列表的末尾, 注意要将它与前一个路径用分号隔开.
安装好MPICH2 之后还必须对每台计算机进行注册和配置才能使用。其中注册必须每台计算机都要进行,配置只要在主控的计算机执行就行了。注册的目的是,将先前在每台计算机上申请的账号与密码注册到MPICH2 中去,这样MPICH2 才能在网络环境中访问每台主机。配置方法:运行“mpich2/bin目录下的wmpiregister.exe” ,
程序的设置很简单,只要在Account中输入你当前登录Windows所使用的用户名,注意必须是管理员权限.在password中输入该用户名对应的密码即可。MPICH2不能使用没有密码的用户,如果当前用户没有密码,则应该为其创建一个,然后再运行wmpiregister进行配置。输入完成后,单击Register进行注册即可。显示Password encrypted into the Registry,即表示注册成功。点击Register按钮,则上面的信息将写入硬盘,否则保存在内存中,再重新启动之后就不存在了。
为了让程序在许多主机上执行,而不需建立配置文件来给出相应的各个主机的信息,主控机必须知道当前可用的主机的信息。这时就需要运行MPICH2的配置程序来进行配置了。
MPICH2提供的配置程序是一个图形界面的程序,可以从“开始->程序->MPICH2->Wmpiconfig.exe”启动。
在Domain下拉菜单中选择当前工作组.点击Get Hosts,可以在下面看到工作组中所有计算机.点击Scan for Version将搜索安装了MPICH2的主机.安装成功的主机将用绿色显示其名称及版本.没有安装的将以灰色显示.
需要注意的事项
1. MPICH2 windows版本需要至少DotNet frameworks 1.1,所以要先下载安装DotNet frameworks1.1或2.0。建议安装Visual Studio2005,它自带Dotnet frameworks2.0。
2. 假设MPICH2安装在%MPICH2ROOT%目录,下面会有include, lib, bin, examples, jumpshot。将lib和include加入到VC的对应的目录中。examples下是一个例子程序cpi,有c, c++,fortun的源代码。配置时可以使用这个例子进行测试。
3. MPICH2会创建一个服务MPICH2 Process Manager, Argonne National Lab,提供服务的镜像是%MPICH2ROOT%/bin/smpd。这个程序是MPICH2的进程管理器。
4. MPICH2还需要一个帐号来运行。假设创建本地帐号mpiaccount,注意所有参加集群的机器的运行帐号最好一致。
5.如果连接不上本机或某个节点,可以这台电脑上命令行运行“smpd -uninstall”卸载服务,然后运行“smpd -install -phrase behappy”重新安装服务。
- 多核编程提高程序效率的试验(OpenMP和MPICH2)
- OpenMP多核编程的配置与测试
- 发挥多核 CPU 的优势,提高编译效率(转)
- 多核处理器下提高make的效率
- 多核机器上提高make的效率
- OpenMP: OpenMP多核编程配置与测试
- OpenMP: OpenMP多核编程配置与测试
- OpenMP程序 for 循环并行的效率
- 提高程序的效率
- OpenMP: 多核编程文章汇总
- 多核并行编程之OpenMP
- OpenMP多核并行化编程
- 多核编程学习笔记之OpenMP(一)
- 关于IOS下多核编程问题OpenMp(高分)
- 如何提高程序的效率(一)
- MPICH2程序的调试
- 提高PHP程序效率的编程经验五十条
- 《高质量C++编程指南》如何提高程序的效率
- C++xml文件操作 CMarkup学习方法说明
- Jqueryalert和message、confirm的个性化实现
- 关于宏
- zoj 2864 Catch the thief
- 如何让TCC89x支持480x272的分辨率
- 多核编程提高程序效率的试验(OpenMP和MPICH2)
- WCF深入学习_并发管理(一)
- 如何将Web应用打包成.war文件?
- java 把数字转换为中文读法 例如:123->一百二十三
- asp.net 网站防攻击 安全
- spring annotation and cache config
- adb工具 手工操作android模拟器上的数据库
- java中ant工具打可以运行jar包实例
- OllyDbg完全教程