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

  • ADDVOiCE

    ADDVOiCE

    28 Mayıs 2009
  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • bored before i even began

    bored before

    30 Mart 2009