guyblelloch$ with:$aapo$kyrola,$julian$shun$€¦ · big$dataon$small$machines$ guyblelloch$...

48
Big Data on Small Machines Guy Blelloch with: Aapo Kyrola, Julian Shun 6/6/13 BDA 2013 1

Upload: others

Post on 11-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Big  Data  on  Small  Machines  

Guy  Blelloch  with:  Aapo  Kyrola,  Julian  Shun  

6/6/13   BDA  2013   1  

Page 2: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

QuesDon  

•  There  has  been  a  lot  of  emphasis  on  large  clusters,  and  tools  such  as  Map  Reduce  for  “big  data”  

•  But,  when  might  it  be  be+er  to  use  a  smaller  machine  such  as  a  laptop,  desktop,  or  rack  mounted  mul7-­‐core  server?  

•  Many  potenDal  advantages    – More  energy  efficient  – More  cost  effecDve  –  Easier  to  program  –  Easier  to  administer,  reliability  

6/6/13   BDA  2013   2  

Page 3: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

In  This  Talk  

1.  Graph  analysis  using  mulD-­‐core  servers  (LIGRA,  with  Julian  Shun,  PPOPP  ‘13)  

2.  Graph  analysis  using  a  laptops  and  disks    (GraphChi,  with  Aapo  Kyrola,  OSDI  ’12)  

3.  In  memory  compression  of  graphs,  and  inverted  indices  (with  Daniel  Blandford,  SODA  ‘04)  

6/6/13   BDA  2013   3  

Page 4: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Why  use  Large  Clusters  

1.  Data  does  not  fit  in  memory  of  modest  machines  

2.  Modest  machines  are  not  fast  enough  to  process  the  data.  

6/6/13   BDA  2013   4  

Page 5: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BIG  Data  Sloan  Sky  Survey:  7  x  1013  bytes/year  now                                                                  7  x  1015  bytes/year  in  2016  Large  Hadron  Collider:            150  million  sensors  x  40  million  samples/sec            =  6  x  1016  samples/year  Wallmart  Database:  2.5*1015  bytes  (predicted)            10  Billion  TransacDons/year  YouTube  :  1.2  x  10^8  videos  x  2  x  107  mbytes/video                                      =  3  x  1015  bytes  Genome:  4  x  109  bp/human  x  4  x  109  humans  =  1019  bytes  

6/6/13   BDA  2013   5  

But  most  analysis  does  not  have  to  look  at  all    the  data  

Page 6: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Large  Data  (Graphs)  •  Web  graph  (centered  around  Wikipedia)  

6/6/13   BDA  2013   6  

Page 7: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Large  Data  (Graphs)  Edges   Uncompressed   Compressed  

Publicly  Available   6  Billion   60  GB   6  GB  Twiger   25  Billion   250  GB   25  GB  Facebook   140  Billion   1.4  TB   140  GB  Web  Graph  (usefull)   200  Billion?    2  TB   200  Gbytes  

6/6/13   BDA  2013   7  

Page 8: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Large  Text  

•  Jstor  :  2  Million  Docs  –  100Gbytes  •  PubMed  20  Million  Docs  –  100Gbytes  •  Library  of  congress:  3  x  107  volumes  x    105/vol                3  TB  (compressed)  

*  All  numbers  esDmated  

6/6/13   BDA  2013   8  

Page 9: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Machines  

Cost   Main    Memory  

Secondary    Memory  

Laptop   $1K   10  GB    1  TB  Desktop   $4K   100  GB   10  TB  Server   $20K   1  TB   100  TB  100  node  Cluster  

$200K   10  TB   1000  TB  

6/6/13   BDA  2013   9  

Twiger  Graph  :  250  Gbytes  Compressed  Twiger  Graph:  25  Gbytes  

Page 10: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Machines  

Cost   Main    Memory  

Secondary    Memory  

