请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 96|回复: 0

[并行运算] 并行进程问题

[复制链接]

26

帖子

0

威望

43

eV
积分
69

Level 2 能力者

发表于 2017-1-10 19:31:38 | 显示全部楼层 |阅读模式
本帖最后由 西乡新丰客 于 2017-1-10 19:55 编辑

请问各位:我想看一个并行程序的进程关系,就试了一个小程序。如下
#include <stdio.h>
#include "mpi.h"
#include <unistd.h>

int main(int argc, char* argv[])
{
int myid,numprocs;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
pid_t fpid;
int count=0;


MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Get_processor_name(processor_name,&namelen);

printf("hi!process %d of %d on %s*******child %d , parent %d \n",myid,numprocs,processor_name,getpid(),getppid());
MPI_Finalize();


fpid=fork();
if (fpid < 0)
  printf("error");
else if (fpid == 0)
  {printf("child,%d,parent,%d\n",getpid(),getppid());
  count++;}
else
  {printf("parent,%d,grandparent,%d\n",getpid(),getppid());
  count++;}
printf("count %d\n",count);

return 0;
}
然后编译,并行运行得出其结果(比如-np 3):
hi!process 1 of 3 on liqizhi-YangTianT4900c-00*******child 3301 , parent 3295
hi!process 2 of 3 on liqizhi-YangTianT4900c-00*******child 3302 , parent 3295
hi!process 0 of 3 on liqizhi-YangTianT4900c-00*******child 3300 , parent 3295
parent,3301,grandparent,3295
count 1
child,3309,parent,3301
count 1
parent,3302,grandparent,3295
count 1
parent,3300,grandparent,3295
count 1
child,3311,parent,1525
child,3310,parent,1525
count 1
count 1

其中这个1525是怎么来的?而且少了3203进程。有时会运行正常,有时就会出现这个1525进程。
查看其进程如下:
PID TTY      STAT   TIME COMMAND
1525 ?        Ss     0:00 /sbin/upstart --user
这是为什么


您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

Archiver|手机版|小黑屋|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2017-1-25 01:18 , Processed in 0.081379 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表