Presentation is loading. Please wait.

Presentation is loading. Please wait.

JICOS A Java-Centric Distributed Computing Service

Similar presentations


Presentation on theme: "JICOS A Java-Centric Distributed Computing Service"— Presentation transcript:

1 JICOS A Java-Centric Distributed Computing Service
Computer Science Department UC Santa Barbara

2 Introduction Project Goals
Minimize job completion time despite large communication latency

3 Introduction Project Goals
Minimize job completion time despite large communication latency Jobs complete with high probability despite faulty components

4 Introduction Project Goals
Minimize job completion time despite large communication latency Jobs complete with high probability despite faulty components Application program is oblivious to: Number of processors Inter-process communication Hardware faults

5 Introduction Fundamental Issue: Heterogeneity
OS1 OS2 OS3 OS4 OS5 M1 M2 M3 M4 M5 Heterogeneous machine/OS Functionally Homogeneous JVM

6 JICOS Attributes Heterogeneous hardware & OS Easy to program
Fault tolerant compute servers (hosts) Adaptively parallel Small-grain parallel computation

7 Overview Computational model API Architecture Performance
Benefit summary Plans

8 Computational Model DAC task graph
f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

9 Computational Model Embedded in an Environment
Read/Write shared object f(4) Read input object f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

10 Overview Computational model API Architecture Performance
Benefit summary Plans

11 API f(3) f(2) + f(1) f(0) f(4) 2 task classes: F Sum