Laptop   $1K   10  GB    1  TB  Desktop   $4K   100  GB   10  TB  Server   $20K   1  TB   100  TB  100  node  Cluster  

$200K   10  TB   1000  TB  

6/6/13   BDA  2013   10  

Twiger  Graph  :  250  Gbytes  Compressed  Twiger  Graph:  25  Gbytes  

Page 11: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Machines  

Cost   Main    Memory  

Secondary    Memory  

Cores  

Laptop   $1K   10  GB    1  TB   4  Desktop   $4K   100  GB   10  TB   16  Server   $20K   1  TB   100  TB   64  100  node  Cluster  

$200K   10  TB   1000  TB   800  

6/6/13   BDA  2013   11  

Twiger  Graph  :  250  Gbytes  Compressed  Twiger  Graph:  25  Gbytes  

Page 12: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

In  This  Talk  

1.  Graph  and  Text  analysis  using  mulD-­‐core  servers  (LIGRA,  with  Julian  Shun,  PPOPP  ‘13)  

2.  Graph  analysis  using  a  laptops  and  disks    (GraphChi,  with  Aapo  Kyrola,  OSDI  ’12)  

3.  In  memory  compression  of  graphs,  and  inverted  indices  (with  Daniel  Blandford,  SODA  ‘04)  

6/6/13   BDA  2013   12  

Page 13: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Ligra  •   Lightweight  graph  processing  system  for  shared  memory  mulDcore  machines  –  Lightweight:  modest  amount  of  code  (about  1500  lines  including  comments)  

–  Simple:  framework  only  has  2  rouDnes  and  one  data  structure  •  This  is  enough  for  a  wide  class  of  graph  traversal  algorithms!  

–  Parallel:  designed  for  shared  memory  systems  –  Efficient:  outperform  other  graph  systems  by  orders  of  magnitude,  up  to  39x  speedup  on  40  cores  

– Designed  for  synchronous  computaDons  6/6/13   BDA  2013   13  

Page 14: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Ligra  Interface  •  Vertex  subset:  represents  a  subset  of  verDces  –  Important  for  algorithms  that  process  only  a  subset  of  verDces  each  iteraDon  

–  Can  keep  around  mulDple  subsets  for  same  graph  –  Can  use  one  subset  for  mulDple  graphs  

•  Vertex  map:  maps  user  boolean  funcDon  over  vertex  subset  

•  Edge  map:  maps  user  boolean  funcDon  over  out-­‐edges  of  vertex  subset  

•  Note:  system  does  not  store  vertex/edge  data.  User-­‐defined  vertex/edge  data  can  be  modified  by  the  funcDon  passed  to  map  

6/6/13   BDA  2013   14  

Page 15: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Parallel  Breadth  First  Search  (BFS)  

r  

1  

4  

3  

2  

5  

8  

7  

6  

9  

12  

11  

10  

15  

14  

13  

16  

17  

19  

18  r  

1  

4  

3  

2  

5  

8  

7  

6  

9  

12  

11  

10  

15  

14  

13  

16  

17  

19  

18  

6/6/13   BDA  2013   15  

Vsubset  

Page 16: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Breadth-­‐first  search  in  Ligra  

16  

•  compare-­‐and-­‐swap  =  CAS;  takes  three  arguments  (addr,  oldval,  newval)  and  atomically  updates  value  at  addr  to  newval  if  its  value  was  oldval.  Returns  true  if  updated,  false  otherwise.  

•  Line  4  agempts  to  sets  vertex  s  to  be  vertex  d’’s  parent  if  unvisited  •  Cond  is  used  to  check  if  unvisited  (-­‐1  means  unvisited)  •  EdgeMap  takes  fronDer,  outputs  next  fronDer      

6/6/13   BDA  2013  

Page 17: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Two  methods  for  BFS  

11  

10  

9  

12  

13  

15  

14  

1  

4  

3  

2  

5  

8  

7  

6  

FronDer  

6/6/13   BDA  2013   17  

