Package org.apache.sysds.runtime.controlprogram.parfor

# Class TaskPartitionerFactoring

java.lang.Object
org.apache.sysds.runtime.controlprogram.parfor.TaskPartitioner
org.apache.sysds.runtime.controlprogram.parfor.TaskPartitionerFactoring

Direct Known Subclasses:
  `TaskPartitionerFactoringCmax`, `TaskPartitionerFactoringCmin`

public class TaskPartitionerFactoring extends TaskPartitioner
This factoring task partitioner virtually iterates over the given FOR loop (from, to, incr), creates iterations and group them to tasks. Note that the task size is used here. The tasks are created with decreasing size for good load balance of heterogeneous tasks. See the original paper for details: [Susan Flynn Hummel, Edith Schonberg, Lawrence E. Flynn: Factoring: a practical and robust method for scheduling parallel loops. SC 1991: 610-632]

## Constructor Summary

Constructors
Constructor
Description
`TaskPartitionerFactoring(long taskSize, int numThreads, String iterVarName, IntObject fromVal, IntObject toVal, IntObject incrVal)`

## Method Summary

Modifier and Type
Method
Description
`List<Task>`
`createTasks()`
Creates and returns set of all tasks for given problem at once.
`long`
`createTasks(LocalTaskQueue<Task> queue)`
Creates set of all tasks for given problem, but streams them directly into task queue.

### Methods inherited from class org.apache.sysds.runtime.controlprogram.parfor.TaskPartitioner

`getNumIterations`

### Methods inherited from class java.lang.Object

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### TaskPartitionerFactoring

public TaskPartitionerFactoring(long taskSize, int numThreads, String iterVarName, IntObject fromVal, IntObject toVal, IntObject incrVal)

## Method Details

### createTasks

public List<Task> createTasks()
Description copied from class: `TaskPartitioner`
Creates and returns set of all tasks for given problem at once.

Specified by:
  `createTasks` in class `TaskPartitioner`
Returns:
  list of tasks

### createTasks

public long createTasks(LocalTaskQueue<Task> queue)
Description copied from class: `TaskPartitioner`
Creates set of all tasks for given problem, but streams them directly into task queue. This allows for more tasks than fitting in main memory.

Specified by:
  `createTasks` in class `TaskPartitioner`
Parameters:
  `queue` - queue of takss
Returns:
  ?