|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apfloat.internal.FloatElementaryModMath
org.apfloat.internal.FloatModMath
org.apfloat.internal.FloatTableFNTStrategy
org.apfloat.internal.FloatParallelFNTStrategy
public abstract class FloatParallelFNTStrategy
Common methods to calculate Fast Number Theoretic Transforms in parallel using multiple threads.
Note that to get any performance gain from running many threads in parallel, the JVM must be executing native threads. If the JVM is running in green threads mode, there is no advantage of having multiple threads, as the JVM will in fact execute just one thread and divide its time to multiple simulated threads.
Constructor Summary | |
---|---|
protected |
FloatParallelFNTStrategy()
Default constructor. |
Method Summary | |
---|---|
static Object |
getMemoryLock(long length)
Get an object on which to synchronize data storage access. |
protected void |
multiplyElements(ArrayAccess arrayAccess,
int startRow,
int rows,
int columns,
float w,
float scaleFactor)
Multiply each matrix element (i, j) by wi * j * scaleFactor . |
protected void |
transformRows(int length,
int count,
boolean isInverse,
ArrayAccess arrayAccess,
float[] wTable,
int[] permutationTable)
Transform the rows of the data matrix. |
Methods inherited from class org.apfloat.internal.FloatTableFNTStrategy |
---|
getTransformLength, inverseTableFNT, inverseTransform, tableFNT, transform |
Methods inherited from class org.apfloat.internal.FloatModMath |
---|
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negate |
Methods inherited from class org.apfloat.internal.FloatElementaryModMath |
---|
getModulus, modAdd, modMultiply, modSubtract, setModulus |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected FloatParallelFNTStrategy()
Method Detail |
---|
public static Object getMemoryLock(long length)
length
is more than the memory treshold, use shared memory,
otherwise create a dummy lock that will not cause any real synchronization.
The memory threshold is determined using
ApfloatContext.getMemoryTreshold()
.
length
- The length of data that will be accessed.
protected void multiplyElements(ArrayAccess arrayAccess, int startRow, int rows, int columns, float w, float scaleFactor) throws ApfloatRuntimeException
(i, j)
by wi * j * scaleFactor
.
The matrix size is n1 x n2.
arrayAccess
- The memory array to multiply.startRow
- Which row in the whole matrix the starting row in the arrayAccess
is.rows
- The number of rows in the arrayAccess
to multiply.columns
- The number of columns in the matrix (= n2).w
- The n:th root of unity (where n = n1 * n2).scaleFactor
- An extra factor by which all elements are multiplied.
ApfloatRuntimeException
protected void transformRows(int length, int count, boolean isInverse, ArrayAccess arrayAccess, float[] wTable, int[] permutationTable) throws ApfloatRuntimeException
ApfloatContext.getNumberOfProcessors()
.
length
- Length of one transform (one row).count
- Number of rows.isInverse
- true
if an inverse transform is performed, false
if a forward transform is performed.arrayAccess
- The memory array to split to rows and to transform.wTable
- Table of powers of n:th root of unity (where n is the transform length
).permutationTable
- Table of permutation indexes, or null
if no permutation should be done.
ApfloatRuntimeException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |