Package edu.jas.gb

Class GroebnerBaseDistributedHybridMPI<C extends edu.jas.structure.RingElem<C>>

  • Type Parameters:
    C - coefficient type
    All Implemented Interfaces:
    edu.jas.gb.GroebnerBase<C>, java.io.Serializable

    public class GroebnerBaseDistributedHybridMPI<C extends edu.jas.structure.RingElem<C>>
    extends edu.jas.gb.GroebnerBaseAbstract<C>
    Groebner Base distributed hybrid algorithm with MPI. Implements a distributed memory with multi-core CPUs parallel version of Groebner bases with MPI. Using pairlist class, distributed multi-threaded tasks do reduction, one communication channel per remote node.
    Author:
    Heinz Kredel
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int ackTag
      Message tag for acknowledgments.
      boolean debug  
      protected static int DEFAULT_THREADS
      Default number of threads.
      protected static int DEFAULT_THREADS_PER_NODE
      Default number of threads per compute node.
      protected mpi.Comm engine  
      static int pairTag
      Message tag for pairs.
      protected edu.jas.util.ThreadPool pool
      Pool of threads to use.
      static int resultTag
      Message tag for results.
      protected int threads
      Number of threads to use.
      protected int threadsPerNode
      Number of threads per node to use.
      • Fields inherited from class edu.jas.gb.GroebnerBaseAbstract

        blas, red, strategy
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void clientPart​(int rank)
      GB distributed client.
      java.util.List<edu.jas.poly.GenPolynomial<C>> GB​(int modv, java.util.List<edu.jas.poly.GenPolynomial<C>> F)
      Distributed Groebner base.
      java.util.List<edu.jas.poly.GenPolynomial<C>> GBmaster​(int modv, java.util.List<edu.jas.poly.GenPolynomial<C>> F)
      Distributed hybrid Groebner base.
      java.util.List<edu.jas.poly.GenPolynomial<C>> minimalGB​(java.util.List<edu.jas.poly.GenPolynomial<C>> Fp)
      Minimal ordered groebner basis.
      void terminate()
      Cleanup and terminate.
      • Methods inherited from class edu.jas.gb.GroebnerBaseAbstract

        cancel, commonZeroTest, constructUnivariate, criterion3, extGB, extGB, GB, GB, GB, isGB, isGB, isGB, isGB, isGB, isGB, isGBidem, isGBsimple, isMinimalGB, isMinReductionMatrix, isMinReductionMatrix, isReductionMatrix, isReductionMatrix, minimalExtendedGB, normalizeMatrix, normalizeZerosOnes, toString, univariateDegrees
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • debug

        public final boolean debug
      • threads

        protected final int threads
        Number of threads to use.
      • threadsPerNode

        protected final int threadsPerNode
        Number of threads per node to use.
      • pool

        protected final transient edu.jas.util.ThreadPool pool
        Pool of threads to use.
      • engine

        protected final transient mpi.Comm engine
      • pairTag

        public static final int pairTag
        Message tag for pairs.
      • resultTag

        public static final int resultTag
        Message tag for results.
      • ackTag

        public static final int ackTag
        Message tag for acknowledgments.
    • Constructor Detail

      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        Throws:
        java.io.IOException
      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads,
                                                int threadsPerNode)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        threadsPerNode - threads per node to use.
        Throws:
        java.io.IOException
      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads,
                                                edu.jas.util.ThreadPool pool)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        pool - ThreadPool to use.
        Throws:
        java.io.IOException
      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads,
                                                int threadsPerNode,
                                                edu.jas.gb.PairList<C> pl)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        threadsPerNode - threads per node to use.
        pl - pair selection strategy
        Throws:
        java.io.IOException
      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads,
                                                int threadsPerNode,
                                                edu.jas.util.ThreadPool pool)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        threadsPerNode - threads per node to use.
        Throws:
        java.io.IOException
      • GroebnerBaseDistributedHybridMPI

        public GroebnerBaseDistributedHybridMPI​(int threads,
                                                int threadsPerNode,
                                                edu.jas.util.ThreadPool pool,
                                                edu.jas.gb.PairList<C> pl)
                                         throws java.io.IOException
        Constructor.
        Parameters:
        threads - number of threads to use.
        threadsPerNode - threads per node to use.
        pool - ThreadPool to use.
        pl - pair selection strategy
        Throws:
        java.io.IOException
    • Method Detail

      • terminate

        public void terminate()
        Cleanup and terminate.
        Overrides:
        terminate in class edu.jas.gb.GroebnerBaseAbstract<C extends edu.jas.structure.RingElem<C>>
      • GB

        public java.util.List<edu.jas.poly.GenPolynomial<C>> GB​(int modv,
                                                                java.util.List<edu.jas.poly.GenPolynomial<C>> F)
        Distributed Groebner base.
        Parameters:
        modv - number of module variables.
        F - polynomial list.
        Returns:
        GB(F) a Groebner base of F or null, if a IOException occurs or on MPI client part.
      • GBmaster

        public java.util.List<edu.jas.poly.GenPolynomial<C>> GBmaster​(int modv,
                                                                      java.util.List<edu.jas.poly.GenPolynomial<C>> F)
                                                               throws mpi.MPIException,
                                                                      java.io.IOException
        Distributed hybrid Groebner base.
        Parameters:
        modv - number of module variables.
        F - polynomial list.
        Returns:
        GB(F) a Groebner base of F or null, if a IOException occurs.
        Throws:
        mpi.MPIException
        java.io.IOException
      • clientPart

        public void clientPart​(int rank)
                        throws java.io.IOException,
                               mpi.MPIException
        GB distributed client.
        Parameters:
        rank - of the MPI where the server runs on.
        Throws:
        java.io.IOException
        mpi.MPIException
      • minimalGB

        public java.util.List<edu.jas.poly.GenPolynomial<C>> minimalGB​(java.util.List<edu.jas.poly.GenPolynomial<C>> Fp)
        Minimal ordered groebner basis.
        Specified by:
        minimalGB in interface edu.jas.gb.GroebnerBase<C extends edu.jas.structure.RingElem<C>>
        Overrides:
        minimalGB in class edu.jas.gb.GroebnerBaseAbstract<C extends edu.jas.structure.RingElem<C>>
        Parameters:
        Fp - a Groebner base.
        Returns:
        a reduced Groebner base of Fp.