33
Partitioning and Divide-and-Conquer Strateg Data partitioning (or Domain decomposition) Functional decomposition

Partitioning and Divide-and-Conquer Strategies

  • Upload
    tex

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Partitioning and Divide-and-Conquer Strategies. Data partitioning (or Domain decomposition) Functional decomposition. x 0 …… .x (n/m)-1. x n/m …… .x (2n/m)-1. x (m-1)n/m …… .x n-1. +. +. +. ……. +. sum. Partitioning and Divide-and-Conquer Strategies. Addition of a sequence of numbers. - PowerPoint PPT Presentation

Citation preview

Page 1: Partitioning and Divide-and-Conquer Strategies

Partitioning and Divide-and-Conquer Strategies

Data partitioning (or Domain decomposition)

Functional decomposition

Page 2: Partitioning and Divide-and-Conquer Strategies

+

x0…….x(n/m)-1

+

xn/m…….x(2n/m)-1

……. +

x(m-1)n/m…….xn-1

+

sum

Partitioning and Divide-and-Conquer Strategies

Page 3: Partitioning and Divide-and-Conquer Strategies

Addition of a sequence of numbers

Masters = n / m;for(i=0, x=0 ; i<m ; i++, x=x+s) send(&number[x], s, Pi);

result = 0;for(i=0 ; i<m ; i++){ recv(&part_sum, Pany); sum = sum + part_sum;}

Slaverecv(numbers, s, Pmaster);sum = 0;for(i=0 ; i<s ; i++) part_sum = part_sum + numbers[i];send(&part_sum, Pmaster);

Page 4: Partitioning and Divide-and-Conquer Strategies

Addition of a sequence of numbers

Masters = n / m;bcast(numbers, s, Pslave_group);

result = 0;for(i=0 ; i<m ; i++){ recv(&part_sum, Pany); sum = sum + part_sum;}

Slavebcast(numbers, s, Pmaster);start = slave_number * s;end = start + s;sum = 0;for(i=start ; i<end ; i++) part_sum = part_sum + numbers[i];send(&part_sum, Pmaster);

Page 5: Partitioning and Divide-and-Conquer Strategies

Addition of a sequence of numbers

Analysis.

Phase I. communication

datastartupcomm

datastartupcomm

nttt

tmntmt

1

