generic refinement and block partitioning | gtc 2013...1 gpu technology conference gtc2013 18-21...

21
1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU CFD on Unstructured Grids Matthieu Lefebvre 1 , Jean-Marie Le Gouez 2 1 PhD at Onera, now post-doc at Princeton, department of Geosciences, [email protected] 2 Director of CFD and Aeroacoustics Department, Onera, Châtillon

Upload: others

Post on 01-Oct-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

1 GPU technology Conference GTC2013 18-21 March 2013 San José

Generic Refinement and Block Partitioning enabling efficient GPU CFD on Unstructured Grids

Matthieu Lefebvre1, Jean-Marie Le Gouez2

1PhD at Onera, now post-doc at Princeton, department of Geosciences, [email protected]

2Director of CFD and Aeroacoustics Department, Onera, Châtillon

Page 2: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

2 GPU technology Conference GTC2013 18-21 March 2013 San José

Efficient GPU CFD on Unstructured Grids

•Context

•Objectives

•Development stages, data models, languages

•Results of CFD method implementations

•Outlook

Page 3: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

3 GPU technology Conference GTC2013 18-21 March 2013 San José

Context: Simulation & HPC

CFD legacy softwares

•elsA : aerodynamics and aeroelasticity, •Cedre : combustion and aerothermics, •Sabrina/Space/Funk : LES, Aeroacoustics, Euler equations in perturbations, linear or not•Hundreds of thousands lines, mixed Fortran, C++, Python for elsA•High usage in aerospace industry

External user expectations : need solutions to process •Larger flow domains � effect of wakes on downstream components : BVI,

•Full system modeling like multistage aerodynamics in turbomachinery, coupling with the combustion

•More multiscale : near-wall modeling, technological details to gain in system efficiency, flow control,

•Up-to-date CFD usage : Shape optimization, building and use of response surfaces, robust design, i.e. effect of existing uncertainties on input data : on-going integration in mainstream codes

Page 4: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

4 GPU technology Conference GTC2013 18-21 March 2013 San José

Context: Simulation & HPC

Internal users expectations, as front end to the external users :New class of methods to develop better models of flow behavior�confidence that novel numerical schemes will better preserve their models from spoiling by numerical diffusion/dispersion (still not a consensus),�more efficiency : accuracy versus number of cells, grid convergence�Objective : Billion cells, long unsteady runs, deforming & overlapping meshes (LES, DES, Aeracoustics)

Evidences : 1/ Ongoing heavy development plans of the legacy software to develop & validate new functionalities �risks on the scalability towards Petaflop’scomputing

2/ Innovative research at Onera : numerous prototypes•Grid strategies : - structured

- unstructured- overset, self generated, adaptive

associated to model certification, international benchmarks•Numerical schemes and non-linear solvers : DGM (h-p-M adaptation), VMS turbulence (Variational multiscale with hierarchy in basis functions), High Order FV•Mesh/model/physics coupling strategies

Page 5: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

5 GPU technology Conference GTC2013 18-21 March 2013 San José

Objectives : Simulation & HPC

Proceed with innovative solver prototypes, h,p-Model adaptive : DGM, Hybrid&OversetFV ?, Isogeometric FE with high order curved boundary elements

Analyse the hierarchy in hardware computing core implementations, coprocessor farms, the associated hierarchy in memory access,

Specify modular solvers on partitioned grids, adaptive and hierarchical data models, reuse (rewrite, simplify) existing modules code lines (already subdomain&MPI)

Follow the way for a CFD Domain Specific Language

Page 6: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

6 GPU technology Conference GTC2013 18-21 March 2013 San José

Generic GPU Finite Volume prototype

Generic GPU Finite Volume prototype

Uses a High Order in space FV method (NXO)

From a Fortran basis, which uses complex data structures on partitioned grids, calls the coprocessor modules (C subroutines, CUDA kernels), mocks-up and arranges the data model in C and Cuda, manages the pointers on GPU memory and thread submission for high CPU efficiency on TESLA

1st (easy) stage : on i,j,k structured grids multi-GPU implementation2nd stage : on an existing arbitrary mesh of triangles

2a : domain partitioning of fine linear triangles (gmsh) addressed to blocks of threads : efficient usage of cache

2b : partitioning and generic refinement of an unstructured coarse mesh of triangles (high geometrical order triangles by gmsh) : efficient coalescent memory acesses in all the solver inner stages (kernel computations element-based, face-based, node-based)

Page 7: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

7 GPU technology Conference GTC2013 18-21 March 2013 San José

Used to determine language / API / tools to useCUDA C/Fortran, OpenCLPGI Accelerator

2D and 3D solvers

Cartesian EulerCartesian EulerCartesian Euler

