В общем, каково время выполнения MPI_Scatter и MPI_Bcast для отправки n элементов на p процессоров - PullRequest
0 голосов
/ 27 августа 2018

Я хотел понять сложность времени выполнения функций MPI_Scatter и MPI_Bcast. От них зависит только количество процессоров или количество отправляемых нами элементов. Пример:

  • Трансляция от 1 целого до 10 тыс. Процессоров
  • Вещательный массив из 100 целых чисел на процессоры 10 КБ
  • Разбрасывание 10000 элементов на 200 процессоров
  • разбрасывает 10000 элементов на 1000 процессоров

Я попытался понять время выполнения, используя MPI_Wtime, как показано ниже, и обнаружил, что время выполнения как разброса, так и широковещания зависит только от количества процессоров. Это утверждение правильно?

    MPI_Barrier(MPI_COMM_WORLD);
    if (rank == 0)
        t1 = MPI_Wtime();

    MPI_Scatter(&data, n/p, MPI_INT, &temp_data, n/p, MPI_INT, 0, MPI_COMM_WORLD);
    //MPI_Bcast(&data, 1, MPI_INT, 0, MPI_COMM_WORLD);  

    MPI_Barrier(MPI_COMM_WORLD);
    if(rank==0)
        t2 = MPI_Wtime();

    cout << "Time taken" " << t2-t1 << endl;

Вывод, который я хочу, - это уметь приблизительно сказать, что время выполнения разброса и широковещания будет O (log p), где p - число процессоров.

...