1 ))/((

Phase II. computation

1/1 mntcomp

Page 6: Partitioning and Divide-and-Conquer Strategies

Addition of a sequence of numbers

Analysis.

Phase III. communication

)(2 datastartupcomm ttmt

Phase VI. computation

11 mtcomp

Page 7: Partitioning and Divide-and-Conquer Strategies

Addition of a sequence of numbers

Analysis.

)(

/)()1(

mnOt

or

mnmtmntmt

p

datastartupp

2/

1

mmn

n

t

tS

p

s

Page 8: Partitioning and Divide-and-Conquer Strategies

Divide-and-Conquer

int add(int* s){ if(number(s)=<2) return (n1+n2); else{ divide(s, s1, s2); part_sum1 = add(s1); part_sum2 = add(s2); retunr(part_sum1 + part_sum2); }}

Page 9: Partitioning and Divide-and-Conquer Strategies

Divide-and-Conquer

Divideproblem

Page 10: Partitioning and Divide-and-Conquer Strategies

Divide-and-Conquer

P0

P0 P4

P0 P2

P0 P1 P2 P3

P6P4

P7P6P5P4

Page 11: Partitioning and Divide-and-Conquer Strategies

Divide-and-ConquerP0

P0 P4

P0 P2

P0 P1 P2 P3

P6P4

P7P6P5P4

Page 12: Partitioning and Divide-and-Conquer Strategies

Process P0

divide(s1, s1, s2);send(s2, P4);divide(s1, s1, s2);send(s2, P2);divide(s1, s1, s2);send(s2, P0);part_sum = *s1;recv(&part_sum1, P0);part_sum = part_sum + part_sum1;recv(&part_sum1, P2);part_sum = part_sum + part_sum1;recv(&part_sum1, P4);part_sum = part_sum + part_sum1;

Process P4

recv(s1, P0)divide(s1, s1, s2);send(s2, P6);divide(s1, s1, s2);send(s2, P5);part_sum = *s1;recv(&part_sum1, P5);part_sum = part_sum + part_sum1;recv(&part_sum1, P6);part_sum = part_sum + part_sum1;send(&part_sum, P0);

Divide-and-Conquer

Page 13: Partitioning and Divide-and-Conquer Strategies

Divide-and-Conquer

analysis

datadatadatadatadatacomm tp

pntp

ntn

tn

tn

t)1(

...8421

ptt datacomm log2

pttp

pnttt datadatacommcommcomm log

)1(21

communication

Page 14: Partitioning and Divide-and-Conquer Strategies

Divide-and-Conquer

analysis

pp

ntcomp log

pp

nptt

p

pnt datadatap loglog

)1(

computation

Page 15: Partitioning and Divide-and-Conquer Strategies

M-way Divide-and-Conquer

int add(int* s){ if(number(s) =<4) return(n1+n2+n3+n4); esle{ divide(s, s1, s2, s3, s4); part_sum1 = add(s1); part_sum2 = add(s2); part_sum3 = add(s3); part_sum4 = add(s4); return(part_sum1 + part_sum2 + part_sum3 + part_sum4); }}

Page 16: Partitioning and Divide-and-Conquer Strategies

M-way Divide-and-Conquer

Page 17: Partitioning and Divide-and-Conquer Strategies

M-way Divide-and-Conquer

Page 18: Partitioning and Divide-and-Conquer Strategies

Numerical Integration

b

adxxfI )(

a p q b

f(p) f(q)

f(x)

Page 19: Partitioning and Divide-and-Conquer Strategies

Numerical Integration

a p q b

f(p) f(q)

f(x)

Page 20: Partitioning and Divide-and-Conquer Strategies

a p q b

f(p) f(q)

Numerical Integration

f(x)

Page 21: Partitioning and Divide-and-Conquer Strategies

Numerical Integration

A B

Page 22: Partitioning and Divide-and-Conquer Strategies

Numerical Integration

Process Pi

if( i== master ){ printf("Enter number of intervals"); scanf("%d", &n); }bcast(&n, Pgroup);region = (b-a) / p;start = a + region * i;end = start + region;d = (b-a) / n;area = 0.0;for(x=start ; x<end ; x = x+d) area = area + 0.5 * (f(x)+f(x+d)) * d;reduce_add(&integral, &area, Pgroup);

area = 0.0;for(x=start ; x<end ; x=x+d) area = area + f(x) + f(x+d);area = 0.5 * area * d;

area = 0.5 * (f(start) + f(end));for(x=start+d ; x<end ; x=x+d) area = area + f(x);area = area * d;

Page 23: Partitioning and Divide-and-Conquer Strategies

N-body problem

2r

mGmF ba

maF

tvxx

t

vvmF

tvxx

m

tFvv

t

vvmmaF

ttt

ttt

tt

tt

tt

2/11

2/12/1

1

1

1

)(

)(

Page 24: Partitioning and Divide-and-Conquer Strategies

N-body problem

Three dimension space

)(

)(

)(

2

2

2

r

zz

r

mGmF

r

yy

r

mGmF

r

xx

r

mGmF

abbac

abbay

abbax

222 )()()( bababa zzyyxxr

Page 25: Partitioning and Divide-and-Conquer Strategies

N-body problem

Sequential Codefor(t=0 ; t<tmax ; t++)

for(i=0 ; i<N ; i++) {

F=FORCE_ROUTINE(i);

v[i]new = v[i] + F * dt;

x[i]new = x[i] + v[i]new * dt;

}

for(i=0 ; i<nmax ; i++){

x[i] = x[i]new;

v[i] = v[i]new;

}

Page 26: Partitioning and Divide-and-Conquer Strategies

N-body problem

Center of massdistance cluster of bodies

Page 27: Partitioning and Divide-and-Conquer Strategies

N-body problem

Barnes-Hutalgorithm

Page 28: Partitioning and Divide-and-Conquer Strategies

N-body problem

Page 29: Partitioning and Divide-and-Conquer Strategies

N-body problem

for( t=0 ; t<tmax ; t++) {

Build_OCTTREE();

Tot_Mass_center();

comp_Force();

Update();

}

Page 30: Partitioning and Divide-and-Conquer Strategies

N-body problem

7

0

7

0

)(1

iii

ii

cmM

C

mM

Page 31: Partitioning and Divide-and-Conquer Strategies

Buckets Sort

Page 32: Partitioning and Divide-and-Conquer Strategies

Buckets Sort

Page 33: Partitioning and Divide-and-Conquer Strategies

Buckets Sort