Open, Reproducible HPC Data Analysis and Visualization

Comments

Transcription

Open, Reproducible HPC Data Analysis and Visualization
Open, Reproducible HPC Data Analysis and
Visualization: Minimizing Data Movement
Salishan Conference
Gleneden Beach, OR
28 April, 2016
Dr. Marcus D. Hanwell
[email protected]
1
Kitware,)Inc.)
• 
• 
• 
• 
Founded)in)1998)by)five)former)GE)Research)employees)
114)current)employees;)40)with)PhDs)
Privately)held,)profitable)from)creaGon,)no)debt)
Offices)
– 
– 
– 
– 
CliKon)Park,)NY)
Carrboro,)NC)
Santa)Fe,)NM)
Lyon,)France)
•  2011 Small Business
Administration’s
Tibbetts Award
•  HPCWire Readers
and Editor’s Choice
•  Inc’s 5000 List since
2008
2
Kitware’s)customers)&)collaborators)
Over)75)academic'insGtuGons)
including…)
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
Harvard)
MassachuseYs)InsGtute)of)Technology)
University)of)California,)Berkeley)
Stanford)University)
California)InsGtute)of)Technology)
Imperial)College)London)
Johns)Hopkins)University)
Cornell)University)
Columbia)University)
Robarts)Research)InsGtute)
University)of)Pennsylvania)
Rensselaer)Polytechnic)InsGtute)
University)of)Utah)
University)of)North)Carolina)
Over 50 government
agencies and labs
including…
Over 100 commercial
companies in fields
including…
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
• 
National Institutes of Health (NIH)
National Science Foundation (NSF)
National Library of Medicine (NLM)
Department of Defense (DOD)
Department of Energy (DOE)
Defense Advanced Research
Projects Agency (DARPA)
Army Research Lab (ARL)
Air Force Research Lab (AFRL)
Sandia (SNL)
Los Alamos National Labs (LANL)
Argonne (ANL)
Oak Ridge (ORNL)
Lawrence Livermore (LLNL)
Automotive
Aircraft
Defense
Energy technology
Environmental sciences
Finance
Industrial inspection
Oil & gas
Pharmaceuticals
Publishing
3D Mapping
Medical devices
Security
Simulation
4
Going)From)Data)to)VisualizaGon)
5
The)VisualizaGon)Toolkit)
•  Founded)in)1993)as)example)
code)for)“The)VisualizaGon)
Textbook”)
•  Used)in)many)projects)
developed)all)over)the)world:)
–  ParaView,)VisIt)
–  Osirix,)3D)Slicer)
–  Mayavi,)MOOSE)
6
ParaView)–)Parallel)VisualizaGon)
•  Open)source,)BSD)licensed)
•  Turngkey)applicaGon)wrapper)around)VTK)
•  Parallel)data)processing)and)rendering)
http://www.paraview.org/
Render)
Render)
Server)
Render)
Server)
Render)
Server)
Server)
Data)Server)
Data)Server)
Data)Server)
Data)Server)
Data)Server)
Data)Server)
Depth Composite
N)component)Data)
Parallelism)for)X)GByte)
Client)
Control, Display and
Rendering of Small Data
…)
Reader)
X/N))GB)MPI)
Reader)
X/N)GB)
White)Box)
White)Box)
Contour)
Contour)
Tile Display
VTK/ParaView)VisualizaGons)
HPC Visualization
Large Displays and Virtual Reality
Mobile Visualization
Interactive Medical Application and
Visualization
9
VTK)Rendering)Rewrite)
•  New)minimum)OpenGL)version)
–  OpenGL)2.1,)OpenGL)ES)2.0)
•  Rewrite)to)use)minimal)common)subset)
•  Major)overhaul)of)the)rendering)code)
–  Use)VBOs,)VAOs,)shaders,)“new”)OpenGL)
•  Retain)same)high)level)VTK)API)
10
VTK)Performance)Improvements)
•  OpenGL)rendering)rewriYen)–)OpenGL)2.1+)
•  In)many)cases)now)GPU)bound)
–  Previously)large)systems)CPU)bound)
•  Large)polygonal)models)>100x)faster!)
•  Reduced)memory)footprint)significantly)
•  IniGal)render)Gmes)reduced)
11
Benchmarking)Tools)(Polygonal))
•  Added)some)new)benchmarking)tools)
•  Aim)to)provide)systemaGc)comparison)
12
Time)For)First)Frame)(K6000))
16)
14)
Time'(s)'
12)
10)
8)
Legacy)
6)
Rewrite)
4)
2)
0)
1)million)
5)million)
20)million)
Triangles'
30)million)
13
Time)for)Subsequent)Frames)(K6000))
3.5)
3)
Time'(s)'
2.5)
2)
Legacy)
1.5)
Rewrite)
1)
0.5)
0)
1)million)
5)million)
20)million)
Triangles'
30)million)
14
Triangles'per'Second'(B)'
Comparison)of)Cards)(Rewrite))
3.5)
3)
2.5)
2)
1.5)
1)
0.5)
0)
K2200)
K5200)
K6000)
1)
2)
3)
5)
10) 20) 30) 50) 100) 200)
Number'of'Triangles'(M)'
15
VisualizaGon)on)HPC)
•  Hardware)accelerated)rendering)without)X)
–  NVIDIA)hardware)with)EGL)API)
•  Accelerated)soKware)rendering)
–  Intel)OpenSWR)improved)speed)over)Mesa)
•  Other)approaches)for)acceleraGon/rendering)
–  Intel)OSPRay,)NVIDIA)IndeX)
16
Exascale)is)Coming…)
•  ComputaGonal)power)outstripping)I/O)
•  Moving)to)more)in#situ'approaches)
–  Closer)integraGon)with)simulaGon)codes)
–  Minimize)ongnode)and)intergnode)data)movement)
•  When)do)we)process)data?)
–  At)compleGon,)point)of)generaGon,)burst)buffers,)?)
17
ParaView)Catalyst)Architecture)
ParaView Catalyst
Python Wrappings
ParaView Server
Parallel Abstractions and Controls
VTK
Core Visualization Algorithms
18
Running)SimulaGon)with)Catalyst)
Disk)
Storage)
)
)
)
SimulaGon)
)
)
)
)
)
Disk)
)
Storage)
VisualizaGon)
VisualizaGon)
In Situ
In Transit
)
SimulaGon)
)
)
)
)
Separate MPI
19
Why)In'Situ?)
Need a supercomputer to analyze
results from a hero run
)
)
)
)
)
)))))))))))))))))))))))))))
2 orders of magnitude difference
between each level
20
Access)to)More)Data)
Dump)
Times)
Post-processing
In situ processing
CTH (Sandia) simulation with roughly equal data stored at simulation time
Reflections and shadows added in post-processing for both examples
21
Quick)and)Easy)RungTime)Checks)
MPAS-O (LANL) simulation
Faster)Time)to)SoluGon)
CTH)(Sandia))simulaGons)comparing)different)workflows)
23
Small)RungTime)Overhead)
Seconds per Time Step
25
20
data generation
write
cell to point
annotations
render
contour
15
10
5
0
16
32
64
128
256
512
1024
2048
Cores
XRAGE (LANL) simulation
24
Reduced)File)IO)Costs)
Time'of'
Processing'
Type'of'File' Size'per'File'
Size'per'1000'?me' Time'per'File'to'
steps'
Write'at'
Simula?on'
Post)
Restart)
1,300)MB)
1,300,000)MB)
1g20)seconds)
Post)
Ensight)
Dump)
200)MB)
200,000)MB)
>)10)seconds)
In'Situ''
PNG)
.25)MB)
250)MB)
<)1)second)
XRAGE (LANL) simulation
25
SimulaGon,)Adaptor)and)Catalyst)InteracGons)
Solver
• 
Typically)3)calls)between)simulaGon)code)
and)adaptor)
– 
– 
MPI)communicator)(opGonal))
Add)analysis)scripts)
Does)the)work)(potenGally))
Finalize())
InformaGon)provided)by)solver)to)adaptor)
– 
– 
InformaGon)provided)by)adaptor))
– 
– 
– 
– 
CoProcess())
• 
– 
• 
IniGalize())
• 
• 
• 
Adaptor
• 
Pipelines)to)execute)
Time,)Gme)step,)force)output)
Grid)and)fields)when)needed)
MPI)communicator)
InformaGon)provided)by)Catalyst))
–  If)cogprocessing)needs)to)be)done)
–  What)grids)and)fields)are)needed)
Time,)Gme)step,)force)output)
Grids)and)fields)
• 
User)data)can)be)shared)both)ways)
CoProcess)Flow)
SimulaGon)
• 
• 
• 
Called)every)Gme)
step)
Negligible)compute)
Gme)if)no)output)is)
requested)
Only)create)VTK)
objects)if)there)is)in'
situ'work)
Adaptor)
CoProcess(grid, fields,
time, timeStep)
Catalyst)
RequestDataDescription(description)
hasWork
opt hasWork
CreateGridAndFields()
CoProcess(description)
Going)to)Exascale)
•  Freeze)Python)
•  Process)0)reads)
Python)script)and)
broadcasts)to)other)
processes)
•  Don’t)generate).pyc)
files)
•  PHASTA)run)with)
256K)MPI)ranks)on)
Mira)at)ANL)(BG/Q)))
Where)is)Catalyst)Used?)
CAM5)–)atmospheric)modeling,)UCAR)
HydraFTH'–)nuclear)reactor)thermal)
hydraulics,)LANL)and)CASL)
MPASFOcean)–)ocean)simulaGon,)LANL)
and)NCAR)
HELIOS)–)rotorcraK)simulaGon,)DOD)
PHASTA)–)NaviergStokes,)UC)Boulder)
Code_Saturne)–)NaviergStokes)
equaGons,)EDF)
RAGE)–)hydrodynamics,)LANL)
Calore)–)heat)transfer,)SNL)
Zapotec)–)coupled)mechanics/fluids,)SNL)
)
)
CTH–)solid)mechanics,)SNL)
Alegra)–)shock)physics,)SNL)
Albany)–)mulGgphysics,)SNL)
Sparta)–)DSMC,)SNL)
Nalu)–)NaviergStokes)equaGons,)SNL)
Aero)–)NaviergStokes)equaGons,)SNL)
Adagio)–)solid)mechanics,)SNL)
UH3D)–)plasma)simulaGon,)SciberQuest)
VPIC)–)plasma)simulaGon,)LANL)
Aria)–)NaviergStokes)equaGons,)SNL)
Fuego)–)combusGon,)SNL)
)
)
29
)
Changing)Face)of)HPC)
•  HPC)is)geyng)more)complex)
–  GPGPU)
–  Manygcore)
–  Burst)buffers)
–  Persistent)memory)stores)
•  MPI)per)core)will)not)yield)best)performance)
30
What)We)Program)For)
31
What)We)Don’t)Program)For)
32
What)We)Don’t)Program)For)
33
Why)VTKgm?)
GPU'(NVIDIA)'
CPU/MIC'
•  Subgarchitectures:)
•  MulGple)ISAs:)
–  Fermi,)Kepler,)Maxwell,)Pascal)
•  MulGple)Memory)Types:)
–  Global,)shared,)constant,)
texture)
•  Limited)Memory)Size)
•  1000s)of)threads)
–  Grids,)blocks,)and)warps)
–  Vector)unit)widths:)2,4,8)/)16)
•  Single)Memory)Type)
–  Except)for)cache)&)HSM)
•  “Unlimited”)Memory)Size)
•  Up)to)60/260)threads)
–  No)explicit)organizaGon)
•  Except)for)Xeon)Phi)KNL?)
)
Current)Trends)
Jaguar'–'XT5'
Titan'–'XK7'
Exascale*'
Cores)
224,256)
299,008)CPU)and)
18,688)GPU)
1)billion)
Concurrency)
224,256)way)
70)–)500)million)way)
10)–)100)billion)way)
Memory)
300)Terabytes)
700)Terabytes)
128)Petabytes)
35
VTKgm)
• 
• 
• 
• 
Collaborate,)contribute,)and)leverage)threaded)algorithms)
SimulaGon)codes)use)parallel)analysis)and)visualizaGon)
Algorithms)on)all)nextggeneraGon)hardware)
Data)parallel)primiGves)provide)an)abstracGon)layer)
)
)
)
)
)
VTKgm)Architecture)
•  Combines)strengths)of)mulGple)projects:)
–  EAVL,)Oak)Ridge)NaGonal)Laboratory)
–  DAX,)Sandia)NaGonal)Laboratory)
–  PISTON,)Los)Alamos)NaGonal)Laboratory)
Filters)
)
DataModel)
Worklets)
Data)Parallel)Algorithms)
Post)Processing)
IngSitu)
ExecuGon)
Arrays)
VTKgm)Arbitrary)ComposiGon)
• Access)memory)layouts)–)Array)Handle)and)Dynamic)Array)Handle)
– Allows)for)efficient)ingsitu)integraGon)
– Allows)for)reduced)data)transfer)
Control)Environment)
Control)Environment)
Transfer
Transfer
ExecuGon)Environment)
ExecuGon)Environment)
Performance)Portability)
Architecture)
Algorithm)
A)
B)
C)
D)
E)
F)
Performance)Portability)
Backend)
VTKgm)
Algorithm)
A)
B)
C)
D)
E)
F)
VTKgm)Framework)
Control)
Environment)
cont)
Device)
Adapter)
Allocate)
Transfer)
Schedule)
Sort)
…)
)
)
Cell Operations
Field Operations
Basic Math
Make Cells
)
)
exec)
Worklet)
)
Grid Topology
Array Handle
Invoke
ExecuGon)
Environment)
Isosurface)
Algorithm
Device
vtkMarchingCubes Serial
Time
11.917 s
vtkMarchingCubes 32 MPI Ranks
1.352 s
vtkMarchingCubes 64 MPI Ranks
1.922 s
PISTON
Serial
19.895 s
PISTON
CUDA
0.514 s
PISTON
TBB
0.955 s
VTK-m
Serial
20.784 s
VTK-m
CUDA
0.560 s
VTK-m
TBB
1.161 s
Surface)SimplificaGon)
Algorithm
5123
Device
10243
20483
VTK
Serial
3.65 s
11.40 s
VTK-m
Serial
2.73 s
2.93 s
5.22 s
VTK-m
TBB 36 threads 0.36 s
0.45 s
0.72 s
VTK-m
TBB 72 threads 0.41 s
0.49 s
0.74 s
VTK-m
CUDA
0.19 s
0.20 s
0.18 s
Ray)Tracing)
Data Set Algorithm
LT_350K OptiX Prime
EAVL
VTK-m
LT_372K OptiX Prime
EAVL
VTK-m
RM_350K OptiX Prime
EAVL
VTK-m
RM_650K OptiX Prime
EAVL
VTK-m
RM_970K OptiX Prime
EAVL
VTK-m
RM_1.7M OptiX Prime
EAVL
VTK-m
RM_3.2M OptiX Prime
EAVL
VTK-m
Seismic
OptiX Prime
EAVL
VTK-m
Millions of Rays Per Second
357.6
150.8
164.5
322.4
124.7
140.8
436.5
197.5
200.8
420.4
172.9
166.0
347.1
152.8
163.5
266.8
136.6
148.8
264.5
124.8
134.5
267.8
106.3
119.4
Data Set Algorithm Millions of Rays Per Second
LT_350K Embree
51.9
EAVL
27.7
VTK-m
38.5
LT_372K Embree
56.5
EAVL
26.1
VTK-m
36.0
RM_350K Embree
64.8
EAVL
33.3
VTK-m
47.8
RM_650K Embree
65.9
EAVL
35.6
VTK-m
49.1
RM_970K Embree
59.1
EAVL
29.3
VTK-m
41.0
RM_1.7M Embree
52.4
EAVL
27.0
VTK-m
37.8
RM_3.2M Embree
48.4
EAVL
28.3
VTK-m
33.9
Seismic
Embree
43.2
EAVL
25.2
VTK-m
34.5
Direct)Volume)Rendering)
Device Algorithm Frames Per Second
VTK
2.08
CPU
VTK-m
1.25
GPU
Dax
VTK-m
3.55
6.79
MIC
Dax
VTK-m
0.07
0.28
47
Reader)
Filter)
Algorithm)
Filter)
Filter)
Rendering)
SimulaGon)
Closing)Thoughts)
•  Permissively)licensed)open)source)projects)
•  Need)for)deeper)collaboraGons)
–  Develop)simulaGons)with)data)processing/viz)in)mind)
–  Develop)improved)data)structures,)formats,)exchange)
•  Gaining)insight)from)increasingly)complex)data)
–  SimulaGons,)experiments,)validaGon,)reproducibility)
•  Need)support)for)C++11,)even)C++14)on)HPC)
•  More)frequent)updates)on)HPC)
)
–  Compilers,)dependencies,)drivers,)etc)
50