Idea  due  to  Beamer,  Asanovic  and  Pagerson  (2012):  •  1st  (Sparse)  method  beger  for  

small  fronDers  •  2nd  (Dense)  method  beger  when  

fronDer  is  large  and  many  verDces  have  been  visited  

•  Switch  between  the  two  approaches  based  on  fronDer  size  

Page 18: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Experiments  •  Used  a  variety  of  arDficial  and  real-­‐world  graphs  •  Largest  is  Yahoo  web  graph  with  1.4  billion  verDces  

and  6.6  billion  edges  •  ImplementaDons  in  Cilk  Plus  (extension  to  C++),  

1500  lines  of  code  for  the  system  •  Using  40-­‐core  Intel  Nehalem  based  machine  •  Good  speedup,  up  to  39x  (PageRank)  

6/6/13  BDA  2013  

18  

Page 19: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Comparison  to  other    graph  processing  systems  

6/6/13   BDA  2013   19  

Ligra:  40  core  Performance  

vs.   Machines   Performance  

Breadth  first  search  

2.5B  edges/sec   KDT   64  x  4  core  Intel  Nehalem  

473M  edges/sec  

Approximate  betweenness  centrality  

526M  edges/sec   KDT   24  x  12  core  AMD  Opteron  processors  

125M  edges/sec  

Page  Rank  (15  lines  of  code)  

2.91  sec/iteraDon  for  1.5B  edge  Twiger  graph  

Powergraph   8  x  64-­‐core  machines  

3.6  sec/iteraDon  for  1.5B  edge  Twiger  graph  

Shortest  Paths   1.68B  edges  in  under  2  seconds  

Pregel   300  mulDcore  commodity  PCs  

1B  edges  in  20  seconds  

Hadoop:  198sec,  Sparc:  97.4sec,  Twister  36sec        

Page 20: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Ligra  -­‐  Conclusions  •  Lightweight:  framework  is  only  about  1500  lines  of  code  including  comments  

•  Simple:  Leads  to  simple  implementaDons  of  graph  traversal  algorithms  – Abstract  main  components  of  graph  traversal  algorithms  into  two  funcDons  

•  Efficient:  Up  to  orders  of  magnitude  faster  than  those  of  other  graph  processing  systems  – Not  much  slower  than  highly-­‐opDmized  applicaDon-­‐specific  code  

6/6/13   BDA  2013   20  

Page 21: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Ligra  -­‐  Conclusions  •  LimitaDons:    – Does  not  work  well  with  dynamic  graphs  – Not  for  asynchronous  computaDons  

•  Future  work:  – Address  limitaDons  – Extending  to  GPUs    

6/6/13   BDA  2013   21  

Page 22: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

In  This  Talk  

1.  Graph  and  Text  analysis  using  mulD-­‐core  servers  (LIGRA,  with  Julian  Shun,  PPOPP  ‘13)  

2.  Graph  analysis  using  a  laptops  and  disks    (GraphChi,  with  Aapo  Kyrola,  OSDI  ’12)  

3.  In  memory  compression  of  graphs,  and  inverted  indices  (with  Daniel  Blandford,  SODA  ‘04)  

6/6/13   BDA  2013   22  

Page 23: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Data  

Data   Data  

Data  

Data  Data  Data  

Data  

Data  

Data  

Vertex-­‐centric  Programming  

•  “Think  like  a  vertex”  •  Popularized  by  the  Pregel  and  GraphLab  projects  

–  Historically,  systolic  computaDon  and  the  ConnecDon  Machine  

