SlideShare a Scribd company logo
SUPERCONDUCTOR	
  
A Browser Framework for
Visualizing Big Data

Leo	
  Meyerovich,	
  Ma.	
  Torok,	
  Ras	
  Bodik	
  
@LMeyerov	
  
UC	
  Berkeley	
  /	
  Graphistry	
  

1	
  
Why Big Data Visualization?

Yes

No
Analysis	
  Result:	
  	
  No	
  

3	
  
Histogram of Voter Turnout by Town
who’s ballot
stuffing?
# Towns
most towns had
a 40% voter
turnout
0%
75%

25%
100%

50%

Voter turnout
4	
  
Tree Map Demo
Ex: Time Series in IBM’s IT Monitor
GE Demo
Browser Engine ~= Chart Engine!
DSLs

render
layout

selectors
parse

Exploit Parallelism in Each One
Deploy Today via Parallel JavaScript
data	
  
styling	
  
widgets	
  

Parser.js	
  

GPU	
  

Compiler	
  
Data	
  stays	
  
on	
  GPU!	
  

Selectors.CL	
  

Layout.CL	
  

JavaScript	
  VM	
  

data	
  viz	
  

Renderer.GL	
  

webpage	
  
Parser	
  
Selectors	
  

HTML	
  data	
  
CSS	
  styling	
  
JS	
  script	
  

Layout	
  
Renderer	
  

Pixels	
  

superconductor.js	
  
9	
  
DSL 1: Data via JSON
JavaScript, Ruby, Python,
Java, …
Easy… until 1-10s data
loading

10	
  
Parsing Demo

11	
  
DSL 2: Designers 


Selectors
<div>	
  
<span>	
  

<b>	
   <i>	
  

<p>	
  

<b>	
   <img	
  class=“dog”>	
  

<b>	
  

