mirror of
https://github.com/NGSolve/netgen.git
synced 2024-12-26 22:00:33 +05:00
parallel mesh
This commit is contained in:
parent
672cea23ef
commit
2d15141187
@ -33,8 +33,10 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
//#include "parallelfunc.hpp"
|
//#include "parallelfunc.hpp"
|
||||||
|
/*
|
||||||
extern MPI_Group MPI_HIGHORDER_WORLD;
|
extern MPI_Group MPI_HIGHORDER_WORLD;
|
||||||
extern MPI_Comm MPI_HIGHORDER_COMM;
|
extern MPI_Comm MPI_HIGHORDER_COMM;
|
||||||
|
*/
|
||||||
|
|
||||||
// namespace netgen
|
// namespace netgen
|
||||||
// {
|
// {
|
||||||
@ -156,7 +158,7 @@ namespace netgen
|
|||||||
MPI_Irecv( &s.First(), s.Size(), MyGetMPIType<T>(), dest, tag, MPI_COMM_WORLD, & request);
|
MPI_Irecv( &s.First(), s.Size(), MyGetMPIType<T>(), dest, tag, MPI_COMM_WORLD, & request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
template <class T, int BASE>
|
template <class T, int BASE>
|
||||||
inline MPI_Request MyMPI_ISend (FlatArray<T, BASE> s, int dest)
|
inline MPI_Request MyMPI_ISend (FlatArray<T, BASE> s, int dest)
|
||||||
{
|
{
|
||||||
@ -175,6 +177,24 @@ namespace netgen
|
|||||||
return request;
|
return request;
|
||||||
// MPI_Request_free (&request);
|
// MPI_Request_free (&request);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
template <class T, int BASE>
|
||||||
|
inline void MyMPI_ISend (FlatArray<T, BASE> s, int dest)
|
||||||
|
{
|
||||||
|
MPI_Request request;
|
||||||
|
MPI_Isend( &s.First(), s.Size(), MyGetMPIType<T>(), dest, 1, MPI_COMM_WORLD, &request);
|
||||||
|
MPI_Request_free (&request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template <class T, int BASE>
|
||||||
|
inline void MyMPI_IRecv (FlatArray<T, BASE> s, int dest)
|
||||||
|
{
|
||||||
|
MPI_Request request;
|
||||||
|
MPI_Irecv( &s.First(), s.Size(), MyGetMPIType<T>(), dest, 1, MPI_COMM_WORLD, &request);
|
||||||
|
MPI_Request_free (&request);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,15 +7,7 @@
|
|||||||
#include "incvis.hpp"
|
#include "incvis.hpp"
|
||||||
#include <meshing.hpp>
|
#include <meshing.hpp>
|
||||||
|
|
||||||
#ifdef LINUX
|
|
||||||
// #include <fenv.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
#ifndef WIN32
|
|
||||||
#include <dlfcn.h>
|
|
||||||
#endif
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
@ -24,17 +16,10 @@ namespace netgen
|
|||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
#include <mpi.h>
|
#include <mpi.h>
|
||||||
|
extern void ParallelRun();
|
||||||
namespace netgen
|
|
||||||
{
|
|
||||||
MPI_Group MPI_HIGHORDER_WORLD;
|
|
||||||
MPI_Comm MPI_HIGHORDER_COMM;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "parallelfunc.hpp"
|
|
||||||
|
|
||||||
|
|
||||||
namespace netgen
|
namespace netgen
|
||||||
{
|
{
|
||||||
@ -79,20 +64,8 @@ int main(int argc, char ** argv)
|
|||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
MPI_Init(&argc, &argv);
|
MPI_Init(&argc, &argv);
|
||||||
|
|
||||||
MPI_Comm_size(MPI_COMM_WORLD, &netgen::ntasks);
|
MPI_Comm_size(MPI_COMM_WORLD, &netgen::ntasks);
|
||||||
MPI_Comm_rank(MPI_COMM_WORLD, &netgen::id);
|
MPI_Comm_rank(MPI_COMM_WORLD, &netgen::id);
|
||||||
|
|
||||||
MPI_Group MPI_GROUP_WORLD;
|
|
||||||
|
|
||||||
int n_ho = netgen::ntasks - 1;
|
|
||||||
int * process_ranks = new int[netgen::ntasks-1];
|
|
||||||
for ( int i = 0; i < netgen::ntasks-1; i++ )
|
|
||||||
process_ranks[i] = i+1;
|
|
||||||
|
|
||||||
MPI_Comm_group ( MPI_COMM_WORLD, &MPI_GROUP_WORLD);
|
|
||||||
MPI_Group_incl ( MPI_GROUP_WORLD, n_ho, process_ranks, & netgen::MPI_HIGHORDER_WORLD);
|
|
||||||
MPI_Comm_create ( MPI_COMM_WORLD, netgen::MPI_HIGHORDER_WORLD, & netgen::MPI_HIGHORDER_COMM);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -123,10 +96,6 @@ int main(int argc, char ** argv)
|
|||||||
cout << "You are running the debug version !" << endl;
|
cout << "You are running the debug version !" << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_SUPERLU
|
|
||||||
cout << "Including sparse direct solver SuperLU by Lawrence Berkeley National Laboratory" << endl;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
cout << "Running MPI - parallel using "
|
cout << "Running MPI - parallel using "
|
||||||
@ -134,10 +103,7 @@ int main(int argc, char ** argv)
|
|||||||
<< ((netgen::ntasks > 1) ? "s " : " ") << endl;
|
<< ((netgen::ntasks > 1) ? "s " : " ") << endl;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
;// nodisplay = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// command line arguments:
|
// command line arguments:
|
||||||
@ -205,10 +171,6 @@ int main(int argc, char ** argv)
|
|||||||
if (shellmode)
|
if (shellmode)
|
||||||
internaltcl = false;
|
internaltcl = false;
|
||||||
|
|
||||||
#ifdef PARALLEL
|
|
||||||
internaltcl = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
cout << "Tcl header version = " << TCL_PATCH_LEVEL << endl;
|
cout << "Tcl header version = " << TCL_PATCH_LEVEL << endl;
|
||||||
@ -288,21 +250,9 @@ int main(int argc, char ** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Tcl_Eval (myinterp, (char*)fstr.str().c_str());
|
Tcl_Eval (myinterp, (char*)fstr.str().c_str());
|
||||||
// Tcl_SetVar (myinterp, "exportfiletype", "Neutral Format", 0);
|
|
||||||
Tcl_SetVar (myinterp, "exportfiletype", exportft, 0);
|
Tcl_SetVar (myinterp, "exportfiletype", exportft, 0);
|
||||||
|
|
||||||
|
|
||||||
// For adding an application, parse the file here,
|
|
||||||
// and call the init-procedure below
|
|
||||||
// #define DEMOAPP
|
|
||||||
#ifdef DEMOAPP
|
|
||||||
Tcl_EvalFile (myinterp, "demoapp/demoapp.tcl");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ADDON
|
|
||||||
Tcl_EvalFile (myinterp, "addon/addon.tcl");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SOCKETS
|
#ifdef SOCKETS
|
||||||
Ng_ServerSocketManagerRun();
|
Ng_ServerSocketManagerRun();
|
||||||
#endif
|
#endif
|
||||||
@ -313,24 +263,18 @@ int main(int argc, char ** argv)
|
|||||||
Tcl_DeleteInterp (myinterp);
|
Tcl_DeleteInterp (myinterp);
|
||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
|
|
||||||
// MPI beenden
|
|
||||||
MPI_Barrier(MPI_COMM_WORLD);
|
|
||||||
MPI_Finalize();
|
MPI_Finalize();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Tcl_Exit(0);
|
Tcl_Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef PARALLEL
|
#ifdef PARALLEL
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// main for parallel processors
|
|
||||||
ParallelRun();
|
ParallelRun();
|
||||||
|
|
||||||
// MPI beenden
|
|
||||||
MPI_Barrier(MPI_COMM_WORLD);
|
|
||||||
MPI_Finalize();
|
MPI_Finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -392,32 +336,9 @@ int Tcl_AppInit(Tcl_Interp * interp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
if (NGSolve_Init(interp) == TCL_ERROR)
|
|
||||||
return TCL_ERROR;
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef DEMOAPP
|
|
||||||
extern int DemoApp_Init (Tcl_Interp * interp);
|
|
||||||
if (DemoApp_Init(interp) == TCL_ERROR)
|
|
||||||
{
|
|
||||||
return TCL_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef ADDON
|
|
||||||
extern int AddOn_Init (Tcl_Interp * interp);
|
|
||||||
if (AddOn_Init(interp) == TCL_ERROR)
|
|
||||||
{
|
|
||||||
return TCL_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
#ifdef METIS_OLD
|
|
||||||
extern int NgMetis_Init (Tcl_Interp * interp);
|
|
||||||
if (NgMetis_Init(interp) == TCL_ERROR)
|
|
||||||
{
|
|
||||||
return TCL_ERROR;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef TRAFO
|
#ifdef TRAFO
|
||||||
// extern int Trafo_Init (Tcl_Interp * interp);
|
// extern int Trafo_Init (Tcl_Interp * interp);
|
||||||
|
25
ng/ngpkg.cpp
25
ng/ngpkg.cpp
@ -2657,7 +2657,7 @@ namespace netgen
|
|||||||
|
|
||||||
|
|
||||||
using namespace netgen;
|
using namespace netgen;
|
||||||
void Ng_InitSolutionData (Ng_SolutionData * soldata)
|
void Ng_InitSolutionData (Ng_SolutionData * soldata)
|
||||||
{
|
{
|
||||||
|
|
||||||
soldata -> name = NULL;
|
soldata -> name = NULL;
|
||||||
@ -2951,24 +2951,6 @@ void PlayAnimFile(const char* name, int speed, int maxcnt)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
int Ng_IsParallel (ClientData clientData,
|
|
||||||
Tcl_Interp * interp,
|
|
||||||
int argc, tcl_const char *argv[])
|
|
||||||
{
|
|
||||||
#ifdef PARALLEL
|
|
||||||
int id, rc, ntasks;
|
|
||||||
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
|
||||||
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
|
||||||
if ( ntasks > 1 )
|
|
||||||
Tcl_SetVar (interp, "::parallel_netgen", "1", 0);
|
|
||||||
else
|
|
||||||
Tcl_SetVar (interp, "::parallel_netgen", "0", 0);
|
|
||||||
#else
|
|
||||||
Tcl_SetVar (interp, "::parallel_netgen", "0", 0);
|
|
||||||
#endif
|
|
||||||
return TCL_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Ng_Exit (ClientData clientData,
|
int Ng_Exit (ClientData clientData,
|
||||||
Tcl_Interp * interp,
|
Tcl_Interp * interp,
|
||||||
int argc, tcl_const char *argv[])
|
int argc, tcl_const char *argv[])
|
||||||
@ -3347,11 +3329,6 @@ void PlayAnimFile(const char* name, int speed, int maxcnt)
|
|||||||
(ClientData)NULL,
|
(ClientData)NULL,
|
||||||
(Tcl_CmdDeleteProc*) NULL);
|
(Tcl_CmdDeleteProc*) NULL);
|
||||||
|
|
||||||
Tcl_CreateCommand (interp, "Ng_IsParallel", Ng_IsParallel,
|
|
||||||
(ClientData)NULL,
|
|
||||||
(Tcl_CmdDeleteProc*) NULL);
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Specify the C callback functions for widget creation, display,
|
* Specify the C callback functions for widget creation, display,
|
||||||
* and reshape.
|
* and reshape.
|
||||||
|
@ -146,7 +146,8 @@ void ParallelRun()
|
|||||||
{
|
{
|
||||||
VT_USER_START ("Mesh::ReceiveParallelMesh");
|
VT_USER_START ("Mesh::ReceiveParallelMesh");
|
||||||
mesh.Reset( new netgen::Mesh);
|
mesh.Reset( new netgen::Mesh);
|
||||||
mesh->ReceiveParallelMesh();
|
// mesh->ReceiveParallelMesh();
|
||||||
|
mesh->SendRecvMesh();
|
||||||
VT_USER_END ("Mesh::ReceiveParallelMesh");
|
VT_USER_END ("Mesh::ReceiveParallelMesh");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
#define FILE_PARALLELFUNC
|
#define FILE_PARALLELFUNC
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void ParallelRun();
|
void ParallelRun();
|
||||||
|
|
||||||
void LoadPDEParallel ( const char* filename );
|
void LoadPDEParallel ( const char* filename );
|
||||||
|
Loading…
Reference in New Issue
Block a user