Open, Reproducible HPC Data Analysis and Visualization
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