C 在没有输出的情况下运行程序

C 在没有输出的情况下运行程序,c,mpi,openmpi,C,Mpi,Openmpi,我正在做mpi作业 我的程序是让用户输入数据列表,我们计算程序在数据库(.csv)中搜索数据所需的时间 我编写的顺序程序运行良好。它可以允许用户输入,然后在csv文件中搜索用户输入,并返回所需的时间 但是当我将mpi应用到程序中时,它可以使用mpicc进行编译。当我用mpirun运行程序时,它什么也不显示。有人能帮我看看发生了什么事吗? 这是.csv文件中的示例数据 =================================================== #include "mpi

我正在做mpi作业

我的程序是让用户输入数据列表,我们计算程序在数据库(.csv)中搜索数据所需的时间

我编写的顺序程序运行良好。它可以允许用户输入,然后在csv文件中搜索用户输入,并返回所需的时间

但是当我将mpi应用到程序中时,它可以使用mpicc进行编译。当我用mpirun运行程序时,它什么也不显示。有人能帮我看看发生了什么事吗? 这是.csv文件中的示例数据

===================================================

#include "mpi.h" 
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>     //for string operations : strcpy & strtok
#include <time.h> 

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

int n, myid, numprocs; 
MPI_Init(&argc,&argv); 
MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
MPI_Comm_rank(MPI_COMM_WORLD,&myid); 

struct
{
    char managerID[50];
    char yearID[50];
    char teamID[10];
    char lgID[3];
    char inseason[7];
    char G[50];
    char W[50];
    char L[10];
    char rank[3];
    char plyrMgr[7];
}Managers[5000];

time_t start, end;      //variable used for compute time.

//double diff;
int choice;

int dataSize=0;
FILE *fp;
char buf[99999];        //max total array size
int i = 0, j;
fp=fopen("Managers.csv","r");

//ignore the commna delimiters, copy the value into each field's arrays.
 while( fgets(buf,sizeof(buf),fp) != NULL)
{
    strcpy(Managers[i].managerID, strtok(buf,","));
    strcpy(Managers[i].yearID, strtok(NULL,","));
    strcpy(Managers[i].teamID, strtok(NULL,","));
    strcpy(Managers[i].lgID, strtok(NULL,","));
    strcpy(Managers[i].inseason, strtok(NULL,","));
    strcpy(Managers[i].G, strtok(NULL,","));
    strcpy(Managers[i].W, strtok(NULL,","));
    strcpy(Managers[i].L, strtok(NULL,","));
    strcpy(Managers[i].rank, strtok(NULL,","));
    strcpy(Managers[i].plyrMgr, strtok(NULL,","));
    ++i;        //increment array
    dataSize++;     //counter for data size
}

char *s;
char str[5];
if(myid ==0){
    printf("\n\n Please input the data to be retrieved\n");
    printf(" Note : No space is allowed...\n");
    printf(" Sample Query : abc,123,def,321\n");
    printf(" Input =>");
    scanf ("%s", str);
}
MPI_Bcast(str, 1, MPI_CHAR, 0, MPI_COMM_WORLD); // broadcast the information out

 start = clock(); // start the time


s = strtok (str, ",");
printf("\n");

//print header field
printf(" ManagerID");
printf("       YearID");
printf("      TeamID");
printf("      LgID");
printf("      InSeason");
printf("    Game");
printf("        Win");
printf("       Lose");
printf("        Rank");
printf("     PlyrMgr\n\n");

//print all the data
 while (s != NULL)
{
    int k;

    for (k =1; k<=dataSize; k++)
    {
        if(strcmp(s,Managers[k].managerID) == 0)
        {
            printf(" %10s",Managers[k].managerID);
            printf(" %10s",Managers[k].yearID);
            printf(" %10s",Managers[k].teamID);
            printf(" %10s",Managers[k].lgID);
            printf(" %10s",Managers[k].inseason);
            printf(" %10s",Managers[k].G);
            printf(" %10s",Managers[k].W);
            printf(" %10s",Managers[k].L);
            printf(" %10s",Managers[k].rank);
            printf(" %10s",Managers[k].plyrMgr);
        }
    }
    printf("\n");
    s = strtok (NULL, ",");
}

end = clock(); // end time
double diff = (((double)end - (double)start)/1000000.0F) * 1000;

if(myid==0){

    printf(" Time Taken : %.5f seconds \n", diff);
}


MPI_Finalize(); 

}
managerID,yearID,teamID,lgID,inseason,G,W,L,rank,plyrMgr

wrighha01m,1871,BS1,NA,1,31,20,10,3,Y

woodji01m,1871,CH1,NA,1,28,19,9,2,Y

