带UI的MPI程序设计(Win/UNIX)

1854阅读 0评论2011-05-23 天海一线
分类:云计算

软件环境:
Windows XP SP3:【qtsdk 1.1,MSVC2008,MPICH2(mpich2-1.3.2p1-win-ia32.msi)】
Linux:【CentOS 6.5,qtsdk 1.1,MPICH2(mpich2-1.2.1p1-1.el5.i386.rpm,mpich2-devel-1.2.1p1-1.el5.i386.rpm,mpich2-debuginfo-1.2.1p1-1.el5.i386.rpm)】
 
以xp下为例:
 
(1)使用QtCreater建立一个简单的GUI程序。
选择Qt 4.7.3 for Desktop - MSVC2008 (Qt SDK)环境;
(2)添加MPICH2支持。
工程文件pro里添加:
  1. INCLUDEPATH += $$quote(C:\Progra~1\MPICH2\include)
  2. LIBS += -L$$quote(C:\Progra~1\MPICH2\lib) -lcxx -lmpi
main.cpp修改为:
  1. #include <QtGui/QApplication>
  2. #include "mainwindow.h"

  3. #include <mpi.h>
  4. #include <iostream>

  5. using namespace std;

  6. int myId;
  7. int noProcs;
  8. char procName[MPI_MAX_PROCESSOR_NAME];
  9. int nameLen;

  10. int main(int argc, char *argv[])
  11. {
  12.     int ret = 0;
  13.     MPI_Init(&argc, &argv);
  14.     MPI_Comm_rank(MPI_COMM_WORLD, &myId);
  15.     MPI_Comm_size(MPI_COMM_WORLD, &noProcs);
  16.     MPI_Get_processor_name(procName, &nameLen);

  17.     MPI_Barrier(MPI_COMM_WORLD);

  18.     if(myId==0)
  19.     {
  20.         cout<<"I am "<<myId<<endl;
  21.         QApplication a(argc, argv);
  22.         MainWindow w;
  23.         w.show();
  24.         ret = a.exec();
  25.     }
  26.     else
  27.     {
  28.         cout<<"I am "<<myId<<endl;
  29.     }

  30.     MPI_Barrier(MPI_COMM_WORLD);
  31.     MPI_Finalize();

  32.     return ret;
  33. }
(3)编译运行项目。直接编译运行会出现普通的GUI界面,需要设置使用mpiexec运行;
在运行设置里添加运行配置:
执行档:C:\Program Files\MPICH2\bin\mpiexec.exe
参数:-n 5 -localroot QtMPI.exe
工作目录:$BUILDDIR\Debug
 
注意:红色字体标出的-localroot在windows下面必须,负责不显示gui,在linux下面不需要。
上一篇:使用dsp builder进行fpga上的dsp开发
下一篇:wchar_t问题