MS-MPI 的使用

MPI在windows上的扯淡

MPI的实现一般使用MPICH与OpenMPI,这两个库在12年的版本就已经停止了对windows的更新,不支持MPI的新特性(也不知道有没有bug方面的问题),配置的时候教程较少,配置也出现了一些不好解决的问题。
吐槽一下,MPICH官方不对Windows更新的原因是“开发人员精力不足”,也许在windows上使用MPI的人太少吧。。

MS-MPI (Microsoft MPI ) 现在更新到V7测试版 (2015年),微软基于MPICH向windows上的移植,实现了很多新的 MPI特性,主要用在 HPC Pack。使用全套系统需要一个windows server系统的电脑作为头结点,实现了完整的管理功能。不过MS-MPI也可以单独使用(没有界面)。

MS-MPI环境配置

微软官方教程多为HPC server的, 东西太多现在懒得配置。 MS-MPI的使用教程比较少,各种被坑之后得出下文:

  • 下载安装包并安装
    https://www.microsoft.com/en-us/download/details.aspx?id=47259 这是MS-MPI v6安装包,现在v7的测试版已出。
  • 安装完成后去SDK目录,找到include 与 lib 文件夹。
  • 在visual studio中新建C++ win32 空项目,将项目编译改为x64(我的是64位 win7)

    右键项目 -- 属性 -- vc++ 目录中 包含目录 添加 include 文件夹路径,库目录 中添加 lib 文件夹路径。
    属性 -- 链接器 -- 输入 -- 附加依赖项中 添加 msmpi.lib;msmpifec.lib;msmpifmc.lib;

  • 新建cpp文件,代码如下
  1. #include "mpi.h"
  2. #include <iostream>
  3. int main(int argc, char* argv[])
  4. {
  5. int rank;
  6. int size;
  7. MPI_Init(0,0);//MPI环境初始化
  8. MPI_Comm_rank(MPI_COMM_WORLD, &rank); //获取当前进程号
  9. MPI_Comm_size(MPI_COMM_WORLD, &size); //获取进程总数
  10. std::cout<<"Hello world from process "<<rank<<" of "<<size<<std::endl;
  11. MPI_Finalize();
  12. return 0;
  13. }
  • 将编译得到的 exe文件放在安装的MS-MPI的bin目录下(和sdk不在一个安装包)
  • 按住shift键在bin文件夹空白处右键单击,选择命令行窗口
  • 输入 smpd -d 运行MPI进程
  • 输入 mpiexec -n 4 test.exe 得到运行结果如下

    1. Hello world from process 1 of 4
    2. Hello world from process 0 of 4
    3. Hello world from process 3 of 4
    4. Hello world from process 2 of 4

来自为知笔记(Wiz)

时间: 2024-12-30 08:15:01

MS-MPI 的使用的相关文章

【MPI学习3】MPI并行程序设计模式:不同通信模式MPI并行程序的设计

学习了MPI四种通信模式 及其函数用法: (1)标准通信模式:MPI_SEND (2)缓存通信模式:MPI_BSEND (3)同步通信模式:MPI_SSEND (4)就绪通信模式:MPI_RSEND 四种通信模式的区别都在消息发送端,而消息接收端的操作都是MPI_RECV. 1.标准通信模式 原理图如下 标准通信模式由MPI决定是否用缓存. 如果MPI决定缓存将要发出的数据:发送操作不管接受操作是否执行,都可以进行:而且缓存结束后发送操作就可以返回,不需要等待接受操作收到数据 如果MPI决定不缓

MS SQL SERVER: msdb.dbo.MSdatatype_mappings &amp; msdb.dbo.sysdatatypemappings

--SQL转Oracle/DB2的类型对应关系SELECT *FROM msdb.dbo.MSdatatype_mappings; --MS SQL SERVER更详细得显示了ORACLE/DB2各个数据库系统的类型对应SELECT *FROM msdb.dbo.sysdatatypemappings; dbms_name sql_type dest_type dest_prec dest_create_params dest_nullable DB2 bigint DECIMAL 19 3 t

JAVA 仿 MS word 字数统计