巴伯奇01M,1871,CL1,NA,1,29,10,19,8,Y

=======================================

#include "mpi.h" 
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>     //for string operations : strcpy & strtok
#include <time.h> 

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

int n, myid, numprocs; 
MPI_Init(&argc,&argv); 
MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
MPI_Comm_rank(MPI_COMM_WORLD,&myid); 

struct
{
    char managerID[50];
    char yearID[50];
    char teamID[10];
    char lgID[3];
    char inseason[7];
    char G[50];
    char W[50];
    char L[10];
    char rank[3];
    char plyrMgr[7];
}Managers[5000];

time_t start, end;      //variable used for compute time.

//double diff;
int choice;

int dataSize=0;
FILE *fp;
char buf[99999];        //max total array size
int i = 0, j;
fp=fopen("Managers.csv","r");

//ignore the commna delimiters, copy the value into each field's arrays.
 while( fgets(buf,sizeof(buf),fp) != NULL)
{
    strcpy(Managers[i].managerID, strtok(buf,","));
    strcpy(Managers[i].yearID, strtok(NULL,","));
    strcpy(Managers[i].teamID, strtok(NULL,","));
    strcpy(Managers[i].lgID, strtok(NULL,","));
    strcpy(Managers[i].inseason, strtok(NULL,","));
    strcpy(Managers[i].G, strtok(NULL,","));
    strcpy(Managers[i].W, strtok(NULL,","));
    strcpy(Managers[i].L, strtok(NULL,","));
    strcpy(Managers[i].rank, strtok(NULL,","));
    strcpy(Managers[i].plyrMgr, strtok(NULL,","));
    ++i;        //increment array
    dataSize++;     //counter for data size
}

char *s;
char str[5];
if(myid ==0){
    printf("\n\n Please input the data to be retrieved\n");
    printf(" Note : No space is allowed...\n");
    printf(" Sample Query : abc,123,def,321\n");
    printf(" Input =>");
    scanf ("%s", str);
}
MPI_Bcast(str, 1, MPI_CHAR, 0, MPI_COMM_WORLD); // broadcast the information out

 start = clock(); // start the time


s = strtok (str, ",");
printf("\n");

//print header field
printf(" ManagerID");
printf("       YearID");
printf("      TeamID");
printf("      LgID");
printf("      InSeason");
printf("    Game");
printf("        Win");
printf("       Lose");
printf("        Rank");
printf("     PlyrMgr\n\n");

//print all the data
 while (s != NULL)
{
    int k;

    for (k =1; k<=dataSize; k++)
    {
        if(strcmp(s,Managers[k].managerID) == 0)
        {
            printf(" %10s",Managers[k].managerID);
            printf(" %10s",Managers[k].yearID);
            printf(" %10s",Managers[k].teamID);
            printf(" %10s",Managers[k].lgID);
            printf(" %10s",Managers[k].inseason);
            printf(" %10s",Managers[k].G);
            printf(" %10s",Managers[k].W);
            printf(" %10s",Managers[k].L);
            printf(" %10s",Managers[k].rank);
            printf(" %10s",Managers[k].plyrMgr);
        }
    }
    printf("\n");
    s = strtok (NULL, ",");
}

end = clock(); // end time
double diff = (((double)end - (double)start)/1000000.0F) * 1000;

if(myid==0){

    printf(" Time Taken : %.5f seconds \n", diff);
}


MPI_Finalize(); 

}
我的代码

=============================================

#include "mpi.h" 
#include <stdio.h> 
#include <stdlib.h>
#include <string.h>     //for string operations : strcpy & strtok
#include <time.h> 

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

int n, myid, numprocs; 
MPI_Init(&argc,&argv); 
MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
MPI_Comm_rank(MPI_COMM_WORLD,&myid); 

struct
{
    char managerID[50];
    char yearID[50];
    char teamID[10];
    char lgID[3];
    char inseason[7];
    char G[50];
    char W[50];
    char L[10];
    char rank[3];
    char plyrMgr[7];
}Managers[5000];

time_t start, end;      //variable used for compute time.

//double diff;
int choice;

int dataSize=0;
FILE *fp;
char buf[99999];        //max total array size
int i = 0, j;
fp=fopen("Managers.csv","r");

//ignore the commna delimiters, copy the value into each field's arrays.
 while( fgets(buf,sizeof(buf),fp) != NULL)
{
    strcpy(Managers[i].managerID, strtok(buf,","));
    strcpy(Managers[i].yearID, strtok(NULL,","));
    strcpy(Managers[i].teamID, strtok(NULL,","));
    strcpy(Managers[i].lgID, strtok(NULL,","));
    strcpy(Managers[i].inseason, strtok(NULL,","));
    strcpy(Managers[i].G, strtok(NULL,","));
    strcpy(Managers[i].W, strtok(NULL,","));
    strcpy(Managers[i].L, strtok(NULL,","));
    strcpy(Managers[i].rank, strtok(NULL,","));
    strcpy(Managers[i].plyrMgr, strtok(NULL,","));
    ++i;        //increment array
    dataSize++;     //counter for data size
}

