feat(linux): portable build works on linux + benchmarks
This commit is contained in:
@@ -13,12 +13,19 @@ int main(int argc, char **argv)
|
||||
mfem::Mpi::Init(argc, argv);
|
||||
mfem::Hypre::Init();
|
||||
const int rank = mfem::Mpi::WorldRank();
|
||||
const int ranks = mfem::Mpi::WorldSize();
|
||||
const char *device_name = argc > 1 ? argv[1] : "cpu";
|
||||
mfem::Device device(device_name);
|
||||
|
||||
mfem::Mesh serial_mesh = mfem::Mesh::MakeCartesian2D(
|
||||
8, 8, mfem::Element::QUADRILATERAL, true, 1.0, 1.0);
|
||||
mfem::ParMesh mesh(MPI_COMM_WORLD, serial_mesh);
|
||||
mfem::Array<int> partitioning(serial_mesh.GetNE());
|
||||
for (int element = 0; element < serial_mesh.GetNE(); ++element)
|
||||
{
|
||||
partitioning[element] = static_cast<long long>(element) * ranks /
|
||||
serial_mesh.GetNE();
|
||||
}
|
||||
mfem::ParMesh mesh(MPI_COMM_WORLD, serial_mesh, partitioning.GetData());
|
||||
serial_mesh.Clear();
|
||||
|
||||
mfem::H1_FECollection elements(2, mesh.Dimension());
|
||||
@@ -66,10 +73,11 @@ int main(int argc, char **argv)
|
||||
|
||||
const double local_norm = solution.Norml2();
|
||||
double global_norm = 0.0;
|
||||
MPI_Allreduce(&local_norm, &global_norm, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
|
||||
MPI_Allreduce(&local_norm, &global_norm, 1, MPI_DOUBLE, MPI_SUM,
|
||||
MPI_COMM_WORLD);
|
||||
if (rank == 0)
|
||||
{
|
||||
std::cout << "MFEM parallel Poisson: ranks=" << mfem::Mpi::WorldSize()
|
||||
std::cout << "MFEM parallel Poisson: ranks=" << ranks
|
||||
<< " global_dofs=" << space.GlobalTrueVSize()
|
||||
<< " norm_sum=" << global_norm
|
||||
<< " device=" << device_name << '\n';
|
||||
|
||||
Reference in New Issue
Block a user