mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-13 06:30:34 +05:00
parallel command processing
This commit is contained in:
parent
a4dcf70c69
commit
faad040fb0
@ -231,6 +231,11 @@ void Ng_LoadMeshFromStream ( istream & input )
|
|||||||
|
|
||||||
|
|
||||||
void Ng_LoadMesh (const char * filename)
|
void Ng_LoadMesh (const char * filename)
|
||||||
|
{
|
||||||
|
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
||||||
|
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
||||||
|
|
||||||
|
if (id == 0)
|
||||||
{
|
{
|
||||||
if ( (strlen (filename) > 4) &&
|
if ( (strlen (filename) > 4) &&
|
||||||
strcmp (filename + (strlen (filename)-4), ".vol") != 0 )
|
strcmp (filename + (strlen (filename)-4), ".vol") != 0 )
|
||||||
@ -245,6 +250,18 @@ void Ng_LoadMesh (const char * filename)
|
|||||||
|
|
||||||
ifstream infile(filename);
|
ifstream infile(filename);
|
||||||
Ng_LoadMeshFromStream(infile);
|
Ng_LoadMeshFromStream(infile);
|
||||||
|
|
||||||
|
if (ntasks > 1)
|
||||||
|
{
|
||||||
|
// MyMPI_SendCmd ("mesh");
|
||||||
|
mesh -> Distribute();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mesh.Reset (new Mesh());
|
||||||
|
mesh->SendRecvMesh();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ng_LoadMeshFromString (const char * mesh_as_string)
|
void Ng_LoadMeshFromString (const char * mesh_as_string)
|
||||||
|
@ -1197,16 +1197,10 @@ namespace netgen
|
|||||||
topology -> Update();
|
topology -> Update();
|
||||||
clusters -> Update();
|
clusters -> Update();
|
||||||
|
|
||||||
#ifdef PARALLEL
|
// Distribute();
|
||||||
if ( ntasks > 1 ) Distribute ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
SetNextMajorTimeStamp();
|
SetNextMajorTimeStamp();
|
||||||
// PrintMemInfo (cout);
|
// PrintMemInfo (cout);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -657,6 +657,9 @@ namespace netgen
|
|||||||
// call it only for the master !
|
// call it only for the master !
|
||||||
void Mesh :: Distribute ()
|
void Mesh :: Distribute ()
|
||||||
{
|
{
|
||||||
|
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
||||||
|
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
||||||
|
|
||||||
if (id != 0 || ntasks == 1 ) return;
|
if (id != 0 || ntasks == 1 ) return;
|
||||||
|
|
||||||
#ifdef METIS
|
#ifdef METIS
|
||||||
@ -666,17 +669,15 @@ namespace netgen
|
|||||||
(*this)[ei].SetPartition(ntasks * ei/GetNE() + 1);
|
(*this)[ei].SetPartition(ntasks * ei/GetNE() + 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
for (ElementIndex ei = 0; ei < GetNE(); ei++)
|
for (ElementIndex ei = 0; ei < GetNE(); ei++)
|
||||||
*testout << "el(" << ei << ") is in part " << (*this)[ei].GetPartition() << endl;
|
*testout << "el(" << ei << ") is in part " << (*this)[ei].GetPartition() << endl;
|
||||||
for (SurfaceElementIndex ei = 0; ei < GetNSE(); ei++)
|
for (SurfaceElementIndex ei = 0; ei < GetNSE(); ei++)
|
||||||
*testout << "sel(" << int(ei) << ") is in part " << (*this)[ei].GetPartition() << endl;
|
*testout << "sel(" << int(ei) << ") is in part " << (*this)[ei].GetPartition() << endl;
|
||||||
|
*/
|
||||||
|
|
||||||
// send partition
|
// MyMPI_SendCmd ("mesh");
|
||||||
MyMPI_SendCmd ("mesh");
|
|
||||||
SendRecvMesh ();
|
SendRecvMesh ();
|
||||||
|
|
||||||
// paralleltop -> UpdateCoarseGrid();
|
|
||||||
// paralleltop -> Print();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -221,6 +221,11 @@ namespace netgen
|
|||||||
ifstream infile(filename.c_str());
|
ifstream infile(filename.c_str());
|
||||||
mesh -> Load(infile);
|
mesh -> Load(infile);
|
||||||
|
|
||||||
|
#ifdef PARALLEL
|
||||||
|
MyMPI_SendCmd ("mesh");
|
||||||
|
mesh -> Distribute();
|
||||||
|
#endif
|
||||||
|
|
||||||
for (int i = 0; i < geometryregister.Size(); i++)
|
for (int i = 0; i < geometryregister.Size(); i++)
|
||||||
{
|
{
|
||||||
NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (infile);
|
NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (infile);
|
||||||
|
@ -2,9 +2,6 @@
|
|||||||
|
|
||||||
#include "dlfcn.h"
|
#include "dlfcn.h"
|
||||||
|
|
||||||
#ifdef OCCGEOMETRY
|
|
||||||
#include <occgeom.hpp>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// #include <mystdlib.h>
|
// #include <mystdlib.h>
|
||||||
|
|
||||||
@ -30,23 +27,16 @@
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
#include <geometry2d.hpp>
|
#include <geometry2d.hpp>
|
||||||
#include <stlgeom.hpp>
|
#include <stlgeom.hpp>
|
||||||
|
*/
|
||||||
// #include <incvis.hpp>
|
|
||||||
// #include <visual.hpp>
|
|
||||||
// #include <mystdlib.h>
|
|
||||||
// #include <myadt.hpp>
|
|
||||||
// #include <linalg.hpp>
|
|
||||||
// #include <csg.hpp>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
|
||||||
// #include "parallel.hpp"
|
// #include "parallel.hpp"
|
||||||
#include "parallelfunc.hpp"
|
// #include "parallelfunc.hpp"
|
||||||
|
|
||||||
|
|
||||||
// extern "C" void NGS_ParallelRun (const string & message);
|
// extern "C" void NGS_ParallelRun (const string & message);
|
||||||
@ -72,6 +62,7 @@ namespace netgen {
|
|||||||
extern AutoPtr<Mesh> mesh;
|
extern AutoPtr<Mesh> mesh;
|
||||||
extern VisualSceneMesh vsmesh;
|
extern VisualSceneMesh vsmesh;
|
||||||
extern Flags parameters;
|
extern Flags parameters;
|
||||||
|
extern DLL_HEADER MeshingParameters mparam;
|
||||||
}
|
}
|
||||||
|
|
||||||
using namespace netgen;
|
using namespace netgen;
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
das braucht keiner mehr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef FILE_PARALLELFUNC
|
#ifndef FILE_PARALLELFUNC
|
||||||
#define FILE_PARALLELFUNC
|
#define FILE_PARALLELFUNC
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ dist_pkgdata_DATA = cube.surf
|
|||||||
AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(MPI_INCLUDES) $(OCCFLAGS)
|
AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(MPI_INCLUDES) $(OCCFLAGS)
|
||||||
|
|
||||||
lib_LTLIBRARIES = libnglib.la
|
lib_LTLIBRARIES = libnglib.la
|
||||||
libnglib_la_SOURCES = nglib.cpp
|
libnglib_la_SOURCES = nglib.cpp parallelfunc.cpp
|
||||||
|
|
||||||
libnglib_la_LIBADD = \
|
libnglib_la_LIBADD = \
|
||||||
$(top_builddir)/libsrc/interface/libinterface.la \
|
$(top_builddir)/libsrc/interface/libinterface.la \
|
||||||
|
@ -31,20 +31,14 @@ namespace netgen {
|
|||||||
MeshingParameters & mp);
|
MeshingParameters & mp);
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace netgen
|
|
||||||
{
|
|
||||||
int id, ntasks;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLELxxx
|
||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
// MPI_Group MPI_HIGHORDER_WORLD;
|
// MPI_Comm mesh_comm;
|
||||||
// MPI_Comm MPI_HIGHORDER_COMM;
|
|
||||||
MPI_Comm mesh_comm;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user