MyFunc(vertex)    {  //  modify  neighborhood  }  Data  

Data   Data  

Data  

Data  

6/6/13   BDA  2013   23  

Page 24: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Disk-­‐Based  Graph  Algorithms  

Main  Challenge:  Random  Access          5ms  Disk,  .05ms  SSD,  .0001ms  memory  GraphChi  Solu7on:  Parallel  Sliding  Windows  

6/6/13   BDA  2013   24  

Page 25: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

•  VerDces  are  numbered  from  1  to  n  –  P  intervals,  each  associated  with  a  shard  on  disk.  –  sub-­‐graph  =  interval  of  verDces  

PSW:    Shards  and  Intervals  

shard(1)  

interval(1)   interval(2)   interval(P)  

shard(2)   shard(P)  

1   n  v1   v2  

25  BDA  2013  6/6/13  

Page 26: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

6/6/13   BDA  2013   26  

Page 27: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

PSW:  Layout  

Shard  1  

Shards  small  enough  to  fit  in  memory;  balance  size  of  shards  

Shard:  in-­‐edges  for  interval  of  verDces;  sorted  by  source-­‐id  

in-­‐edges  fo

r  verDces  1..100  

sorted

 by  source_id  

VerDces  1..100  

VerDces  101..700  

VerDces  701..1000  

VerDces  1001..10000  

Shard  2   Shard  3   Shard  4  Shard  1  

6/6/13   BDA  2013   27  

Page 28: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

VerDces  1..100  

VerDces  101..700  

VerDces  701..1000  

VerDces  1001..10000  

Load  all  in-­‐edges  in  memory    

Load  subgraph  for  ver7ces  1..100  

What  about  out-­‐edges?                Arranged  in  sequence  in  other  shards  

Shard  2   Shard  3   Shard  4  

PSW:  Loading  Sub-­‐graph  

Shard  1  

in-­‐edges  fo

r  verDces  1..100  

sorted

 by  source_id  

6/6/13   BDA  2013   28  

Page 29: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Shard  1  

Load all in-edges in memory

Load  subgraph  for  ver7ces  101..700  

Shard  2   Shard  3   Shard  4  

PSW:  Loading  Sub-­‐graph  VerDces  1..100  

VerDces  101..700  

VerDces  701..1000  

VerDces  1001..10000  

Out-edge blocks in memory

in-­‐edges  fo

r  verDces  1..100  

sorted

 by  source_id  

6/6/13   BDA  2013   29  

Page 30: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

GraphChi  

•  C++  implementaDon:  8,000  lines  of  code  –  Java-­‐implementaDon  also  available  (~  2-­‐3x  slower),  with  a  Scala  API.  

•  Several  opDmizaDons  to  PSW  (see  paper).  

Source  code  and  examples:  hgp://graphchi.org  

6/6/13   BDA  2013   30  

Page 31: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

EvaluaDon:  Is  PSW  expressive  enough?  

Graph  Mining  –  Connected  components  –  Approx.  shortest  paths  –  Triangle  counDng  –  Community  DetecDon  

SpMV  –  PageRank  –  Generic  

Recommenda7ons  –  Random  walks  

Collabora7ve  Filtering  (by  Danny  Bickson)  

–  ALS  –  SGD  –  Sparse-­‐ALS  –  SVD,  SVD++  –  Item-­‐CF  +  many  more  

Probabilis7c  Graphical  Models  –  Belief  PropagaDon  

Algorithms  implemented  for  GraphChi  (Oct  2012)  6/6/13   BDA  2013   31  

Page 32: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Experiment  Se{ng  •  Mac  Mini  (Apple  Inc.)  

–  8  GB  RAM  –  256  GB  SSD,  1TB  hard  drive  –  Intel  Core  i5,  2.5  GHz  

•  Experiment  graphs:  

Graph   Ver7ces   Edges   P  (shards)   Preprocessing  

live-­‐journal   4.8M   69M   3   0.5  min  

ne|lix   0.5M   99M   20   1  min  

twiger-­‐2010   42M   1.5B   20   2  min  

uk-­‐2007-­‐05   106M   3.7B   40   31  min  

uk-­‐union   133M   5.4B   50   33  min  

yahoo-­‐web   1.4B   6.6B   50   37  min  6/6/13   BDA  2013   32  

Page 33: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

PowerGraph  Comparison  •  PowerGraph  /  GraphLab  2  outperforms  previous  systems  by  a  wide  margin  on  natural  graphs.  

•  With  64  more  machines,  512  more  CPUs:  –  Pagerank:  40x  faster  than  GraphChi  

–  Triangle  coun7ng:  30x  faster  than  GraphChi.  

OSDI’12  

GraphChi  has  state-­‐of-­‐the-­‐art  performance  /  CPU.  

vs.  

GraphChi  

6/6/13   BDA  2013   33  

Page 34: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Hybrid  Approach  

Possible  approach  for  graphs  with  metadata:    –  Use  a  server  with  e.g.  1  TB  mem,  100TB  Disk  –  In  memory  for  main  graph  –  Disk  for  meta  data  

6/6/13   BDA  2013   34  

Page 35: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

In  This  Talk  

1.  Graph  and  Text  analysis  using  mulD-­‐core  servers  (LIGRA,  with  Julian  Shun,  PPOPP  ‘13)  

2.  Graph  analysis  using  a  laptops  and  disks    (GraphChi,  with  Aapo  Kyrola,  OSDI  ’12)  

3.  In  memory  compression  of  graphs,  and  inverted  indices  (with  Daniel  Blandford,  SODA  ‘04)  

6/6/13   BDA  2013   35  

Page 36: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 36

Compressing Graphs •  Goal: To represent large graphs compactly

while supporting queries efficiently –  e.g., adjacency and neighbor queries – want to do significantly better than adjacency

lists (e.g. a factor of 10 less space, about the same time)

•  Applications: –  Large web graphs –  Large meshes –  Phone call graphs

6/6/13  

Page 37: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 37

Main Ideas – Number vertices so adjacent vertices have

similar numbers •  Use separators to do this

– Use difference coding on adjacency lists – Use efficient data structure for indexing

6/6/13  

Page 38: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 38

Renumbering with Edge Separators

6/6/13  

Page 39: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 39

Renumbering with Edge Separators

6/6/13  

Page 40: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 40

Renumbering with Edge Separators

6/6/13  

Page 41: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 41

Renumbering with Edge Separators

6/6/13  

Page 42: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 42

Compressed Adjacency Tables

6/6/13  

Page 43: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 43

Log-sized Codes • Log-sized code: Any prefix code that takes O(log(d)) bits to represent an integer d. • Gamma code, delta code, skewed Bernoulli code

Example: Gamma code Prefix: unary code for ⎣log d⎦ Suffix: binary code for d-2⎣log d⎦ (binary code for d, except leading 1 is implied)

6/6/13  

Page 44: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 44

Theorem (edge separators) •  Any class of graphs that allows O(nc)

edge separators can be compressed to O(n) bits with O(1) access time using: – Difference coded adjacency lists – O(n)-bit indexing structure

6/6/13  

Page 45: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 45

Performance: Adjacency Table

Time is to create the structure, normalized to time for DFS 6/6/13  

Page 46: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

BDA 2013 Page 46

Performance: Overall

6/6/13  

Page 47: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Conclusions  

•  For  many  applicaDons  of  “large  data”,  data  can  fit  in  the  memory  of  a  server  or  disk  of  a  laptop.  

•  Speed  can  be  improved  on  a  single  mulDcore  server  over  a  distributed  system,  and  significantly  more  energy  efficient.  

•  Code  can  be  simpler  and  more  general  •  Disk  algorithms  are  likely  the  most  energy  efficient,  so  good  for  high  bandwidth  embarassigly  parallel  applicaDons  

6/6/13   BDA  2013   47  

Page 48: GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$€¦ · Big$Dataon$Small$Machines$ GuyBlelloch$ with:$Aapo$Kyrola,$Julian$Shun$ 6/6/13 BDA2013 1

Thank  you!  

6/6/13   BDA  2013   48