mirror of
https://github.com/NGSolve/netgen.git
synced 2025-01-12 22:20:35 +05:00
multithreaded mpi
This commit is contained in:
parent
edd41fbf68
commit
4bd7ba5550
@ -72,8 +72,13 @@
|
||||
{
|
||||
bool parthread = netgen::mparam.parthread;
|
||||
|
||||
// if (netgen::id > 0) parthread = true;
|
||||
#ifdef PARALLEL
|
||||
int provided;
|
||||
MPI_Query_thread(&provided);
|
||||
if (provided < 3)
|
||||
if (netgen::ntasks > 1) parthread = false;
|
||||
cout << "runparallel = " << parthread << endl;
|
||||
#endif
|
||||
|
||||
if (parthread)
|
||||
{
|
||||
|
@ -65,7 +65,7 @@ int main(int argc, char ** argv)
|
||||
#ifdef PARALLEL
|
||||
// MPI_Init(&argc, &argv);
|
||||
|
||||
int required = 0; // MPI_THREAD_MULTIPLE;
|
||||
int required = MPI_THREAD_MULTIPLE;
|
||||
int provided;
|
||||
MPI_Init_thread(&argc, &argv, required, &provided);
|
||||
|
||||
|
@ -1148,6 +1148,11 @@ namespace netgen
|
||||
mesh->SetMinimalH (mparam.minh);
|
||||
}
|
||||
|
||||
#ifdef PARALLEL
|
||||
MyMPI_SendCmd ("bcastparthread");
|
||||
MyMPI_Bcast (mparam.parthread);
|
||||
#endif
|
||||
|
||||
return TCL_OK;
|
||||
}
|
||||
|
||||
|
@ -142,13 +142,10 @@ void ParallelRun()
|
||||
}
|
||||
(*NGS_ParallelRun) (message);
|
||||
}
|
||||
else
|
||||
|
||||
if ( message == "mesh" )
|
||||
else if ( message == "mesh" )
|
||||
{
|
||||
VT_USER_START ("Mesh::ReceiveParallelMesh");
|
||||
mesh.Reset( new netgen::Mesh);
|
||||
// mesh->ReceiveParallelMesh();
|
||||
mesh->SendRecvMesh();
|
||||
VT_USER_END ("Mesh::ReceiveParallelMesh");
|
||||
}
|
||||
@ -161,58 +158,12 @@ void ParallelRun()
|
||||
|
||||
else if ( message == "visualize" )
|
||||
{
|
||||
cout << "p" << id << ": ACHTUNG - alles wieder zumachen, sonst geht nix mehr :)" << endl;
|
||||
cout << "Tcl-disabled" << endl;
|
||||
/*
|
||||
|
||||
// initialize application
|
||||
Tcl_Interp * myinterp = Tcl_CreateInterp ();
|
||||
if (Tcl_AppInit (myinterp) == TCL_ERROR)
|
||||
{
|
||||
cerr << "Exit Netgen due to initialization problem" << endl;
|
||||
exit (1);
|
||||
cout << "parallel message visualize depreciated" << endl;
|
||||
}
|
||||
|
||||
string startfile = ngdir + "/libsrc/parallel/ng_parallel.tcl";
|
||||
|
||||
if (verbose)
|
||||
cout << "Load Tcl-script from " << startfile << endl;
|
||||
|
||||
int errcode = Tcl_EvalFile (myinterp, (char*)startfile.c_str());
|
||||
|
||||
if (errcode)
|
||||
else if ( message == "bcastparthread" )
|
||||
{
|
||||
cout << "Error in Tcl-Script:" << endl;
|
||||
cout << "result = " << myinterp->result << endl;
|
||||
cout << "in line " << myinterp->errorLine << endl;
|
||||
|
||||
if (myinterp->errorLine == 1)
|
||||
cout << "\nMake sure to set environment variable NETGENDIR" << endl;
|
||||
|
||||
exit (1);
|
||||
}
|
||||
|
||||
// lookup user file formats and insert into format list:
|
||||
ARRAY<const char*> userformats;
|
||||
RegisterUserFormats (userformats);
|
||||
|
||||
ostringstream fstr;
|
||||
for (int i = 1; i <= userformats.Size(); i++)
|
||||
fstr << ".ngmenu.file.filetype add radio -label \""
|
||||
<< userformats.Get(i) << "\" -variable exportfiletype\n";
|
||||
|
||||
|
||||
Tcl_Eval (myinterp, (char*)fstr.str().c_str());
|
||||
Tcl_SetVar (myinterp, "exportfiletype", "Neutral Format", 0);
|
||||
|
||||
|
||||
|
||||
Tk_MainLoop();
|
||||
|
||||
|
||||
Tcl_DeleteInterp (myinterp);
|
||||
*/
|
||||
|
||||
MyMPI_Bcast (mparam.parthread);
|
||||
}
|
||||
|
||||
|
||||
@ -398,9 +349,7 @@ void ParallelRun()
|
||||
|
||||
else if ( message == "end" )
|
||||
{
|
||||
// PrintMessage (1, "EXIT");
|
||||
test = false;
|
||||
// end netgen
|
||||
Ng_Exit();
|
||||
}
|
||||
|
||||
@ -415,7 +364,7 @@ void ParallelRun()
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user