²é¿´: 2530  |  »Ø¸´: 8
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

mhyuan

½ð³æ (СÓÐÃûÆø)

[ÇóÖú] ¹ØÓÚMPI²¢Ðбà³ÌµÄ»ù±¾ÎÊÌâ

ÏëÒª×ÔѧMPI²¢Ðбà³Ì£¬ÓÉÓÚÒÔǰ´Óδ½Ó´¥¹ýMPI£¬ÓÐÊìϤµÄÏ£ÍûÄܰï¸ö棬¶àл¡£

ÎÒÏÖÔÚµÄÏëÒªµÄÊÇ£¬¸øÎÒ¾ÙÒ»¸öMPIµÄʵ¼ÊÀý×Ó£¬ÏÂÃæÊÇÎÒдµÄÒ»¸ö¼òµ¥µÄFortran³ÌÐò£¬ÊǹØÓÚ¼ÆËãÁ½¸öÊý×éÏà³ËµÄ¡£³ÌÐò²»ÊǺܸ´ÔÓ£¬Ï£ÍûÊìϤMPIµÄÐֵܽãÃðïÎҸıà³ÉMPI²¢ÐгÌÐò£¬²¢Ïêϸ˵Ã÷Ò»ÏÂÈçºÎÔËÐУ¨ÓÉÓÚ³õѧMPI£¬¶ÔÕâ·½ÃæµÄ֪ʶ»¹´¦ÓÚ¿Õ°×״̬£©£¬Ï£ÍûÓÐÈ˰ïæ£¬²»Ê¤¸Ð¼¤£¡

  Program Matrix
  Implicit None
  Integer :: I,J,K
  Integer :: A(4,4),B(4,4),C(4,4)
  Data A/1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7/
  Data B/9,8,7,6,5,4,3,2,1,9,8,7,6,5,4,3/
  Do I=1,4
    Do J=1,4
      C(I,J)=0
      Do k=1,4
        C(I,J)=C(I,J)+A(I,K)*B(K,J)
      Enddo
    Enddo
  Write(1101,*) (C(I,J),J=1,4)
  Enddo
  End

[ Last edited by mhyuan on 2011-7-11 at 21:40 ]
»Ø¸´´ËÂ¥

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

mhyuan

½ð³æ (СÓÐÃûÆø)

¡ï
jjdg(½ð±Ò+1): ¸Ðл²ÎÓë³ÌÐòÓïÑÔ°æÌÖÂÛ 2011-07-16 13:31:29
ÒýÓûØÌû:
Originally posted by tsiangsun at 2011-07-12 23:48:18:
mpiÊÇcpuÖ®¼ä´«µÝÐÅÏ¢£¨Êý¾Ý£©µÄЭÒé¡£ÄãÒªÃ÷È·Ö¸¶¨Ã¿¸öcpuÒª×öʲô¼ÆË㣬²»ÊÇ˵°ÑÕâ¸ö³ÌÐò±à³Ìmpi¾ÍÐÐÁ˵ġ£

ÍøÉϺÍÊéµê¾ÍÓÐÂô½Ì²ÄµÄ£¬¿´ÁËÒÔºóÔÙÀ´ÎÊ

ÕýÔÚѧϰ¹ý³ÌÖÐ......ºÇºÇ¡£
3Â¥2011-07-16 09:25:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 9 ¸ö»Ø´ð

tsiangsun

ľ³æ (СÓÐÃûÆø)

¡¾´ð°¸¡¿Ó¦Öú»ØÌû

¡ï
xzhdty(½ð±Ò+1): »¶Ó­³£À´³ÌÐòÓïÑÔ°æÌÖÂÛ 2011-07-13 01:07:47
mhyuan(½ð±Ò+5): 2011-07-16 09:23:21
mpiÊÇcpuÖ®¼ä´«µÝÐÅÏ¢£¨Êý¾Ý£©µÄЭÒé¡£ÄãÒªÃ÷È·Ö¸¶¨Ã¿¸öcpuÒª×öʲô¼ÆË㣬²»ÊÇ˵°ÑÕâ¸ö³ÌÐò±à³Ìmpi¾ÍÐÐÁ˵ġ£

ÍøÉϺÍÊéµê¾ÍÓÐÂô½Ì²ÄµÄ£¬¿´ÁËÒÔºóÔÙÀ´ÎÊ
2Â¥2011-07-12 23:48:18
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

mhyuan

½ð³æ (СÓÐÃûÆø)

