Как правило, для эффективного использования MPI в одной структуре данных нет функций MPI.Выяснить размер и ранг MPI-коммуникатора очень просто: сложная часть заключается в организации ваших команд MPI.
В вашем примере первое, что вам нужно сделать, - это рассеять вектор по всем процессам MPI.,Но представьте себе что-то вроде этого:
mpi_norm(mpi_add(v1, v2));
Здесь было бы ужасно неэффективно реализовывать отдельные операции над структурой данных - вы не хотите собирать результат добавления двух векторов только для поворота и прокачкиони снова возвращаются ко всем процессам MPI.
Имея достаточно много работы, вы могли бы эффективно реализовать вышесказанное, если бы mpi_add()
возвращал прокси-объект, который запоминает, каким должен был быть расчет, но выполняет толькоэто лениво, поэтому частичные результаты можно оставить отдельно во многих процессах MPI, которые затем объединяют их в единую векторную норму и возвращают ее.
Но такое чувство, что вы, возможно, лаете не на то дерево - если вашЦель - «Сделать хорошую программу MPI», вы должны начинать сверху вниз, а не снизу вверх.