大哥大姐 梆梆小弟 该一个简单的mpi程序 冰天雪地裤衩背心跪求帮忙

时间:2022-05-14 14:15:35
程序的功能是 用C++编程生成一个exe文件 用mpich调用该文件 可运行另一个exe文件(如我们电脑里的qq)
并行处理 就是用n个机器可以实现 同时每个机器各自运行该机器上的qq。
#include <iostream.h> 
#include <windows.h> 
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
int group_size;
int my_rank;
int p;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comn_size(MPI_COMN_WORLD,&group_size);
MPI_Comn_rank(MPI_COMN_WORLD,&my_rank);

int main(int argc,char* argv[]) 

my_rank=p;
for(my_rank=0;my_rank<p;my_rank++)
//电脑里qq的路径 一定要是安装的路径 不能是快捷方式的路径 还有就是双// 号
WinExec("C:\\Documents and Settings\\Administrator\\桌面\\qq.exe",SW_SHOW); 
return 0; 
MPI_Finalize();

}

7 个解决方案

#1


错误如下
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2065: 'argc' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2065: 'argv' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2501: 'MPI_Init' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2373: 'MPI_Init' : redefinition; different type modifiers
        c:\program files\mpich\sdk\include\mpi.h(448) : see declaration of 'MPI_Init'
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2065: 'MPI_COMN_WORLD' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2501: 'MPI_Comn_size' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2501: 'MPI_Comn_rank' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.

#2


友情帮顶

#3



#include <iostream.h>  
#include <windows.h>  
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
int group_size;
int my_rank;
int p;
MPI_Status status;
/*
你下面三个方法是打算做什么?只是声明还是还是已有的方法要使用?如果只是声明则需要后面的代码中进行实现,估计你是想用这3个已有的方法,但是这3个方法没写在任何一个方法体中,怎么能被执行到呢?比如,你应该把他们写在int main()方法体内才会被执行到,写在这里只是声明而已。
*/
MPI_Init(&argc,&argv);//这两个参数前面没定义,不能使用;同时这个方法的使用方式有问题,比如参数类型等等,建议去看看这个方法的实现代码
MPI_Comn_size(MPI_COMN_WORLD,&group_size);//第一个参数前面没定义;同时这个方法使用方式有问题
MPI_Comn_rank(MPI_COMN_WORLD,&my_rank););//第一个参数前面没定义;同时这个方法使用方式有问题

int main(int argc,char* argv[])  
{  
my_rank=p;
for(my_rank=0;my_rank<p;my_rank++)
//电脑里qq的路径 一定要是安装的路径 不能是快捷方式的路径 还有就是双// 号
WinExec("C:\\Documents and Settings\\Administrator\\桌面\\qq.exe",SW_SHOW);  
return 0;  
MPI_Finalize();

}

#4


MPI_Init(&argc,&argv);
MPI_Comn_size(MPI_COMN_WORLD,&group_size);
MPI_Comn_rank(MPI_COMN_WORLD,&my_rank);


这3个是并行算法中 应用到的 节点数groud_size和该节点名称my_rank
是前面的头文件mpi.h中用到的定义
这个是必须要做的定义

#5


引用 4 楼 kerendegaogao 的回复:
MPI_Init(&amp;argc,&amp;argv);
MPI_Comn_size(MPI_COMN_WORLD,&amp;group_size);
MPI_Comn_rank(MPI_COMN_WORLD,&amp;my_rank);


这3个是并行算法中 应用到的 节点数groud_size和该节点名称my_rank
是前面的头文件mpi.h中用到的定义
这个是必须要做的……


可是从你的错误报告上来看,很明显编译器把它们当成了definition,而mpi.h里又有同样的definition,所以各种各样的错误就出来了。而且所使用的参数编译器不认识。
小生不才,不能说的很透彻,等待高手,呵呵。

#6


mpi.h只是一个头文件 像group_size和my_rank还是要定义一下的
这个在所有并行算法中都有写出