Euler equations with immersed boundaries i,j,k grid

2nd order schemesRoe Fluxes / MUSCLCartesian structuration

Page 8: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

8 GPU technology Conference GTC2013 18-21 March 2013 San José

Cartesian Euler : Multi-GPUs Communication Scheme

CUDA C model preferred2 Fermi GPUs

collaboration through the pthread library

Flat plate25 M points

Mach 0.720 degree incidence

Page 9: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

9 GPU technology Conference GTC2013 18-21 March 2013 San José

3D Experiments – Speedup and Scalability Results

Speedup 1 M2050 vs. 2 M2050 : up to 2.11

Speedup

Problem size

Page 10: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

10 GPU technology Conference GTC2013 18-21 March 2013 San José

Challenge: Accelerating Non “GPU Compliant” Codes

•Unstructured grids

•Large stencils (up to the third neighbor to compute the fluxes for each cell interface, very high memory stress

•Reaches 4th-order spatial accuracy

•However algorithmic efficiency is hampered by the numerous indirect memory accesses through the arbitrary connectivity lists accessed at successive stages of the algorithm (cell-,face-, node-, stencil-based descriptions).

On a GPU such non consecutive memory fetches are penalizing

NXONXO

Page 11: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

11 GPU technology Conference GTC2013 18-21 March 2013 San José

1st Approach: Block Structuration of a Regular Linea r Grid

Partition the mesh into small blocks

SM SMSM SM

Block Block Block Block

SM: Stream Multiprocessor

Map the GPU scalable structure

Page 12: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

12 GPU technology Conference GTC2013 18-21 March 2013 San José

Advantage of the Block Structuration

●Bigger blocks provide

• Better occupancy

• Less latency due to kernel launch

• Less transfers between blocks

●Smaller blocks provide

• Much more data caching

0

20

40

60

80

100

L1 hit rate0

0,2

0,4

0,6

0,8

1

Fluxes time (normalized)0

0,2

0,4

0,6

0,8

1

1,2

Overall time(normalized)

2561024409624097

● Final speedup wrt. to 2 hyperthreaded Westmere CPU: ~2

Page 13: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

13 GPU technology Conference GTC2013 18-21 March 2013 San José

NXONXONXONXO----GPU Phase 2 : Imposing an GPU Phase 2 : Imposing an GPU Phase 2 : Imposing an GPU Phase 2 : Imposing an Inner Inner Inner Inner StructurationStructurationStructurationStructuration to the to the to the to the Grid Grid Grid Grid (inspired by the (inspired by the (inspired by the (inspired by the ‘‘‘‘tesselationtesselationtesselationtesselation’’’’ mechanism in surface rendering)mechanism in surface rendering)mechanism in surface rendering)mechanism in surface rendering)

‘red’ block partition

Hints for further optimization : •relax the grid coordinates once the substructuration is done•the whole fine grid as such could remain unknown to the host CPU

Page 14: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

14 GPU technology Conference GTC2013 18-21 March 2013 San José

NXONXONXONXO----GPU Phase 3 : Imposing an GPU Phase 3 : Imposing an GPU Phase 3 : Imposing an GPU Phase 3 : Imposing an Inner Inner Inner Inner StructurationStructurationStructurationStructuration to the to the to the to the GridGridGridGrid

Unique grid connectivity for the algorithmUnique subsets of cell groups for communications

Optimal to organize data for coalescent memory accessduring the algorithm and communication phases

Each coarse element in a block is allocated to an inner thread (threadId.x)

Sub-structured interface vector for communication

To improve the percentage of coalescent communication :

�Renumber the coarse cells in a partition�Change the orientation (permutaion of the sides)

Page 15: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

15 GPU technology Conference GTC2013 18-21 March 2013 San José

Code structure Preprocessing

Postprocessing

Mesh generation and block and generic refinement generation

Visualization and data analysis

Solver

Allocation and initialization of data structure from the modified mesh file

Computational routine

Time stepping

Data fetching binder

Computational binders

GPU allocation and initialization binders

CUDA kernels

Fortran

Fortran

C

C

C

CUDA

Page 16: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

16 GPU technology Conference GTC2013 18-21 March 2013 San José

Code structureStencils and Ghost cellsStencils and Ghost cellsStencils and Ghost cellsStencils and Ghost cells

Coupling mechanisms :

Identify ghost cells with real fine cells from neighbor coarse cells (transfer its metrics)

or :

do an overset grid interpolation to obtain the volume average of the conserved variables on the extruded ghost cells

Reference element to be mapped on curvilinear cells

Page 17: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

17 GPU technology Conference GTC2013 18-21 March 2013 San José

Code structureCPU Data structure

Block List

+ ...

Block

+ Conservative variables+ Stencils coefficients+ ...

Coarse Element

+ Generic geometry arrays+ Connectivity between fine elements

11..*

Coarse elementnumber

Fine element number

Array filling : face AND cell values are consecutives for coarse element indexing

Page 18: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

18 GPU technology Conference GTC2013 18-21 March 2013 San José

Code structure

GPU Data structure

Block List

+ ...

Block

+ ...

1

1..*

Block List

+ ...

Block

+ ...

Fortran 2003 interface

Block ''C pointer'' List

+ ...

1..*

1

1

Coarse Element

+ ...

Coarse Element

+ ...

GPU

CPUCPU

CPU

CPU

GPU

C / CUDA

Fortran

Fortran 2003 ''C pointer'' localisation

CPU

CPU

CPU

CPU

CPU

GPU

GPU

CPU

Page 19: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

19 GPU technology Conference GTC2013 18-21 March 2013 San José

Code structure Language interoperability

typedef struct { int number_elements; int number_faces; int size_stencil;

double *wall_distance; double *dissipation_rate; // ... double *flu_u; double *flu_v; // ... double *producted_kinetic_energy; double *pseudo_timestep; double *ro; double *sfx; double *sfy; double *temperature; double *viscosity; double *vol; //... int *face_vertices; int *index_element_faces; int *index_face_elements; int *number_elements_stencils; int *stencil_indexes; int *index_stencil_faces; // inter coarse element communications int *message_src; // Boundaries conditions int number_adherent_faces; int number_open_faces; int *adherent_faces; int *open_faces;} block_data_t;

TYPE block_data_t integer(C_INT) :: number_elements integer(C_INT) :: number_faces integer(C_INT) :: size_stencil

real(C_DOUBLE), dimension(:), allocatable :: wall_distance real(C_DOUBLE), dimension(:), allocatable :: dissipation_rate ! ... real(C_DOUBLE), dimension(:), allocatable :: flu_u real(C_DOUBLE), dimension(:), allocatable :: flu_v ! ... real(C_DOUBLE), dimension(:), allocatable :: producted_kinetic_energy real(C_DOUBLE), dimension(:), allocatable :: pseudo_timestep real(C_DOUBLE), dimension(:), allocatable :: ro real(C_DOUBLE), dimension(:), allocatable :: sfx real(C_DOUBLE), dimension(:), allocatable :: sfy real(C_DOUBLE), dimension(:), allocatable :: temperature real(C_DOUBLE), dimension(:), allocatable :: total_energy real(C_DOUBLE), dimension(:), allocatable :: viscosity real(C_DOUBLE), dimension(:), allocatable :: vol ! ... integer(C_INT), dimension(:), allocatable :: face_vertices integer(C_INT), dimension(:), allocatable :: index_element_faces integer(C_INT), dimension(:), allocatable :: index_face_elements integer(C_INT), dimension(:), allocatable :: number_elements_stencils integer(C_INT), dimension(:), allocatable :: stencil_indexes integer(C_INT), dimension(:), allocatable :: index_stencil_faces // inter coarse element communications integer(C_INT), dimension(:), allocatable :: message_src ! Boundaries conditions integer(C_INT) :: number_adherent_faces integer(C_INT) :: number_open_faces integer(C_INT), dimension(:), allocatable :: adherent_faces integer(C_INT), dimension(:), allocatable :: open_faces END TYPE block_data_t

Page 20: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

20 GPU technology Conference GTC2013 18-21 March 2013 San José

Measured efficiency on a Tesla 2050 (with respect t o 2 Cpu Xeon 5650, OMP loop-based)

Simple duplication

Fine grid partitioning

Coarse grid refinement and partitioning

Refinement without partitioning

Recent results on a K20C : Max. Acceleration = 38 w rt to 2 Westmere sockets, very good scaling from the C2050 with

the number of cores (2000 / 480), due to a lower pr essure on registers ?

Page 21: Generic Refinement and Block Partitioning | GTC 2013...1 GPU technology Conference GTC2013 18-21 March 2013 San José Generic Refinement and Block Partitioning enabling efficient GPU

21 GPU technology Conference GTC2013 18-21 March 2013 San José

Generic refinement methodology permits coalesced data accesses in global memoryExchange step between coarse cells ~ 10% global time

Refinement level adaptable to the target computer architectureRefinement level adaptable to the solution (clustering in space and blocks of threads of coarse cells with identical refinement)

Natural extension of the partitioned structure to multi-GPUs,

Further works : extension to 3D and other types of elements

A prototype of hierarchical data model, further methods (DGM, 2nd order compact schemes on unstructured grids) and turbulence models will be ported in new kernels.

At present non linear implicit in real time by dual time stepping, a linearized implicit formulation will be implemented

Conclusion