参考书籍为 高性能计算之并行编程技术—— MPI并行程序设计.pdf
1. Windows 8.1 + Visual Studio 2013 安装 MPICH2
安装时从 官方网站 这里下载。其中分为 32bit
和 64bit
版本,请谨慎安装:在用 Visual Studio 2013 编译的过程中,如果 Debugger
选的是生成 32bit
程序,那必须调用 32bit
的 lib
,也就是说,装 64bit
的 MPICH2 是不可以的,同理 64bit
也不能用 32bit
的 lib
。但是!先不要急着双击或者管理员安装,如果想快进,可以参看第 3 点。
2. 开始编译
这其实是我学习 VS 时遇到的问题。我是第一次碰这么大的 IDE,以前在 Codeblocks 或者 Dev-cpp 里的经验完全没用,而在 MPICH2 的 README
中又注明了必须用 VS 来做,原因是需要 include
和 lib
(当然命令行也做,如果探索一下的话,前述两个 IDE 应该也可以,但是我比较懒嘛),这里不仅要在 Project 里添加路径,还需要在链接里链接上对应的 mpi.lib
,这个链接相当于对 mpi.h
的具体实现,所以第 1 点中提到的版本问题就出在这里。
3. 执行-1
终于把程序编译通过了,生成 exe
后执行也很爽啊,但是这离并行还差很远。首先我们需要用 mpiexec
来调用执行并行模块,但是我的 mpiexec
一直出错。然后我查到了这篇文章:初探 mpich2 + vc6.0包 + Win7 + 64位单机平台 命令行运行。说重点:第 1 步的安装步骤是不可行的。正确的安装步骤如下:
- Open an administrator command prompt (Right-click on the command prompt icon and select "Run as administrator")
- From the admin command prompt use the msiexec utility to uninstall MPICH2 (eg: Type "msiexec /x mpich2-1.2.1p1-win-ia32.msi" to uninstall MPICH2 using the mpich2-1.2.1p1-win-ia32.msi installer)
- From the admin command prompt use the msiexec utility to install MPICH2 (eg: Type "msiexec /i mpich2-1.2.1p1-win-ia32.msi" to install MPICH2 using the mpich2-1.2.1p1-win-ia32.msi installer)
- After the installation try to run a non-MPI program (mpiexec -n 2 hostname)
4. 虚拟机
既然是并行算法,没几台计算机可怎么搞?总不能老玩 -n
的本机并行吧?这里我用了 VMware Workstation。安装的是 Windows 8.1,有点小坑。
- 序列号
默认安装的话,VM 会让你直接调用安装 iso,然后中间会需要输入序列号,这里可以不输的,千万不要输,Windows 8.1 没有可用的序列号,而且进去后自己激活即可,这一步跳过。 - 主机名,用户名,密码
由于mpiregister
需要有密码的管理员账号,所以最初设置的管理员账号需要有密码。然后 VM 可以克隆虚拟机(当然直接复制后打开应该也可以,我怕有坑,就慢慢克隆的),所以直接把装好了 MPICH2 的虚拟机克隆后打开即可。由于克隆是完全复制状态,所以主机名是一样的,而mpiexec
不能识别相同主机名(返回MPI_Init fatal error
),所以需要自己修改主机名,如 node1,node2 等。
5. 执行-2
搞定了所有的东西后我们就可以直接用 mpiexec -hosts m node1 node2 ... nodem program
来执行了。这里由于虚拟机是默认在同一个 Workgroup 里的,所以输入主机名和 ip 是等价的。
网友评论