Commit d398ab9b authored by Vít Hanousek's avatar Vít Hanousek
Browse files

Hack to force linear distribution in MPI communicator

parent 2eac08f3
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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);
        };

+3 −3
Original line number Diff line number Diff line
@@ -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();

@@ -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();

@@ -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);
+6 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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 >());