Task Scheduling for Parallel Systems

Task Scheduling for Parallel Systems Oliver Sinnen Electrical and Computer Engineering University of Auckland www.ece.auckland.ac.nz/~sinnen/ o.sinnen...
Author: Lee Randall
4 downloads 1 Views 588KB Size
Task Scheduling for Parallel Systems Oliver Sinnen Electrical and Computer Engineering University of Auckland www.ece.auckland.ac.nz/~sinnen/ [email protected]

Parallel Programming

Sequential programming

2

Parallel Programming

3

Outline

O. Sinnen, “Task Scheduling for Parallel Systems”, John Wiley, 2007

• I: Introduction to task scheduling – List scheduling

• II: Contention scheduling – Awareness of communication contention in task scheduling

Current research example • III: Generating the Task Graph – Extending OpenMP 4

I: Introduction to task scheduling

Graph representation of program Example:

task graph (DAG) A: B: C: D:

a b c d

= = = =

• •

1 a+1 a*a b+c

Graph representation of program Input of task scheduling

directed acyclic graph (DAG) node (n): sub-task edge (e): dependence (communication) weight: computation w(n) or communication time c(e) 5

I: Introduction to task scheduling

Scheduling Example:

2 processors

+ ex.

ex.

6

I: Introduction to task scheduling

Scheduling constraints Schedule definitions: DAG: G(V,E), node n, edge e • start time: ts(n) ; finish time: tf(n) • processor assignment: proc(n)

Constraints: • Processor constraint: proc(ni)=proc(nj) => ts(ni) ≥ tf(nj) or ts(nj) ≥ tf(ni) • Precedence constraint: for all edges eji of E (from nj to ni) ts(ni) ≥ tf(nj) + c(eji) 7

I: Introduction to task scheduling

Static Task Scheduling Temporal and spatial assignment of sub-tasks to processors at compile time

Goal: find schedule with shortest schedule length (makespan) => NP-hard problem Scheduling heuristics • List scheduling ⇦ • Clustering • Duplication scheduling • Genetic algorithms

8

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

9

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

10

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

11

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

12

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

13

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

14

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

15

I: Introduction to task scheduling

List Scheduling Example:

1. Order nodes of DAG according to a priority, while respecting their dependences 2. Iterate over node list from 1.) and schedule every node to the processor that allows its earliest start time.

Node order: A,C,D,F,B,E,G

16

I: Introduction to task scheduling

Classic system model of task scheduling system model

Properties: • Dedicated system • Dedicated processors • Zero-cost local communication • Communication subsystem • Concurrent communication ⇦ • Fully connected ⇦

e.g. 8 processors

17

II: Contention scheduling

18

II: Contention scheduling

Communication contention contention example

• End-point contention – For Interface

• Most networks not fully connected

classic model

• Network contention – For network links

19

II: Contention scheduling

Network model Sophisticated network graph:

fully connected

switched LAN

Vertices: processors (P) and switches (S) • Static and dynamic networks • End-point and network contention example: 8 dual-processor cluster

Edges: communication links (L) • Undirected edges – Half duplex • Directed edges – Full duplex • Hyperedges – Bus 20

II: Contention scheduling

Edge scheduling Scheduling of edges on links (L) – Likewise nodes on processors •

Routing: – Policies – System dependent routing algorithm returns route, i.e.



Edge scheduled on each link of route – Independent of edge types

• •

Causality Heterogeneity

21

II: Contention scheduling

Contention aware scheduling • Target system represented as network graph • Integration of edge scheduling into task scheduling – Only impact on start time of node: – ts(ni) ≥ tf(eji) (precedence constraint)

without contention 22

with contention

III: Generating the task graph

23

III: Generating the Task Graph

Sub-task decomposition and dependence analysis

Until here • Task Graph is considered as given How to generate Task Graph for an application specification/ program? • •

Dependence analysis of program (=> compiler) – Very difficult in its general form Annotating a program 24

III: Generating the Task Graph

Using OpenMP like directives OpenMP • Open standard for shared-memory programming • Compiler directives used with FORTRAN, C/C++, Java • Thread based Examples (in C) #pragma omp parallel for for (i=0; i Java/OpenMP //omp parallel tasks { // omp task A 2 { Block_Code _A } // omp task B 4 dependsOn (A) { Block_Code _B } // omp task C 2 dependsOn (A) { Block_Code _C } // omp task D 3 dependsOn (A) { Block_Code _D } // omp task E 6 dependsOn (B) { Block_Code _E } // omp task F 7 dependsOn (C,D) { Block_Code _F } // omp task G 5 dependsOn (B,E,F) { Block_Code _G } }

Code with tasks directives

P1 2

P2

0 A

A

D

B

5 4

2 B

3 C

C D

Task Scheduling

Parsing 6

10

E

Code Generation F

7 E

F 15 G

5 G

Tasks Graph representation

Schedule of the tasks graph

27

boolean taskADone = false; boolean taskDDone = false; boolean taskCDone = false; boolean taskBDone = false; boolean taskFDone = false; //omp parallel sections { //omp section { Block_Code_A taskADone = true; Block _Code_D taskDDone = true; Block _Code_C taskCDone = true; while (!taskBDone ){} Block _Code_E while (!taskBDone ){} while (!taskFDone ){} Block _Code_G } //omp section { while (!taskADone ){} Block_Code_B taskBDone = true; while (!taskCDone ){} while (!taskDDone ){} Block _Code_F taskFDone = true; } }

Codes with sections directives

III: Generating the Task Graph

Task Graph visualisation in Eclipse IDE

Left: Annotated Java Code Right: Visualisation of dependence structure

28

Conclusion My research in Parallel Computing Task Scheduling O. Sinnen, “Task Scheduling for Parallel Systems”, John Wiley, 2007

Reconfigurable hardware Desktop parallelisation => Nasser Giacaman Contact Department of Electrical and Computer Engineering University of Auckland www.ece.auckland.ac.nz/~sinnen/ [email protected] 29

Suggest Documents