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, transformcreateWTable, getForwardNthRoot, getInverseNthRoot, modDivide, modInverse, modPow, negategetModulus, modAdd, modMultiply, modSubtract, setModulusclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetTransformLength, inverseTransform, transformprotected ParallelRunner parallelRunner
public void setParallelRunner(ParallelRunner parallelRunner)
ParallelNTTStrategysetParallelRunner in interface ParallelNTTStrategyparallelRunner - 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.ApfloatRuntimeExceptionprotected 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