override public void after_initialize()
 {
     // Inicializar o comunicador MPI.
     comm          = this.Communicator;
     size_reducers = this.UnitSize["source"];
     rank_reducers = this.UnitRanks["source"];
 }
Exemplo n.º 2
0
        } = 1000 * 60;                                                                  // one minute

        public static void Initialise(MPI.Intracommunicator c, bool preserveTimeline = false)
        {
            comm = c;
            if (preserveTimeline)
            {
                records = new List <SpanRecord>();
            }
        }
Exemplo n.º 3
0
        //MPI.RequestList requestList;
        //List<MPI.Request> requests;

        override public void after_initialize()
        {
            // Inicializar o comunicador MPI.
            comm = this.Communicator;

            // Lista de requisições para controlar o progresso da comunicação.
            //requestList = new MPI.RequestList();
        }
Exemplo n.º 4
0
 private void mpi_start()
 {
     string[] args = System.Environment.GetCommandLineArgs();
     mpi       = new MPI.Environment(ref args);
     worldcomm = MPI.Communicator.world;
     np        = worldcomm.Size;
     node      = worldcomm.Rank;
     ntdivnp   = ((nx * ny) / np) * nz;
 }
Exemplo n.º 5
0
 private void mpi_start()
 {
     string[] args = System.Environment.GetCommandLineArgs();
     mpi       = new MPI.Environment(ref args);
     worldcomm = MPI.Communicator.world; //call MPI_INIT(IERROR)
     num       = worldcomm.Size;         //call MPI_COMM_SIZE(MPI_COMM_WORLD, num, IERROR)
     node      = worldcomm.Rank;         //call MPI_COMM_RANK(MPI_COMM_WORLD, id, IERROR)
     ndim      = nodedim(num);
 }
Exemplo n.º 6
0
        public static int[] GetMaxRankOnAllNodes(this MPI.Intracommunicator communicator)
        {
            string[] processors = communicator.Allgather <string>(MPI.Environment.ProcessorName).Distinct().ToArray();
            int[]    maxRanks   = new int[processors.Length];

            for (int i = 0; i < processors.Length; i++)
            {
                maxRanks[i] = GetMaxRankOnNode(communicator, processors[i]);
            }

            return(maxRanks);
        }
Exemplo n.º 7
0
 private void mpi_start()
 {
     string[] args = System.Environment.GetCommandLineArgs();
     mpi       = new MPI.Environment(ref args);
     worldcomm = MPI.Communicator.world;   //call MPI_INIT(IERROR)
     num       = worldcomm.Size + npDebug; //call MPI_COMM_SIZE(MPI_COMM_WORLD, num, IERROR)
     id        = worldcomm.Rank;           //call MPI_COMM_RANK(MPI_COMM_WORLD, id, IERROR)
     ndim      = nodedim(num);
     //if (!convertdouble) {
     //dp_type = MPI_DOUBLE_PRECISION
     //} else {
     //dp_type = MPI_REAL
     //}
 }
Exemplo n.º 8
0
        public static int GetMaxRankOnNode(this MPI.Intracommunicator communicator, string processorName)
        {
            string[] processers = communicator.Allgather <string>(MPI.Environment.ProcessorName);

            for (int i = processers.Length - 1; i >= 0; i--)
            {
                if (processers[i] == processorName)
                {
                    return(i);
                }
            }

            throw new ApplicationException("An error occured finding the max rank on processor");
        }
Exemplo n.º 9
0
        public static void SaveToHtml(string outputPath = "Timeline.html")
        {
            if (SpanTimer.comm == null)
            {
                return;
            }
            const int root = 0;

            MPI.Intracommunicator comm = SpanTimer.comm;
            // temporarily disable logging
            SpanTimer.comm = null;
            var allRecords = comm.Gather(records, root);

            if (comm.Rank == root)
            {
                SaveToHtml(outputPath, allRecords, allowOpenSpans: false);
            }
            // re-enable logging
            SpanTimer.comm = comm;
        }
Exemplo n.º 10
0
        private void mpi_start()
        {
            int color, nc;

            string[] args = System.Environment.GetCommandLineArgs();
            mpi         = new MPI.Environment(ref args);
            worldcomm   = MPI.Communicator.world;
            total_nodes = worldcomm.Size + npDebug;
            node        = worldcomm.Rank;

            nc       = Convert.ToInt32(Math.Sqrt(total_nodes) + 0.00001d);
            maxcells = Convert.ToInt32(Math.Sqrt(total_nodes));

            if (nc > maxcells)
            {
                nc = maxcells;
            }
            if (node >= nc * nc)
            {
                active = false;
                color  = 1;
            }
            else
            {
                active = true;
                color  = 0;
            }

            comm_setup = (MPI.Intracommunicator)worldcomm.Split(color, node);//call mpi_comm_split[MPI_COMM_WORLD,color,node,comm_setup,error];

            if (!active)
            {
                return;
            }

            no_nodes   = comm_setup.Size + npDebug;                 //call mpi_comm_size[comm_setup, no_nodes, error];
            comm_solve = (MPI.Intracommunicator)comm_setup.Clone(); //call mpi_comm_dup[comm_setup, comm_solve, error];
            comm_rhs   = (MPI.Intracommunicator)comm_setup.Clone(); //call mpi_comm_dup[comm_setup, comm_rhs, error];

            root = 0;
        }
Exemplo n.º 11
0
 override public void after_initialize()
 {
     // Inicializar o comunicador MPI.
     comm = this.Communicator;
 }
Exemplo n.º 12
0
 public static int GetNumberOfNodes(this MPI.Intracommunicator communicator)
 {
     string[] processors = communicator.Allgather <string>(MPI.Environment.ProcessorName).Distinct().ToArray();
     return(processors.Length);
 }
Exemplo n.º 13
0
 override public void after_initialize()
 {
     comm = this.Communicator;
 }