public abstract class LongParallelFNTStrategy extends LongTableFNTStrategy implements ParallelNTTStrategy
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.
Modifier and Type | Field and Description |
---|---|
protected ParallelRunner |
parallelRunner
The parallel runner.
|
Modifier | Constructor and Description |
---|---|
protected |
LongParallelFNTStrategy()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
protected void |
multiplyElements(ArrayAccess arrayAccess,
int startRow,
int rows,
int columns,
long w,
long scaleFactor)
Multiply each matrix element
(i, j) by wi * j * scaleFactor . |
void |
setParallelRunner(ParallelRunner parallelRunner)
Set the parallel runner to be used when executing the transform.
|
protected void |
transformRows(int length,
int count,
boolean isInverse,
ArrayAccess arrayAccess,
long[] wTable,
int[] permutationTable)
Transform the rows of the data matrix.
|
getTransformLength, inverseTableFNT, inverseTransform, tableFNT, transform
createWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negate
getModulus, modAdd, modMultiply, modSubtract, setModulus
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getTransformLength, inverseTransform, transform
protected ParallelRunner parallelRunner
public void setParallelRunner(ParallelRunner parallelRunner)
ParallelNTTStrategy
setParallelRunner
in interface ParallelNTTStrategy
parallelRunner
- The parallel runner.protected void multiplyElements(ArrayAccess arrayAccess, int startRow, int rows, int columns, long w, long 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, long[] 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
Copyright © 2011. All Rights Reserved.