MPI初学者陷入死循环,求指导

Divsenft 2016-11-06 10:16:22
#include <mpi.h>
#include <stdio.h>
#define N 5000000

int main(int argc, char *argv[])
{
FILE* file;
file = fopen("Homo_sapiens.GRCh38.dna.chromosome.7.fa","r");
char ch;

char arr1[N],arr2[N];
int num=0,countC=0;

int numtasks,rank,buf;

MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numtasks);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Status stat;

if(rank==0)
{
while(ch!='\n')
{
ch =getc(file);
}

while(!feof(file))
{
int i,a;
for(i=1;i<numtasks;i++)
{
for(a=0;a<N;a++)
{
arr1[a]=fgetc(file);
}
MPI_Send(&arr1,N,MPI_CHAR,i,100,MPI_COMM_WORLD);
MPI_Recv(&buf,1,MPI_INT,i,99,MPI_COMM_WORLD,&stat);
num+=buf;
}
}

printf("num = d%\n",num);
}

else
{
MPI_Recv(&arr2,N,MPI_CHAR,0,100,MPI_COMM_WORLD,&stat);
int b;
for(b=0;b<N;b++)
{
if(arr2[b]=='C'){countC=countC+1;}
}
MPI_Send(&countC,1,MPI_INT,0,99,MPI_COMM_WORLD);
}

printf("I am %d of %d\n",rank,numtasks);

MPI_Finalize();
fclose(file);
}
...全文
1152 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

2,408

社区成员

发帖
与我相关
我的任务
社区描述
高性能计算
社区管理员
  • 高性能计算社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