span	
  	
  b	
  	
  {	
  width:	
  83%	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  div	
  	
  .dog	
  	
  {	
  float:	
  leJ	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  p	
  	
  ,	
  	
  span	
  b	
  	
  {	
  font-­‐size:	
  7px	
  }	
  	
  
12	
  
Problem: O(sels * tree log tree )
<div>	
  

1K-100K HTML nodes
<span>	
  

<p>	
  

×
<b>	
   <i>	
  

1-10K selectors

<b>	
   <img	
  class=“dog”>	
  

<b>	
  

span	
  	
  b	
  	
  {	
  width:	
  83%	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  div	
  	
  .dog	
  	
  {	
  float:	
  leJ	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  p	
  	
  ,	
  	
  span	
  b	
  	
  {	
  font-­‐size:	
  7px	
  }	
  	
  

13	
  
Good News: Embarrassing Parallelism!
<div>	
  
<span>	
  

<b>	
   <i>	
  

<p>	
  

<b>	
   <img	
  class=“dog”>	
  

<b>	
  

span	
  	
  b	
  	
  {	
  width:	
  83%	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  div	
  	
  .dog	
  	
  {	
  float:	
  leJ	
  }	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  p	
  	
  ,	
  	
  span	
  b	
  	
  {	
  font-­‐size:	
  7px	
  }	
  	
  
14	
  
Selector Engine Implementation
selectors.css

Dynamic Animation!
edit style at runtime
then recompile

compiler.js



selectors.webcl

…
DSL 3: Layout
CSS

JS

parallelizable layout 

flexible compute

FTL
parallelizable compute in declarative layout
Step	
  1/2:	
  Schema	
  of	
  VisualizaYon	
  
Tree class hierarchy

Node attributes

17	
  
[Kastens	
  1980,	
  Saraiva	
  2003]	
  [WWW	
  2010,	
  
Step 2/2: Schema AttributePPOPP	
  2013]	
  
Constraints

1.  Local	
  
	
  

10px	
  

5px	
  

inputs	
  
vars	
  

2.	
  Single-­‐assignment	
  

HBox	
  
Leaf	
  

y	
   w	
   h	
  x	
  
Leaf	
  

y	
   w	
  h	
   x	
  

y	
   w	
   h	
  x	
  

HBox	
  

HBox ! left=IBox right=IBox
w := left.w + right.w
…

Root	
  

y	
   w	
  h	
   x	
  

Leaf	
  

y	
   w	
   h	
  x	
  
Leaf	
  

y	
   w	
   h	
   x	
  
18	
  
llel
ara
P

[WWW	
  2010]	
  

Compiler Output: Layout as Tree Traversals
logical	
  joins	
  
w,h	
  
w,h	
  
w,h	
  
Leaf	
  

x,y	
  

…	
  
logical	
  spawns	
  

w,h	
  

w,h	
   w,h	
  

Parallelism in each traversal!	
  

Mozilla, Microsoft
1. Works for all data sets
2. Compiler automatically parallelizes!
19	
  
DSL 4: Rendering as a Layout Extension
HBox ! left=IBox right=IBox
@render @Rectangle(x,y,w,h,color)
…
w := left.w + right.w
…
[Blelloch	
  93]	
  

Traversals: Flattened & Level-Synchronous
y
x
wh

Array per
attribute

level	
  1	
  

Nodes in
arrays

parallel for loop
(level synchronous)

level	
  n	
  
Tree

Compiler automates code + data
transformations.

21	
  
Problem: Dynamic Memory Allocation on GPU?
rect(…); …

oval(…)

square(…)

function circ(x,y,r) {
buffer = new
line(…); … Array(r*10)
for (i = 0; i < r * 10; i+
circ(…)
+)
buffer[i] =
dynamic
Math.cos(i) allocation"
rect(…); …}
1.0 0.8 0.5 0.2 0

0.2

22	
  
Dynamic Allocation as SIMD Traversals
allocRect(…)! 7

fillRect(…)

allocLine(…)! 6
allocCirc(…)à
4
allocRect(…)! 6
1.0 0.8 0.5 0.2 0
0.2

1.0 0.8 0.5
0.2

1. Prefix sum for needed
space
2. Allocate buffers

fillLine(…)
fillCirc(…)
fillRect(…)
1.0 0.8 0.5 0.2 0
0.2

3. Fill vertex buffers in
parallel
4. Give OpenGL buffers
pointer

23	
  
CPU vs. GPU for Election Treemap:
5 traversals over 100K nodes
Naïve JS (Chrome 26)

10,000

GPU (Safari + WebCL 11/3)

COMBINED: 54X !

Time (ms)

1,000
100

24fps

WebCL:
5X

WebCL:
31X

10
1
layout (4 passes) rendering pass

TOTAL
24	
  
DSLs for Big Data Visualization, Today.
Superconductor
•  Explore data with interactive visualization
•  Script charts like web pages: DSLs!
•  Hardware accelerate each DSL
•  We use WebCL:
GPGPU, keeps data on GPU, dynamic
compilation
Find us!
sc-lang.com

Leo: @LMeyerov / LMeyerov@gmail.com
Matt: mtorok@berkeley.edu
Extra	
  
Parsing Demo

29	
  
Optimizing JSON Parsing
raw.json: 23MB
Parallel parsing easy!
… when you fix the format
partition
raw1.json(1.9MB), …, raw12.json
compress +
zip
csr1.zip (0.2MB), …, csr12.zip
server	
  

browser	
  
Each worker:
parallel parse
parallel parse 1.  native JSON parse # csr.jso
parallel parse
2.  decompress # obj.json
3. 0-copy return: typed arrays!
big JavaScript
object
30	
  

More Related Content

What's hot (20)

PDF
CPU vs. GPU presentation
Vishal Singh
 
PPSX
TressFX The Fast and The Furry by Nicolas Thibieroz
AMD Developer Central
 
PDF
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
AMD Developer Central
 
PPTX
Parallel K means clustering using CUDA
prithan
 
PDF
GPU Programming with Java
Kelum Senanayake
 
PDF
GS-4147, TressFX 2.0, by Bill-Bilodeau
AMD Developer Central
 
PDF
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...
AMD Developer Central
 
PDF
Easy and High Performance GPU Programming for Java Programmers
Kazuaki Ishizaki
 
PDF
PT-4057, Automated CUDA-to-OpenCL™ Translation with CU2CL: What's Next?, by W...
AMD Developer Central
 
PDF
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
AMD Developer Central
 
PPTX
GPU Computing
Khan Mostafa
 
PPTX
Gpu with cuda architecture
Dhaval Kaneria
 
PDF
GPU power consumption and performance trends
Alessio Villardita
 
PDF
GPU - Basic Working
Nived R Nambiar
 
PDF
PG-4034, Using OpenGL and DirectX for Heterogeneous Compute, by Karl Hillesland
AMD Developer Central
 
PPTX
Lec04 gpu architecture
Taras Zakharchenko
 
PPT
Gpu and The Brick Wall
ugur candan
 
PDF
Can FPGAs Compete with GPUs?
inside-BigData.com
 
PDF
Bolt C++ Standard Template Libary for HSA by Ben Sanders, AMD
HSA Foundation
 
PPT
Gpu presentation
spartasoft
 
CPU vs. GPU presentation
Vishal Singh
 
TressFX The Fast and The Furry by Nicolas Thibieroz
AMD Developer Central
 
CC-4007, Large-Scale Machine Learning on Graphs, by Yucheng Low, Joseph Gonza...
AMD Developer Central
 
Parallel K means clustering using CUDA
prithan
 
GPU Programming with Java
Kelum Senanayake
 
GS-4147, TressFX 2.0, by Bill-Bilodeau
AMD Developer Central
 
Productive OpenCL Programming An Introduction to OpenCL Libraries with Array...
AMD Developer Central
 
Easy and High Performance GPU Programming for Java Programmers
Kazuaki Ishizaki
 
PT-4057, Automated CUDA-to-OpenCL™ Translation with CU2CL: What's Next?, by W...
AMD Developer Central
 
GS-4152, AMD’s Radeon R9-290X, One Big dGPU, by Michael Mantor
AMD Developer Central
 
GPU Computing
Khan Mostafa
 
Gpu with cuda architecture
Dhaval Kaneria
 
GPU power consumption and performance trends
Alessio Villardita
 
GPU - Basic Working
Nived R Nambiar
 
PG-4034, Using OpenGL and DirectX for Heterogeneous Compute, by Karl Hillesland
AMD Developer Central
 
Lec04 gpu architecture
Taras Zakharchenko
 
Gpu and The Brick Wall
ugur candan
 
Can FPGAs Compete with GPUs?
inside-BigData.com
 
Bolt C++ Standard Template Libary for HSA by Ben Sanders, AMD
HSA Foundation
 
Gpu presentation
spartasoft
 

Viewers also liked (15)

PPT
Making a Superconductor at Home or School!!
The Oberoi Center for Learning & Development
 
PPT
Quantum Tunneling of Normal-Superconductor Interfaces in a Type-I Superconductor
oriolespinal
 
PDF
Electrical properties of a metal, semi metal and superconductor
Umang Gupta
 
PPTX
Higherorder non homogeneous partial differrential equations (Maths 3) Power P...
vrajes
 
PPT
3.magnetic levitation over a superconductor
Narayan Behera
 
PDF
Sample Financial Analysis
Jessica Margolin
 
PPTX
Superconductor
vrajes
 
PPT
Introduction to High temperature superconductors
dutt4190
 
PPT
Superconductors and Superconductivity
Jayanshu Gundaniya
 
PPTX
Superconductors presentation
Islam Mohamed
 
PPTX
Superconductor
Sandip Ghosh
 
PPTX
Surge current protection using superconductor ppt
Chirag2016
 
PPTX
Superconductor & Ultraconductor
Jeet Adhikary
 
PPTX
Surge current protection using superconductor ppt mahesh
Kuldeep Singh
 
PPT
Superconductors
Hardik Soni
 
Making a Superconductor at Home or School!!
The Oberoi Center for Learning & Development
 
Quantum Tunneling of Normal-Superconductor Interfaces in a Type-I Superconductor
oriolespinal
 
Electrical properties of a metal, semi metal and superconductor
Umang Gupta
 
Higherorder non homogeneous partial differrential equations (Maths 3) Power P...
vrajes
 
3.magnetic levitation over a superconductor
Narayan Behera
 
Sample Financial Analysis
Jessica Margolin
 
Superconductor
vrajes
 
Introduction to High temperature superconductors
dutt4190
 
Superconductors and Superconductivity
Jayanshu Gundaniya
 
Superconductors presentation
Islam Mohamed
 
Superconductor
Sandip Ghosh
 
Surge current protection using superconductor ppt
Chirag2016
 
Superconductor & Ultraconductor
Jeet Adhikary
 
Surge current protection using superconductor ppt mahesh
Kuldeep Singh
 
Superconductors
Hardik Soni
 
Ad

Similar to WT-4065, Superconductor: GPU Web Programming for Big Data Visualization, by Leo Meyerovich and Matthew Torok (20)

PPTX
Don't Call It a Comeback: Attribute Grammars for Big Data Visualization
Leo Meyerovich
 
PDF
Understanding Connected Data through Visualization
Sebastian Müller
 
PDF
React Internals - Batching Write Operations by tree Traversal
Sanjay Krishna Anbalagan
 
PDF
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
PPTX
JS Essence
Uladzimir Piatryka
 
PDF
Functional (web) development with Clojure
Henrik Eneroth
 
PDF
GQuery a jQuery clone for Gwt, RivieraDev 2011
Manuel Carrasco Moñino
 
PDF
Advanced guide to develop ajax applications using dojo
Fu Cheng
 
PDF
Building a JavaScript Library
jeresig
 
PDF
Painless visual testing
gojkoadzic
 
PPTX
Haste (Same Language, Multiple Platforms) and Tagless Final Style (Same Synta...
takeoutweight
 
PPTX
Browsers. Magic is inside.
Devexperts
 
PDF
Software Engineering 2014
Shuichi Kurabayashi
 
PDF
deepjs - tools for better programming
nomocas
 
PDF
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
PDF
HTML5 for mobile development
Carlos Justiniano
 
PDF
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
PDF
Samsung WebCL Prototype API
Ryo Jin
 
PDF
Mojo+presentation+1
Craig Condon
 
PDF
backend
tutorialsruby
 
Don't Call It a Comeback: Attribute Grammars for Big Data Visualization
Leo Meyerovich
 
Understanding Connected Data through Visualization
Sebastian Müller
 
React Internals - Batching Write Operations by tree Traversal
Sanjay Krishna Anbalagan
 
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
JS Essence
Uladzimir Piatryka
 
Functional (web) development with Clojure
Henrik Eneroth
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
Manuel Carrasco Moñino
 
Advanced guide to develop ajax applications using dojo
Fu Cheng
 
Building a JavaScript Library
jeresig
 
Painless visual testing
gojkoadzic
 
Haste (Same Language, Multiple Platforms) and Tagless Final Style (Same Synta...
takeoutweight
 
Browsers. Magic is inside.
Devexperts
 
Software Engineering 2014
Shuichi Kurabayashi
 
deepjs - tools for better programming
nomocas
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
HTML5 for mobile development
Carlos Justiniano
 
Progscon 2017: Taming the wild fronteer - Adventures in Clojurescript
John Stevenson
 
Samsung WebCL Prototype API
Ryo Jin
 
Mojo+presentation+1
Craig Condon
 
backend
tutorialsruby
 
Ad

More from AMD Developer Central (20)

PDF
DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
AMD Developer Central
 
PPTX
Leverage the Speed of OpenCL™ with AMD Math Libraries
AMD Developer Central
 
PPTX
Introduction to Node.js
AMD Developer Central
 
PPTX
Media SDK Webinar 2014
AMD Developer Central
 
PDF
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware Webinar
AMD Developer Central
 
PDF
DirectGMA on AMD’S FirePro™ GPUS
AMD Developer Central
 
PPT
Webinar: Whats New in Java 8 with Develop Intelligence
AMD Developer Central
 
PPSX
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
AMD Developer Central
 
PPSX
Inside XBox- One, by Martin Fuller
AMD Developer Central
 
PPSX
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
AMD Developer Central
 
PPTX
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
AMD Developer Central
 
PPSX
Gcn performance ftw by stephan hodes
AMD Developer Central
 
PPSX
Inside XBOX ONE by Martin Fuller
AMD Developer Central
 
PPSX
Introduction to Direct 3D 12 by Ivan Nevraev
AMD Developer Central
 
PPSX
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
AMD Developer Central
 
PDF
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...
AMD Developer Central
 
PPSX
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
AMD Developer Central
 
PDF
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
AMD Developer Central
 
PPSX
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
AMD Developer Central
 
PPSX
Mantle - Introducing a new API for Graphics - AMD at GDC14
AMD Developer Central
 
DX12 & Vulkan: Dawn of a New Generation of Graphics APIs
AMD Developer Central
 
Leverage the Speed of OpenCL™ with AMD Math Libraries
AMD Developer Central
 
Introduction to Node.js
AMD Developer Central
 
Media SDK Webinar 2014
AMD Developer Central
 
An Introduction to OpenCL™ Programming with AMD GPUs - AMD & Acceleware Webinar
AMD Developer Central
 
DirectGMA on AMD’S FirePro™ GPUS
AMD Developer Central
 
Webinar: Whats New in Java 8 with Develop Intelligence
AMD Developer Central
 
The Small Batch (and other) solutions in Mantle API, by Guennadi Riguer, Mant...
AMD Developer Central
 
Inside XBox- One, by Martin Fuller
AMD Developer Central
 
Rendering Battlefield 4 with Mantle by Yuriy ODonnell
AMD Developer Central
 
Low-level Shader Optimization for Next-Gen and DX11 by Emil Persson
AMD Developer Central
 
Gcn performance ftw by stephan hodes
AMD Developer Central
 
Inside XBOX ONE by Martin Fuller
AMD Developer Central
 
Introduction to Direct 3D 12 by Ivan Nevraev
AMD Developer Central
 
Holy smoke! Faster Particle Rendering using Direct Compute by Gareth Thomas
AMD Developer Central
 
Computer Vision Powered by Heterogeneous System Architecture (HSA) by Dr. Ha...
AMD Developer Central
 
Rendering Battlefield 4 with Mantle by Johan Andersson - AMD at GDC14
AMD Developer Central
 
RapidFire - the Easy Route to low Latency Cloud Gaming Solutions - AMD at GDC14
AMD Developer Central
 
Mantle and Nitrous - Combining Efficient Engine Design with a modern API - AM...
AMD Developer Central
 
Mantle - Introducing a new API for Graphics - AMD at GDC14
AMD Developer Central
 

Recently uploaded (20)

PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Biography of Daniel Podor.pdf
Daniel Podor
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Biography of Daniel Podor.pdf
Daniel Podor
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
What Makes Contify’s News API Stand Out: Key Features at a Glance
Contify
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 

WT-4065, Superconductor: GPU Web Programming for Big Data Visualization, by Leo Meyerovich and Matthew Torok

  • 1. SUPERCONDUCTOR   A Browser Framework for Visualizing Big Data Leo  Meyerovich,  Ma.  Torok,  Ras  Bodik   @LMeyerov   UC  Berkeley  /  Graphistry   1  
  • 2. Why Big Data Visualization? Yes No
  • 3. Analysis  Result:    No   3  
  • 4. Histogram of Voter Turnout by Town who’s ballot stuffing? # Towns most towns had a 40% voter turnout 0% 75% 25% 100% 50% Voter turnout 4  
  • 6. Ex: Time Series in IBM’s IT Monitor
  • 8. Browser Engine ~= Chart Engine! DSLs render layout selectors parse Exploit Parallelism in Each One
  • 9. Deploy Today via Parallel JavaScript data   styling   widgets   Parser.js   GPU   Compiler   Data  stays   on  GPU!   Selectors.CL   Layout.CL   JavaScript  VM   data  viz   Renderer.GL   webpage   Parser   Selectors   HTML  data   CSS  styling   JS  script   Layout   Renderer   Pixels   superconductor.js   9  
  • 10. DSL 1: Data via JSON JavaScript, Ruby, Python, Java, … Easy… until 1-10s data loading 10  
  • 12. DSL 2: Designers Selectors <div>   <span>   <b>   <i>   <p>   <b>   <img  class=“dog”>   <b>   span    b    {  width:  83%  }                      div    .dog    {  float:  leJ  }                      p    ,    span  b    {  font-­‐size:  7px  }     12  
  • 13. Problem: O(sels * tree log tree ) <div>   1K-100K HTML nodes <span>   <p>   × <b>   <i>   1-10K selectors <b>   <img  class=“dog”>   <b>   span    b    {  width:  83%  }                      div    .dog    {  float:  leJ  }                      p    ,    span  b    {  font-­‐size:  7px  }     13  
  • 14. Good News: Embarrassing Parallelism! <div>   <span>   <b>   <i>   <p>   <b>   <img  class=“dog”>   <b>   span    b    {  width:  83%  }                      div    .dog    {  float:  leJ  }                      p    ,    span  b    {  font-­‐size:  7px  }     14  
  • 15. Selector Engine Implementation selectors.css Dynamic Animation! edit style at runtime then recompile compiler.js selectors.webcl …
  • 16. DSL 3: Layout CSS JS parallelizable layout flexible compute FTL parallelizable compute in declarative layout
  • 17. Step  1/2:  Schema  of  VisualizaYon   Tree class hierarchy Node attributes 17  
  • 18. [Kastens  1980,  Saraiva  2003]  [WWW  2010,   Step 2/2: Schema AttributePPOPP  2013]   Constraints 1.  Local     10px   5px   inputs   vars   2.  Single-­‐assignment   HBox   Leaf   y   w   h  x   Leaf   y   w  h   x   y   w   h  x   HBox   HBox ! left=IBox right=IBox w := left.w + right.w … Root   y   w  h   x   Leaf   y   w   h  x   Leaf   y   w   h   x   18  
  • 19. llel ara P [WWW  2010]   Compiler Output: Layout as Tree Traversals logical  joins   w,h   w,h   w,h   Leaf   x,y   …   logical  spawns   w,h   w,h   w,h   Parallelism in each traversal!   Mozilla, Microsoft 1. Works for all data sets 2. Compiler automatically parallelizes! 19  
  • 20. DSL 4: Rendering as a Layout Extension HBox ! left=IBox right=IBox @render @Rectangle(x,y,w,h,color) … w := left.w + right.w …
  • 21. [Blelloch  93]   Traversals: Flattened & Level-Synchronous y x wh Array per attribute level  1   Nodes in arrays parallel for loop (level synchronous) level  n   Tree Compiler automates code + data transformations. 21  
  • 22. Problem: Dynamic Memory Allocation on GPU? rect(…); … oval(…) square(…) function circ(x,y,r) { buffer = new line(…); … Array(r*10) for (i = 0; i < r * 10; i+ circ(…) +) buffer[i] = dynamic Math.cos(i) allocation" rect(…); …} 1.0 0.8 0.5 0.2 0 0.2 22  
  • 23. Dynamic Allocation as SIMD Traversals allocRect(…)! 7 fillRect(…) allocLine(…)! 6 allocCirc(…)à 4 allocRect(…)! 6 1.0 0.8 0.5 0.2 0 0.2 1.0 0.8 0.5 0.2 1. Prefix sum for needed space 2. Allocate buffers fillLine(…) fillCirc(…) fillRect(…) 1.0 0.8 0.5 0.2 0 0.2 3. Fill vertex buffers in parallel 4. Give OpenGL buffers pointer 23  
  • 24. CPU vs. GPU for Election Treemap: 5 traversals over 100K nodes Naïve JS (Chrome 26) 10,000 GPU (Safari + WebCL 11/3) COMBINED: 54X ! Time (ms) 1,000 100 24fps WebCL: 5X WebCL: 31X 10 1 layout (4 passes) rendering pass TOTAL 24  
  • 25. DSLs for Big Data Visualization, Today.
  • 26. Superconductor •  Explore data with interactive visualization •  Script charts like web pages: DSLs! •  Hardware accelerate each DSL •  We use WebCL: GPGPU, keeps data on GPU, dynamic compilation
  • 30. Optimizing JSON Parsing raw.json: 23MB Parallel parsing easy! … when you fix the format partition raw1.json(1.9MB), …, raw12.json compress + zip csr1.zip (0.2MB), …, csr12.zip server   browser   Each worker: parallel parse parallel parse 1.  native JSON parse # csr.jso parallel parse 2.  decompress # obj.json 3. 0-copy return: typed arrays! big JavaScript object 30