¸ÕÈëÃÅ£¬Ð´ÁËÒ»¸ö×î¼òµ¥µÄ²¢ÐгÌÐò£¨Matrix.f90£©¡£ÈçÏ£º
        Program Matrix
        Implicit None
        Include 'mpif.h'
       
        Integer :: I,J,K
        Integer :: iam,np,ierr
        integer :: status(MPI_STATUS_SIZE)
        Integer :: A(4,4),B(4,4),C(4,4)

        Call MPI_INIT(Ierr)
        Call MPI_COMM_RANK(mpi_comm_world,iam,ierr)
        Call mpi_comm_size(mpi_comm_world,np,ierr)
       
          Data A/1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7/
          Data B/9,8,7,6,5,4,3,2,1,9,8,7,6,5,4,3/
          Data C/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/

        Do J=1,4
          Do I=1,4
            C((iam+1),J)=C((iam+1),J)+A((iam+1),I)*B(I,J)
          Enddo
        Enddo

        If (iam==0) then
          Call MPI_Recv(c(2,1),1,MPI_Integer,1,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(2,2),1,MPI_Integer,1,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(2,3),1,MPI_Integer,1,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(2,4),1,MPI_Integer,1,0,mpi_comm_world,status,ierr)

          Call MPI_Recv(c(3,1),1,MPI_Integer,2,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(3,2),1,MPI_Integer,2,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(3,3),1,MPI_Integer,2,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(3,4),1,MPI_Integer,2,0,mpi_comm_world,status,ierr)

          Call MPI_Recv(c(4,1),1,MPI_Integer,3,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(4,2),1,MPI_Integer,3,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(4,3),1,MPI_Integer,3,0,mpi_comm_world,status,ierr)
          Call MPI_Recv(c(4,4),1,MPI_Integer,3,0,mpi_comm_world,status,ierr)
        Elseif (iam==1) then
            Call MPI_send(c(2,1),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(2,2),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(2,3),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(2,4),1,MPI_Integer,0,0,mpi_comm_world,ierr)
        Elseif (iam==2) then
            Call MPI_send(c(3,1),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(3,2),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(3,3),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(3,4),1,MPI_Integer,0,0,mpi_comm_world,ierr)
        Elseif (iam==3) then
            Call MPI_send(c(4,1),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(4,2),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(4,3),1,MPI_Integer,0,0,mpi_comm_world,ierr)
            Call MPI_send(c(4,4),1,MPI_Integer,0,0,mpi_comm_world,ierr)
        Endif

        If (iam==0) then
          Do I=1,4
            Write(1102,*) (C(I,J),J=1,4)
          Enddo
        Endif

        Call MPI_FINALIZE(ierr)
        End
ÔËÐз½Ê½Îª£º
    mpif90 Matrix.f90 -o Matrix
       mpirun -np 4 ./Matrix
£¨µ±È»ÔÚ²¢Ðлú»·¾³Ï£©
ÔËÐнá¹û£¨fort.1102)£º
     136          60         146          79
         103          47          99          61
         133          61         124          79
         163          75         149          97
£¨ÓëÉÏÃæµÄ´®ÐгÌÐò½á¹û£¨fort.1101)ÍêȫһÑù£©
£¨Õâ¸ö²¢ÐгÌÐòºÜµÍ¼¶£¬Óдý¼ÌÐø¸Ä½ø......£©
4Â¥2011-07-21 09:01:54
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

mhyuan

½ð³æ (СÓÐÃûÆø)

¡ï
dubo(½ð±Ò+1): »¶Ó­³£À´³ÌÐòÓïÑÔ°æÌÖÂÛ 2011-07-31 13:22:45
¼òµ¥°æ±¾
        Program Matrix
        Implicit None
        Include 'mpif.h'
       
        Integer :: I,J,K
        Integer :: iam,np,ierr
        Integer :: A(4,4),B(4,4),C(4,4)
        Integer :: AA(4),CC(16)

        Call MPI_INIT(Ierr)
        Call MPI_COMM_RANK(mpi_comm_world,iam,ierr)
        Call mpi_comm_size(mpi_comm_world,np,ierr)
       
          Data A/1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7/
          Data B/9,8,7,6,5,4,3,2,1,9,8,7,6,5,4,3/
          Data CC/0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0/

        Do I=1,4
          AA(I)=A((iam+1),I)
        Enddo

        Do J=1,4
          Do I=1,4
            CC(J)=CC(J)+AA(I)*B(I,J)
          Enddo
        Enddo

        Call MPI_Gather(CC,4,MPI_Integer,CC,4,MPI_Integer,0,mpi_comm_world,ierr)

        If (iam==0) then
        K=0
        Do I=1,4
          Do J=1,4
            K=K+1
                C(I,J)=CC(K)
          Enddo
          Write(1103,*) (C(I,J),J=1,4)
        Enddo
        Endif

        Call MPI_FINALIZE(ierr)
        End
