历数学习 MPICH2 遇到的坑-1

参考书籍为 高性能计算之并行编程技术—— MPI并行程序设计.pdf

1. Windows 8.1 + Visual Studio 2013 安装 MPICH2

安装时从 官方网站 这里下载。其中分为 32bit64bit 版本,请谨慎安装:在用 Visual Studio 2013 编译的过程中,如果 Debugger 选的是生成 32bit 程序,那必须调用 32bitlib,也就是说,装 64bit 的 MPICH2 是不可以的,同理 64bit 也不能用 32bitlib。但是!先不要急着双击或者管理员安装,如果想快进,可以参看第 3 点。

2. 开始编译

这其实是我学习 VS 时遇到的问题。我是第一次碰这么大的 IDE,以前在 Codeblocks 或者 Dev-cpp 里的经验完全没用,而在 MPICH2 的 README 中又注明了必须用 VS 来做,原因是需要 includelib(当然命令行也做,如果探索一下的话,前述两个 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,有点小坑。

  1. 序列号
    默认安装的话,VM 会让你直接调用安装 iso,然后中间会需要输入序列号,这里可以不输的,千万不要输,Windows 8.1 没有可用的序列号,而且进去后自己激活即可,这一步跳过。
  2. 主机名,用户名,密码
    由于 mpiregister 需要有密码的管理员账号,所以最初设置的管理员账号需要有密码。然后 VM 可以克隆虚拟机(当然直接复制后打开应该也可以,我怕有坑,就慢慢克隆的),所以直接把装好了 MPICH2 的虚拟机克隆后打开即可。由于克隆是完全复制状态,所以主机名是一样的,而 mpiexec 不能识别相同主机名(返回 MPI_Init fatal error),所以需要自己修改主机名,如 node1,node2 等。

5. 执行-2

搞定了所有的东西后我们就可以直接用 mpiexec -hosts m node1 node2 ... nodem program 来执行了。这里由于虚拟机是默认在同一个 Workgroup 里的,所以输入主机名和 ip 是等价的。

你可能感兴趣的:(历数学习 MPICH2 遇到的坑-1)