Loading src/TNL/Communicators/MpiCommunicator.h +15 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,21 @@ namespace Communicators { //more information in MPI documentation static void DimsCreate(int nproc, int dim, int *distr) { /***HACK for linear distribution***/ int sum=0; for(int i=0;i<dim;i++) sum+=distr[i]; if(sum==0) //uživatel neovlivňuje distribuci { std::cout << "vynucuji distribuci" <<std::endl; for(int i=0;i<dim-1;i++) { distr[i]=1; } distr[dim-1]=0; } /***END OF HACK***/ MPI_Dims_create(nproc, dim, distr); }; Loading src/TNL/Meshes/DistributedMeshes/DistributedGridIO.h +3 −3 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> newMesh->setOrigin(origin+TNL::Containers::tnlDotProduct(spaceSteps,localBegin)); File meshFile; meshFile.open( fileName+String("-mesh-")+distrGrid->printProcessCoords(),IOMode::write); meshFile.open( fileName+String("-mesh-")+distrGrid->printProcessCoords()+String(".tnl"),IOMode::write); newMesh->save( meshFile ); meshFile.close(); Loading @@ -103,7 +103,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> CopyEntitiesHelper<MeshFunctionType>::Copy(meshFunction,newMeshFunction,localBegin,zeroCoord,localSize); File file; file.open( fileName+String("-")+distrGrid->printProcessCoords(), IOMode::write ); file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), IOMode::write ); bool ret=newMeshFunction.save(file); file.close(); Loading Loading @@ -140,7 +140,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> zeroCoord.setValue(0); File file; file.open( fileName+String("-")+distrGrid->printProcessCoords(), IOMode::read ); file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), IOMode::read ); bool result=newMeshFunction.boundLoad(file); file.close(); CopyEntitiesHelper<MeshFunctionType>::Copy(newMeshFunction,meshFunction,zeroCoord,localBegin,localSize); Loading src/UnitTests/Mpi/DistributedGridTest_3D.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -589,7 +589,7 @@ void check_Inner_3D(int rank, GridType grid, DofType dof, typename DofType::Real /* * Light check of 3D distributed grid and its synchronization. * expected 9 processors * expected 27 processors */ typedef MpiCommunicator CommunicatorType; typedef Grid<3,double,Host,int> MeshType; Loading Loading @@ -644,7 +644,11 @@ class DistributedGirdTest_3D : public ::testing::Test { typename DistributedGridType::CoordinatesType overlap; overlap.setValue(1); distrgrid=new DistributedGridType(); distrgrid->template setGlobalGrid<CommunicatorType>(globalGrid,overlap); int distr[2]; distr[0]=3; distr[1]=3; distr[2]=3; distrgrid->template setGlobalGrid<CommunicatorType>(globalGrid,overlap,distr); distrgrid->SetupGrid(*gridptr); dof=new DofType(gridptr->template getEntitiesCount< Cell >()); Loading Loading
src/TNL/Communicators/MpiCommunicator.h +15 −0 Original line number Diff line number Diff line Loading @@ -114,6 +114,21 @@ namespace Communicators { //more information in MPI documentation static void DimsCreate(int nproc, int dim, int *distr) { /***HACK for linear distribution***/ int sum=0; for(int i=0;i<dim;i++) sum+=distr[i]; if(sum==0) //uživatel neovlivňuje distribuci { std::cout << "vynucuji distribuci" <<std::endl; for(int i=0;i<dim-1;i++) { distr[i]=1; } distr[dim-1]=0; } /***END OF HACK***/ MPI_Dims_create(nproc, dim, distr); }; Loading
src/TNL/Meshes/DistributedMeshes/DistributedGridIO.h +3 −3 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> newMesh->setOrigin(origin+TNL::Containers::tnlDotProduct(spaceSteps,localBegin)); File meshFile; meshFile.open( fileName+String("-mesh-")+distrGrid->printProcessCoords(),IOMode::write); meshFile.open( fileName+String("-mesh-")+distrGrid->printProcessCoords()+String(".tnl"),IOMode::write); newMesh->save( meshFile ); meshFile.close(); Loading @@ -103,7 +103,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> CopyEntitiesHelper<MeshFunctionType>::Copy(meshFunction,newMeshFunction,localBegin,zeroCoord,localSize); File file; file.open( fileName+String("-")+distrGrid->printProcessCoords(), IOMode::write ); file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), IOMode::write ); bool ret=newMeshFunction.save(file); file.close(); Loading Loading @@ -140,7 +140,7 @@ class DistributedGridIO<MeshFunctionType,LocalCopy> zeroCoord.setValue(0); File file; file.open( fileName+String("-")+distrGrid->printProcessCoords(), IOMode::read ); file.open( fileName+String("-")+distrGrid->printProcessCoords()+String(".tnl"), IOMode::read ); bool result=newMeshFunction.boundLoad(file); file.close(); CopyEntitiesHelper<MeshFunctionType>::Copy(newMeshFunction,meshFunction,zeroCoord,localBegin,localSize); Loading
src/UnitTests/Mpi/DistributedGridTest_3D.cpp +6 −2 Original line number Diff line number Diff line Loading @@ -589,7 +589,7 @@ void check_Inner_3D(int rank, GridType grid, DofType dof, typename DofType::Real /* * Light check of 3D distributed grid and its synchronization. * expected 9 processors * expected 27 processors */ typedef MpiCommunicator CommunicatorType; typedef Grid<3,double,Host,int> MeshType; Loading Loading @@ -644,7 +644,11 @@ class DistributedGirdTest_3D : public ::testing::Test { typename DistributedGridType::CoordinatesType overlap; overlap.setValue(1); distrgrid=new DistributedGridType(); distrgrid->template setGlobalGrid<CommunicatorType>(globalGrid,overlap); int distr[2]; distr[0]=3; distr[1]=3; distr[2]=3; distrgrid->template setGlobalGrid<CommunicatorType>(globalGrid,overlap,distr); distrgrid->SetupGrid(*gridptr); dof=new DofType(gridptr->template getEntitiesCount< Cell >()); Loading