Download presentation
Presentation is loading. Please wait.
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
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
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.