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
`TaskPartitionerFactoring​(long taskSize, int numThreads, String iterVarName, IntObject fromVal, IntObject toVal, IntObject incrVal)`

### Method Summary

All Methods Instance Methods Concrete Methods
`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 Detail

#### TaskPartitionerFactoring

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

### Method Detail

#### 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:
  ?