Пример #1
0
initialize::~initialize() {
  if (!quiet) master_printf("\nElapsed run time = %g s\n", elapsed_time());
#ifdef HAVE_MPI
  end_divide_parallel();
  MPI_Finalize();
#endif
}
Пример #2
0
int divide_parallel_processes(int numgroups)
{
#ifdef HAVE_MPI
  end_divide_parallel();
  if (numgroups > count_processors()) abort("numgroups > count_processors");
  int mygroup = (my_rank() * numgroups) / count_processors();
  MPI_Comm_split(MPI_COMM_WORLD, mygroup, my_rank(), &mycomm);
  return mygroup;
#else
  if (numgroups != 1) abort("cannot divide processes in non-MPI mode");
  return 0;
#endif
}
Пример #3
0
int divide_parallel_processes(int numgroups)
{
#ifdef HAVE_MPI
    int sz, rank, mygroup;
    end_divide_parallel();
    MPI_Comm_size(mpb_comm, &sz);
    CHECK(numgroups > 0, "numgroups must be > 0");
    CHECK(numgroups <= sz, "tried to split into more groups than processes");
    MPI_Comm_rank(mpb_comm, &rank);
    mygroup = (rank * numgroups) / sz;
    MPI_Comm_split(MPI_COMM_WORLD, mygroup, rank, &mpb_comm);
    return mygroup;
#else
    CHECK(numgroups != 1, "tried to split into more groups than processes");
    return 0;
#endif
}