SORU
23 EKİM 2011, Pazar


MPI kullanarak MPİ_Bcast iletişim

Diğer tüm düğümler MPİ_Bcast kullanarak kök düğümden bir mesaj yayınlamak için çalışıyorum. Bu programı çalıştırmak zaman ben ancak, her zaman başında duruyor. Herkes sorunun ne olduğunu biliyor mu?

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
        int rank;
        int buf;
        MPI_Status status;
        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);

        if(rank == 0) {
                buf = 777;
                MPI_Bcast(&buf, 1, MPI_INT, 0, MPI_COMM_WORLD);
        }
        else {
                MPI_Recv(&buf, 1, MPI_INT, 0, 0, MPI_COMM_WORLD, &status);
                printf("rank %d receiving received %d\n", rank, buf);
        }

        MPI_Finalize();
        return 0;
}

CEVAP
23 EKİM 2011, Pazar


Bu insanlar MPI için yeni bir karışıklığı için ortak bir kaynaktır. MPI_Recv() verileri bir yayın tarafından gönderilen almak için kullanmayın; MPI_Bcast() kullanın.

İstediğin örneğin, bu:

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {
        int rank;
        int buf;
        const int root=0;

        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);

        if(rank == root) {
           buf = 777;
        }

        printf("[%d]: Before Bcast, buf is %d\n", rank, buf);

        /* everyone calls bcast, data is taken from root and ends up in everyone's buf */
        MPI_Bcast(&buf, 1, MPI_INT, root, MPI_COMM_WORLD);

        printf("[%d]: After Bcast, buf is %d\n", rank, buf);

        MPI_Finalize();
        return 0;
}

MPI toplu haberleşme içinherkesyer; herkes Bcast, ya da ne Allreduce veya arasın. (Bcast rutin belirten bir parametre yüzden "kök" ise yalnızca gönderenin adı bcast eğer gönderme yapan; ya da, buna ihtiyacın olmaz.) Herkes yayın, alıcı da dahil olmak üzere aramalar; receviers sadece almak yayınlamayın.

Bunun nedeni, toplu işlemleri (herkese veriyorlar süreçleri' veri) yerine . ne istediğini devlet böylece iletişimde herkes dahil olabilirnasılolur (örneğin, kök işlemci döngüleri boyunca diğer tüm rütbe ve yaptığı bir gönderme), böylece kapsam için optimize iletişim kalıpları (örneğin, bir ağaç tabanlı hiyerarşik iletişim alır log(P) adımları yerine P adım için işlemleri P).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BigBoyTV

    BigBoyTV

    25 EYLÜL 2013
  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • hydejiaqi

    hydejiaqi

    12 Mart 2008