ÔËÐз½Ê½Ò»Ñù
ÔËÐнá¹ûÒ»Ñù
5Â¥2011-07-22 11:21:26
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
×î¾ßÈËÆøÈÈÌûÍÆ¼ö [²é¿´È«²¿] ×÷Õß »Ø/¿´ ×îºó·¢±í
[¿¼ÑÐ] Çó²ÄÁϵ÷¼Á +7 ¸ô±Ú³ÂÏÈÉú 2026-03-12 7/350 2026-03-18 16:14 by ·ãÇÅZL
[¿¼ÑÐ] 281Çóµ÷¼Á£¨0805£© +5 ÑÌÏ«Ò亣 2026-03-16 13/650 2026-03-18 14:30 by stone_128
[¿¼ÑÐ] Ò»Ö¾Ô¸Î÷ÄϽ»´ó£¬Çóµ÷¼Á +4 ²Ä»¯ÖðÃÎÈË 2026-03-18 4/200 2026-03-18 14:22 by 007_lilei
[¿¼ÑÐ] 302Çóµ÷¼Á +10 ºôºôºô¡£¡£¡£¡£ 2026-03-17 10/500 2026-03-18 12:45 by Linda Hu
[¿¼ÑÐ] Áº³ÉΰÀÏʦ¿ÎÌâ×é»¶Ó­ÄãµÄ¼ÓÈë +8 һѼѼӴ 2026-03-14 10/500 2026-03-17 15:07 by һѼѼӴ
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤×¨Ë¶µ÷¼Á +5 heming3743 2026-03-16 5/250 2026-03-17 14:03 by Ó¸ÒÌ«¼àÍõ¹«¹«
[¿¼ÑÐ] 326Çóµ÷¼Á +4 ŵ±´¶û»¯Ñ§½±êéê 2026-03-15 7/350 2026-03-16 17:11 by ŵ±´¶û»¯Ñ§½±êéê
[¿¼ÑÐ] Ò»Ö¾Ô¸»ªÖÐʦ·¶071000£¬325Çóµ÷¼Á +6 RuitingC 2026-03-12 6/300 2026-03-16 14:50 by ¿Éµ­²»¿ÉÍü
[¿¼ÑÐ] 327Çóµ÷¼Á +6 ʰ¹âÈÎȾ 2026-03-15 11/550 2026-03-15 22:47 by ʰ¹âÈÎȾ
[¿¼ÑÐ] 0856ר˶279Çóµ÷¼Á +5 ¼ÓÓͼÓÓÍ£¡? 2026-03-15 5/250 2026-03-15 11:58 by 2020015
[¿¼ÑÐ] 288Çóµ÷¼Á +4 Ææµã0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[¿¼ÑÐ] Ò»Ö¾Ô¸¹þ¹¤´ó²ÄÁÏ324·ÖÇóµ÷¼Á +5 ãÆÐñ¶« 2026-03-14 5/250 2026-03-14 14:53 by ľ¹Ï¸à
[¿¼ÑÐ] ²ÄÁÏÓ뻯¹¤Çóµ÷¼ÁÒ»Ö¾Ô¸ 985 ×Ü·Ö 295 +8 dream¡­¡­ 2026-03-12 8/400 2026-03-13 22:17 by ÐÇ¿ÕÐÇÔÂ
[¿¼ÑÐ] Çó²ÄÁϵ÷¼Á 085600Ó¢Ò»Êý¶þ×Ü·Ö302 ǰÈý¿Æ235 ¾«Í¨»úÆ÷ѧϰ Ò»Ö¾Ô¸¹þ¹¤´ó +4 ÁÖyaxin 2026-03-12 4/200 2026-03-13 22:04 by ÐÇ¿ÕÐÇÔÂ
[˶²©¼ÒÔ°] 085600 260·ÖÇóµ÷¼Á +3 Ìì¿Õ»¹ÏÂÓêô 2026-03-13 5/250 2026-03-13 18:46 by Ìì¿Õ»¹ÏÂÓêô
[¿¼ÑÐ] 310Çóµ÷¼Á +3 ¡¾ÉÏÉÏÇ©¡¿ 2026-03-11 3/150 2026-03-13 16:16 by JourneyLucky
[¿¼ÑÐ] 307Çóµ÷¼Á +5 ³¬¼¶ÒÁ°º´óÍõ 2026-03-12 5/250 2026-03-13 15:56 by °ô°ôÇòÊÖ
[¿¼ÑÐ] 290Çóµ÷¼Á +7 ADT 2026-03-12 7/350 2026-03-13 15:17 by JourneyLucky
[¿¼ÑÐ] 070303Ò»Ö¾Ô¸Î÷±±´óѧѧ˶310ÕÒµ÷¼Á +3 dÈçÔ¸Éϰ¶ 2026-03-13 3/150 2026-03-13 10:43 by houyaoxu
[¿¼²©] 26¶Á²© +4 Rui135246 2026-03-12 10/500 2026-03-13 07:15 by gaobiao
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û