WinExec("C:\\Documents and Settings\\Administrator\\桌面\\qq.exe",SW_SHOW);
这个函数的功能是运行一个exe文件

我这个程序在一台电脑已可以成功运行 
我贴出的是我并行系统时 出现了问题 

#7


没有修改project里的link,好像在后面要加一些东西。在tool里也要改一点东西

#1


错误如下
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2065: 'argc' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2065: 'argv' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2501: 'MPI_Init' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2373: 'MPI_Init' : redefinition; different type modifiers
        c:\program files\mpich\sdk\include\mpi.h(448) : see declaration of 'MPI_Init'
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(10) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2065: 'MPI_COMN_WORLD' : undeclared identifier
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2501: 'MPI_Comn_size' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(11) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2501: 'MPI_Comn_rank' : missing storage-class or type specifiers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2078: too many initializers
C:\Documents and Settings\Administrator\桌面\12\aaa.cpp(12) : error C2440: 'initializing' : cannot convert from 'int *' to 'int'
        This conversion requires a reinterpret_cast, a C-style cast or function-style cast
执行 cl.exe 时出错.

#2


友情帮顶

#3



#include <iostream.h>  
#include <windows.h>  
#include <mpi.h>
#include <stdio.h>
#include <stdlib.h>
int group_size;
int my_rank;
int p;
MPI_Status status;
/*
你下面三个方法是打算做什么?只是声明还是还是已有的方法要使用?如果只是声明则需要后面的代码中进行实现,估计你是想用这3个已有的方法,但是这3个方法没写在任何一个方法体中,怎么能被执行到呢?比如,你应该把他们写在int main()方法体内才会被执行到,写在这里只是声明而已。
*/
MPI_Init(&argc,&argv);//这两个参数前面没定义,不能使用;同时这个方法的使用方式有问题,比如参数类型等等,建议去看看这个方法的实现代码
MPI_Comn_size(MPI_COMN_WORLD,&group_size);//第一个参数前面没定义;同时这个方法使用方式有问题
MPI_Comn_rank(MPI_COMN_WORLD,&my_rank););//第一个参数前面没定义;同时这个方法使用方式有问题

int main(int argc,char* argv[])  
{  
my_rank=p;
for(my_rank=0;my_rank<p;my_rank++)
//电脑里qq的路径 一定要是安装的路径 不能是快捷方式的路径 还有就是双// 号
WinExec("C:\\Documents and Settings\\Administrator\\桌面\\qq.exe",SW_SHOW);  
return 0;  
MPI_Finalize();

}

#4


MPI_Init(&argc,&argv);
MPI_Comn_size(MPI_COMN_WORLD,&group_size);
MPI_Comn_rank(MPI_COMN_WORLD,&my_rank);


这3个是并行算法中 应用到的 节点数groud_size和该节点名称my_rank
是前面的头文件mpi.h中用到的定义
这个是必须要做的定义

#5


引用 4 楼 kerendegaogao 的回复:
MPI_Init(&amp;argc,&amp;argv);
MPI_Comn_size(MPI_COMN_WORLD,&amp;group_size);
MPI_Comn_rank(MPI_COMN_WORLD,&amp;my_rank);


这3个是并行算法中 应用到的 节点数groud_size和该节点名称my_rank
是前面的头文件mpi.h中用到的定义
这个是必须要做的……


可是从你的错误报告上来看,很明显编译器把它们当成了definition,而mpi.h里又有同样的definition,所以各种各样的错误就出来了。而且所使用的参数编译器不认识。
小生不才,不能说的很透彻,等待高手,呵呵。

#6


mpi.h只是一个头文件 像group_size和my_rank还是要定义一下的
这个在所有并行算法中都有写出

WinExec("C:\\Documents and Settings\\Administrator\\桌面\\qq.exe",SW_SHOW);
这个函数的功能是运行一个exe文件

我这个程序在一台电脑已可以成功运行 
我贴出的是我并行系统时 出现了问题 

#7


没有修改project里的link,好像在后面要加一些东西。在tool里也要改一点东西