12 API f(4) public class F extends Task { private int n;
public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(4)

13 API + f(4) f(3) f(2) public class F extends Task { private int n;
public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(4) f(3) f(2) +

14 API + + f(3) f(2) f(2) f(1) public class F extends Task {
private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(3) f(2) f(2) f(1) + +

15 API + + + f(2) f(2) f(1) f(1) f(0) public class F extends Task {
private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(2) f(2) f(1) f(1) f(0) + + +

16 API + + + + f(2) f(1) f(1) f(0) f(1) f(0)
public class F extends Task { private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(2) f(1) f(1) f(0) f(1) f(0) + + + +

17 API + + + + f(1) f(1) f(0) f(1) f(0) public class F extends Task {
private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(1) f(1) f(0) f(1) f(0) + + + +

18 API + + + + f(1) f(0) f(1) f(0) public class F extends Task {
private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(1) f(0) f(1) f(0) + + + +

19 API + + + + f(0) f(1) f(0) public class F extends Task {
private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(0) f(1) f(0) + + + +

20 API + + + + f(1) f(0) public class Sum extends Task {
public Object execute(Env e) { Integer I = ((Integer) getInput(0)); Integer J = ((Integer) getInput(1)); int sum = I.intValue() + J.intValue(); return new Integer( sum ); } f(1) f(0) + + + +

21 API + + + f(1) f(0) public class F extends Task { private int n;
public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(1) f(0) + + +

22 API + + + f(0) public class F extends Task { private int n;
public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(0) + + +

23 API + + + public class Sum extends Task {
public Object execute(Env e) { Integer I = ((Integer) getInput(0)); Integer J = ((Integer) getInput(1)); int sum = I.intValue() + J.intValue(); return new Integer( sum ); } + + +

24 API + + public class Sum extends Task { public Object execute(Env e) {
Integer I = ((Integer) getInput(0)); Integer J = ((Integer) getInput(1)); int sum = I.intValue() + J.intValue(); return new Integer( sum ); } + +

25 API + public class Sum extends Task { public Object execute(Env e) {
Integer I = ((Integer) getInput(0)); Integer J = ((Integer) getInput(1)); int sum = I.intValue() + J.intValue(); return new Integer( sum ); } +

26 API recap + + + + f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0)
public class F extends Task { private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

27 API recap + + + + f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0)
public class F extends Task { private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

28 API recap + + + + f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0)
public class F extends Task { private int n; public F(int n) { this.n = n; } public Object execute(Env e) { if ( n < 2 ) { return new Integer( 1 ); else { compute( new F( n-1 ) ); compute( new F( n-2 ) ); return new Sum(); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

29 API recap + + + + f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0)
public class Sum extends Task { public Object execute(Env e) { int i = ((Integer) getInput(0)); int j = ((Integer) getInput(1)); return new Integer( I + j ); } f(4) f(3) f(2) f(2) f(1) f(1) f(0) f(1) f(0) + + + +

30 Overview Computational model API Architecture Performance
Benefit summary Plans

31 Architecture Goals Virtualize compute cycles
Store/coordinate partial results Self-organizing Independent of hardware/OS Scale from LAN to Internet

32 Architecture … JICOS has 3 service component classes:
Hosting Service Provider (HSP): clients interact solely with the HSP. HSP manages other service components Task server A task space Host Executes tasks

33 Architecture … Hosting Service Provider Client

34 Architecture … Adaptive parallelism HSP CLIENT

35 Architecture … Tolerates faulty Hosts HSP CLIENT

36 Architecture Latency hiding/reduction
1 Task caching Task pre-fetch Task server computation 2 5 3 8 6 7 4 9 10 11 12 13

37 Architecture Latency hiding/reduction
1 Task caching 2 5 3 8 6 7 4 9 10 11 12 13

38 Architecture Latency hiding/reduction
1 Task caching Task pre-fetch Issues pre-fetch 2 5 3 8 6 7 4 9 10 11 12 13

39 Architecture Latency hiding/reduction
1 Root task Task is cached Task issues pre-fetch Task is pre-fetched 2 5 3 8 6 7 4 9 10 11 12 13

40 Architecture Latency hiding/reduction
1 Task caching Task pre-fetch Issues pre-fetch Is pre-fetched Task server computation 2 5 3 8 6 7 4 9 10 11 12 13

41 Overview Computational model API Architecture Performance
Benefit summary Plans

42 JICOS Speedup:150-City TSP
1 processor: 6 hours, 18 minutes 52 processors: 8 minutes 16K Tasks, average task time: 1.5 seconds

43 Overview Computational model API Architecture Performance
Benefit summary Plans

44 Benefit Summary API is easy to use Heterogeneous hardware & OS
Adaptive parallelism Tolerates faulty hosts Hides/reduces communication latency Small-grain parallel computation

45 Overview Computational model API Architecture Performance
Benefit summary Plans

46 Possible Projects Application as a Service
Non-Java Program Non-Java Interface Jicos application as web service: allows non-Java programs to “use” Jicos. XML-encoded TSP instance WEB SERVER TSP JAVA JICOS

47 Possible Project Application Servers
SAT TSP JICOS ? ILP

48 Possible Project Web Server Web Server Web Server TSP Server IP Server
SAT Server JICOS JICOS JICOS

49 Thanks! Questions? http://cs.ucsb.edu/projects/jicos

50

51

52 Introduction “Listen to the technology!” Carver Mead

53 Introduction “Listen to the technology!” Carver Mead
What is the technology telling us?

54 Introduction “Listen to the technology!” Carver Mead
What is the technology telling us? Internet’s idle cycles/sec growing rapidly

55 Introduction “Listen to the technology!” Carver Mead
What is the technology telling us? Internet’s idle cycles/sec growing rapidly Bandwidth is increasing & getting cheaper Communication latency is not decreasing

56 Introduction “Listen to the technology!” Carver Mead
What is the technology telling us? Internet’s idle cycles/sec growing rapidly Bandwidth increasing & getting cheaper Communication latency is not decreasing Human technology is getting neither cheaper nor faster.

57 Introduction Fundamental Issue: Heterogeneity
OS1 OS2 OS3 OS4 OS5 M1 M2 M3 M4 M5 Heterogeneous machine/OS

58 Plans More performance experiments More NP-hard optimizations
Larger (SDSC Data Star 256 processor) Heterogeneous More NP-hard optimizations Investigate upper & lower bounds Use Jini to enable: Secure communication (SSL) Dynamic service discovery Task Servers Fault-tolerant Adaptive network topology More programming models


Download ppt "JICOS A Java-Centric Distributed Computing Service"

Similar presentations


Ads by Google