Chinaunix首页 | 论坛 | 博客
  • 博客访问: 57455
  • 博文数量: 13
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 151
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-10 15:31
文章分类

全部博文(13)

文章存档

2014年(13)

我的朋友

分类: WINDOWS

2014-05-08 09:29:58

上一篇讲到MPI_SEND是以数据个数来计数的,实际测试也得到了这样的结论。
但是今天做的一个测试却又显示了不同的结果。请看:

环境:CVF+F90+MPICH2

程序1:

点击(此处)折叠或打开

  1. program main
  2. include 'mpif.h'
  3. character*50 message(2)
  4. integer myid,numprocs,ierr
  5. integer status(MPI_STATUS_SIZE)
  6. character*8 FILENAME(10)

  7. call MPI_INIT(ierr)
  8. call MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)
  9. call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)

  10. if (myid==0) then
  11.    OPEN(1,FILE='files.txt')
  12.    DO I=1,10
  13.    READ(1,*) FILENAME(I)
  14.    call MPI_SEND(FILENAME(I),1,MPI_CHARACTER,1,99,MPI_COMM_WORLD,ierr)
  15.    END DO
  16.    
  17. else if(myid==1) then
  18.    DO I=1,10
  19.    call MPI_RECV(FILENAME(I),1,MPI_CHARACTER,0,99,MPI_COMM_WORLD,ierr,status)
  20.    END DO
  21.    WRITE(*,'(A20)') FILENAME(:)
  22. end if

  23. call MPI_FINALIZE(ierr)

  24. end
其中,files.txt内容为:


按理说,结果应该是files.txt的内容。但是运行结果却是:


也就是只显示了FILENAME(I)的头字符!很奇怪!
于是将代码稍作修改,程序2:

点击(此处)折叠或打开

  1. program main
  2. include 'mpif.h'
  3. character*50 message(2)
  4. integer myid,numprocs,ierr
  5. integer status(MPI_STATUS_SIZE)
  6. character*8 FILENAME(10)

  7. call MPI_INIT(ierr)
  8. call MPI_COMM_RANK(MPI_COMM_WORLD,myid,ierr)
  9. call MPI_COMM_SIZE(MPI_COMM_WORLD,numprocs,ierr)

  10. if (myid==0) then
  11.    OPEN(1,FILE='files.txt')
  12.    DO I=1,10
  13.    READ(1,*) FILENAME(I)
  14.    call MPI_SEND(FILENAME(I),8,MPI_CHARACTER,1,99,MPI_COMM_WORLD,ierr)
  15.    END DO
  16.    
  17. else if(myid==1) then
  18.    DO I=1,10
  19.    call MPI_RECV(FILENAME(I),8,MPI_CHARACTER,0,99,MPI_COMM_WORLD,ierr,status)
  20.    END DO
  21.    WRITE(*,'(A20)') FILENAME(:)
  22. end if

  23. call MPI_FINALIZE(ierr)

  24. end
结果却能显示正常:


由上对比可知,MPI_SEND传递数据似乎有时是以数据个数来计数,有时却又是以字节来计数。WHY??
阅读(1054) | 评论(0) | 转发(0) |
0

上一篇:Fortran中的字符串处理函数

下一篇:没有了

给主人留下些什么吧!~~