// TODO caihao 2016-11-06 字数统计 工具类 /** * 统计字数,参照MS office word 2007规则 * @param context 文本内容 * @return 字数 */ public int getMSWordsCount(String context){ int words_count = 0; //中文单词 String cn_words = context.replaceAll("[^(\\u4e00-\\u9fa5,.<>?:''

Floyd-Warshall算法及其并行化实现(基于MPI)

Floyd-Warshall算法(或称Floyd算法)是用于寻找加权图中非固定起止点间最短路径的经典算法,它是基于动态规划思想设计的.当前我们所认识的Floyd算法之形式由计算机科学家(同时也是图灵奖得主) Robert Floyd 于 1962 年提出并发表.但在此之前,Bernard Roy(1959)和 Stephen Warshall(1962)也分别独立地提出了类似的算法.本文将主要讨论基于MPI的并行化Floyd算法实现. 欢迎关注白马负金羁的博客 http://blog.csdn.

2016-03-09-阅读笔记: dump text + report on MS ResNet + Deep feeling about DL

1, 2014年的短文,今日看来无趣: link = here 2,  关于ultra-deep network,a newsletter to KaiMing He's 152 layers ResNet on ImageNet LINK = here 之前理解就是在imagenet上的分类准确率事最高的,但是现在看到新的描述: “Microsoft's new neural network is as good as the other networks at spotting what's

【MPI学习1】简单MPI程序示例

有了apue的基础,再看mpi程序多进程通信就稍微容易了一些,以下几个简单程序来自都志辉老师的那本MPI的书的第七章. 现在ubuntu上配置了一下mpich的环境: http://www.cnblogs.com/liyanwei/archive/2010/04/26/1721142.html 注意,为了编译运行方便,在~/.bashrc文件中添加mpi的两个环境变量 设置完之后注意执行source ~/.bashrc命令 程序1 计时功能 主要用到的MPI_Wtime()这个函数 1 #inc

有了OpenMP,MPI,为什么还要MapReduce? (转载)

OpenMP和MPI是并行编程的两个手段,对比如下: OpenMP:线程级(并行粒度):共享存储:隐式(数据分配方式):可扩展性差: MPI:进程级:分布式存储:显式:可扩展性好. OpenMP采用共享存储,意味着它只适应于SMP,DSM机器,不适合于集群.MPI虽适合于各种机器,但它的编程模型复杂: 需要分析及划分应用程序问题,并将问题映射到分布式进程集合: 需要解决通信延迟大和负载不平衡两个主要问题: 调试MPI程序麻烦: MPI程序可靠性差,一个进程出问题,整个程序将错误: 其中第2个问题

Java 连接MS Access数据库

java连接MS Access的两种方式: 1.JDBC-ODBC Java连接Access可以使用MS自带的管理工具-->数据源(ODBC)设置建立连接,这样就不需要导入jar.但是,如此一来程序部署的每个机器上都要进行设置不方面.所以现在不会使用啦. 2.JDBC java也可以和连接其他数据库一样连接MS Access,导入数据库相应的jar包,进行连接. java Access JDBC jar包:Access_JDBC30.jar 具体连接,参考下面代码: 复制代码 1 try { 2

使用 PHP 框架 Yii 访问 MS SQL 的尝试

今天尝试在 Wamp 环境下访问 MS SQL 数据库,有以下心得.使用 PHP 5.3 + pdo_odbc + Yii 1.1 框架,以下两个代码段可以成功. 1.直接使用 PDO 方式,可以获取数据. 1 $sql = "SELECT TOP 10 [NAME],[STCD],[TM],[PA] FROM AT_PA"; 2 $cnx = new PDO("odbc:Driver={SQL Server};Server=10.5.1.47;Database=mydb;&

php5.3.x连接MS SQL server2008

开篇 因为毕设老师需求的原因,虚拟旅游网站要求的数据库必须使用MS SQL server. 我最擅长的web编程语言是PHP,但是在PHP中链接MS SQL server是一件非常麻烦的事,我个人分析造成这种麻烦的原因:是因为使用PHP的一大优点就是免费,然而MS SQL server虽然图形化界面操作起来简单,但是其昂贵的授权费让人望而却步:加之MySQL不俗的性能和强大的社区支持,使得真正企业环境里,使用PHP + MS SQL server的人越来越少. 其实纵观网上的文章,之所以有人选择