char *s;
char str[5];
if(myid ==0){
    printf("\n\n Please input the data to be retrieved\n");
    printf(" Note : No space is allowed...\n");
    printf(" Sample Query : abc,123,def,321\n");
    printf(" Input =>");
    scanf ("%s", str);
}
MPI_Bcast(str, 1, MPI_CHAR, 0, MPI_COMM_WORLD); // broadcast the information out

 start = clock(); // start the time


s = strtok (str, ",");
printf("\n");

//print header field
printf(" ManagerID");
printf("       YearID");
printf("      TeamID");
printf("      LgID");
printf("      InSeason");
printf("    Game");
printf("        Win");
printf("       Lose");
printf("        Rank");
printf("     PlyrMgr\n\n");

//print all the data
 while (s != NULL)
{
    int k;

    for (k =1; k<=dataSize; k++)
    {
        if(strcmp(s,Managers[k].managerID) == 0)
        {
            printf(" %10s",Managers[k].managerID);
            printf(" %10s",Managers[k].yearID);
            printf(" %10s",Managers[k].teamID);
            printf(" %10s",Managers[k].lgID);
            printf(" %10s",Managers[k].inseason);
            printf(" %10s",Managers[k].G);
            printf(" %10s",Managers[k].W);
            printf(" %10s",Managers[k].L);
            printf(" %10s",Managers[k].rank);
            printf(" %10s",Managers[k].plyrMgr);
        }
    }
    printf("\n");
    s = strtok (NULL, ",");
}

end = clock(); // end time
double diff = (((double)end - (double)start)/1000000.0F) * 1000;

if(myid==0){

    printf(" Time Taken : %.5f seconds \n", diff);
}


MPI_Finalize(); 

}
#包括“mpi.h”
#包括
#包括
#包含//用于字符串操作:strcpy和strtok
#包括
int main(int argc,char*argv[])
{ 
int n,myid,numprocs;
MPI_Init(&argc,&argv);
MPI通信大小(MPI通信世界和numprocs);
MPI通信等级(MPI通信世界和myid);
结构
{
char-managerID[50];
char yearID[50];
char-teamID[10];
char-lgID[3];
char-inseason[7];
charg[50];
charw[50];
charl[10];
字符秩[3];
char plyrMgr[7];
}经理[5000];
time\u t start,end;//用于计算时间的变量。
//双差;
智力选择;
int-dataSize=0;
文件*fp;
char buf[99999];//最大总数组大小
int i=0,j;
fp=fopen(“Managers.csv”、“r”);
//忽略逗号分隔符,将值复制到每个字段的数组中。
while(fgets(buf,sizeof(buf),fp)!=NULL)
{
strcpy(Managers[i].managerID,strtok(buf,“,”);
strcpy(Managers[i].yearID,strtok(NULL,“,”);
strcpy(Managers[i].teamID,strtok(NULL,“,”);
strcpy(Managers[i].lgID,strtok(NULL,“,”);
strcpy(Managers[i].inseason,strtok(NULL,“,”);
strcpy(Managers[i].G,strtok(NULL,,”);
strcpy(Managers[i].W,strtok(NULL,“,”);
strcpy(Managers[i].L,strtok(NULL,“,”);
strcpy(Managers[i].rank,strtok(NULL,,”);
strcpy(Managers[i].plyrMgr,strtok(NULL,“,”);
++i、 //增量数组
dataSize++;//数据大小计数器
}
char*s;
char-str[5];
如果(myid==0){
printf(“\n\n请输入要检索的数据\n”);
printf(“注意:不允许有空格…\n”);
printf(“示例查询:abc,123,def,321\n”);
printf(“输入=>”;
scanf(“%s”,str);
}
MPI_Bcast(str,1,MPI_CHAR,0,MPI_COMM_WORLD);//广播信息
start=clock();//开始计时
s=strtok(str,“,”);
printf(“\n”);
//打印标题字段
printf(“ManagerID”);
printf(“YearID”);
printf(“团队ID”);
printf(“LgID”);
printf(“InSeason”);
printf(“游戏”);
printf(“赢”);
printf(“丢失”);
printf(“秩”);
printf(“PlyrMgr\n\n”);
//打印所有数据
while(s!=NULL)
{
int k;

对于(k=1;kHow)您在运行什么?您在群集上运行此应用程序吗?单台pc?