Package edu.jas.gb

Class GroebnerBaseDistributedHybridEC<C extends RingElem<C>>

java.lang.Object
edu.jas.gb.GroebnerBaseAbstract<C>
edu.jas.gb.GroebnerBaseDistributedHybridEC<C>
Type Parameters:
C - coefficient type
All Implemented Interfaces:
GroebnerBase<C>, Serializable

public class GroebnerBaseDistributedHybridEC<C extends RingElem<C>> extends GroebnerBaseAbstract<C>
Groebner Base distributed hybrid algorithm. Implements a distributed memory with multi-core CPUs parallel version of Groebner bases with executable channels. Using pairlist class, distributed multi-threaded tasks do reduction, one communication channel per remote node.
See Also:
  • Field Details

    • logger

      private static final org.apache.logging.log4j.Logger logger
    • debug

      private static final boolean debug
    • threads

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

      protected static final int DEFAULT_THREADS
      Default number of threads.
      See Also:
    • threadsPerNode

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

      protected static final int DEFAULT_THREADS_PER_NODE
      Default number of threads per compute node.
      See Also:
    • pool

      protected final transient ExecutorService pool
      Pool of threads to use.
    • DEFAULT_PORT

      protected static final int DEFAULT_PORT
      Default server port.
      See Also:
    • DHT_PORT

      protected final int DHT_PORT
      Default distributed hash table server port.
    • mfile

      protected final String mfile
      machine file to use.
    • port

      protected final int port
      Server port to use.
    • dtp

      private final transient DistThreadPool dtp
      Distributed thread pool to use.
    • dhts

      private final transient DistHashTableServer<Integer> dhts
      Distributed hash table server to use.
    • pairTag

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

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

      public static final Integer ackTag
      Message tag for acknowledgments.
  • Constructor Details

    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile)
      Constructor.
      Parameters:
      mfile - name of the machine file.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      port - server port to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, int threadsPerNode, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      threadsPerNode - threads per node to use.
      port - server port to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, ExecutorService pool, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      pool - ExecutorService to use.
      port - server port to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, int threadsPerNode, PairList<C> pl, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      threadsPerNode - threads per node to use.
      pl - pair selection strategy
      port - server port to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, int threadsPerNode, ExecutorService pool, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      threadsPerNode - threads per node to use.
      port - server port to use.
    • GroebnerBaseDistributedHybridEC

      public GroebnerBaseDistributedHybridEC(String mfile, int threads, int threadsPerNode, ExecutorService pool, PairList<C> pl, int port)
      Constructor.
      Parameters:
      mfile - name of the machine file.
      threads - number of threads to use.
      threadsPerNode - threads per node to use.
      pool - ExecutorService to use.
      pl - pair selection strategy
      port - server port to use.
  • Method Details

    • terminate

      public void terminate()
      Cleanup and terminate ExecutorService.
      Overrides:
      terminate in class GroebnerBaseAbstract<C extends RingElem<C>>
    • terminate

      public void terminate(boolean shutDown)
      Terminates the distributed thread pools.
      Parameters:
      shutDown - true, if shut-down of the remote executable servers is requested, false, if remote executable servers stay alive.
    • GB

      public List<GenPolynomial<C>> GB(int modv, List<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.
    • GBMaster

      List<GenPolynomial<C>> GBMaster(int modv, List<GenPolynomial<C>> F)
      Distributed hybrid Groebner base.
      Parameters:
      modv - number of module variables.
      F - non empty monic polynomial list without zeros.
      Returns:
      GB(F) a Groebner base of F or null, if a IOException occurs.
    • clientPart

      public static <C extends RingElem<C>> void clientPart(String host, int threadsPerNode, int port, int dhtport) throws IOException
      GB distributed client part.
      Parameters:
      host - the server runs on.
      port - the server runs.
      dhtport - of the DHT server.
      Throws:
      IOException
    • minimalGB

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