Package edu.jas.gb
Class GroebnerBaseDistributedHybridMPI<C extends edu.jas.structure.RingElem<C>>
- java.lang.Object
-
- edu.jas.gb.GroebnerBaseAbstract<C>
-
- edu.jas.gb.GroebnerBaseDistributedHybridMPI<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.
-
Constructor Summary
Constructors Constructor Description GroebnerBaseDistributedHybridMPI()
Constructor.GroebnerBaseDistributedHybridMPI(int threads)
Constructor.GroebnerBaseDistributedHybridMPI(int threads, int threadsPerNode)
Constructor.GroebnerBaseDistributedHybridMPI(int threads, int threadsPerNode, edu.jas.gb.PairList<C> pl)
Constructor.GroebnerBaseDistributedHybridMPI(int threads, int threadsPerNode, edu.jas.util.ThreadPool pool)
Constructor.GroebnerBaseDistributedHybridMPI(int threads, int threadsPerNode, edu.jas.util.ThreadPool pool, edu.jas.gb.PairList<C> pl)
Constructor.GroebnerBaseDistributedHybridMPI(int threads, edu.jas.util.ThreadPool pool)
Constructor.
-
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
-
-
-
-
Field Detail
-
debug
public 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:
- Constant Field Values
-
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:
- Constant Field Values
-
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() throws java.io.IOException
Constructor.- Throws:
java.io.IOException
-
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.
-
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
-
-