22
TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Code Overview and Status Timmie Smith November 14, 2003

  • View
    214

  • Download
    1

Embed Size (px)

Citation preview

Page 1: TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Code Overview and Status

Timmie SmithNovember 14, 2003

Page 2: TAXI Code Overview and Status Timmie Smith November 14, 2003

Problem Specification

Given a configuration at time T Spatial domain divided into cells Energy range divided into groups Quadrature set chosen for angular integrals Fixed Sources, Boundary Conditions, and

Initial Conditions Compute particle flux at time T + T

Particle flux at time T + T Reaction rates, etc., during time step

Page 3: TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Data Structures

Spatial domain decomposed into Cells Cells are stored in a grid Cell contains Elements

Elements are the base spatial data structure Material definitions stored as in time-

dependent neutronics problems Number densities

stored by cell Microscopic cross

sections stored by isotope Elemen

t

Element

Element

Element

Cell

Grid

Page 4: TAXI Code Overview and Status Timmie Smith November 14, 2003

Aggregation in TAXI

Angle Sets Angles in AngleSet generate same

dependences Energy Group Sets Cell Sets

Code computes aggregation User can specify an aggregation if they want

Work function operates on GroupSet-AngleSet-CellSet combination

Page 5: TAXI Code Overview and Status Timmie Smith November 14, 2003

STAPL Overview

Standard Template Adaptive Parallel Library

Superset of C++ STL pContainers – generic distributed containers pAlgorithms – generic parallel algorithms pRange - abstract view of partitioned data

binds pContainers and pAlgorithms view of dist. data, random access, data

dependences

Example: parallel sorting a distributed vectorstapl::pvector<int> pv(100);… initialize pv …stapl::p_sort( pv.get_prange() );

Page 6: TAXI Code Overview and Status Timmie Smith November 14, 2003

The STAPL Programming Environment

ARMI

MPIOpenMPPthreads Native

pAlgorithms pContainers

User Code

pRange

Page 7: TAXI Code Overview and Status Timmie Smith November 14, 2003

Grid Overview ArbitraryPGrid is derived from

BaseSpatialGrid pGraph

Grid is templated on cell type (brick, polyhedral, etc.) element type (whole_cell, corner, ...)

It contains instantiations of cells (one per graph_vertex) faces (really graph_edges)

It contains methods for putting outgoing-surface intensities

into graph_edges getting incoming-surface intensities

from graph_edges both of these are

(anglesetgroupset) at a time

Graph Vetex

Cell

Graph Edge

Page 8: TAXI Code Overview and Status Timmie Smith November 14, 2003

Cell Overview Cell class doesn’t contain much.

list of isotopes and their number densities list of elements list of vertex indices

The “element” concept gives us great generality and flexibility.

There is one element for each “fundamental” spatial unknown. For example:

simple methods with one unknown per cell use the “whole-cell” element

methods with one unknown per vertex per cell use the “corner” element

Page 9: TAXI Code Overview and Status Timmie Smith November 14, 2003

Element Overview

Elements contain: volumetric sources (scattering and total) the solution (angular moments for

generating the scattering source; also the angular intensities in a time-dependent problem)

Most of the code is unaware of problem geometry or discretization method.

It just loops over elements Work function processes the Cells in a

STAPL pRange

Page 10: TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Setup

Energy and Angle objects constructed Grid partition decided

Specialized STAPL scheduling algorithms used Partition information distributed Grid constructed in parallel

Cells and Elements created and inserted pRanges built on grid

Specialized STAPL scheduler determines pRanges

pRange dependence graphs are directed

Page 11: TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Implementation History C++ selected for implementation

Wanted to use STL and STAPL Prototype implemented with C++ and MPI

STAPL components weren’t fully implemented STAPL didn’t support distributed memory

systems STAPL has advanced

ARMI Runtime System provides a consistent base for development

Allows STAPL to run on distributed memory systems pContainers provide data distribution and parallel

operations pRange supports hierarchical decomposition of

data Scheduling components incorporated into STAPL

Page 12: TAXI Code Overview and Status Timmie Smith November 14, 2003

STAPLing TAXI

Custom Data Structures Distributed 3D vector class

User managed distribution 3D indexing (e.g. foo[x][y][z]) Stored Cells and CellSets

CellSet class Explicit list of graph vertex ids (Cells in the

CellSet) List of ids provided cell sweep order

Page 13: TAXI Code Overview and Status Timmie Smith November 14, 2003

STAPLing TAXI

pGraph stores Cells Each pGraph vertex is a Cell pGraph edges identify neighboring cells Arbitrary grids now possible 2D grids also possible

pRange used to represent CellSet General representation of dependences

between CellSets Multiple execution orders of cells in subrange

possible

Page 14: TAXI Code Overview and Status Timmie Smith November 14, 2003

pRange Dependence Graph

Numbers are cellset indices Colors indicate processors

angle-set A angle-set B angle-set C1

2 5

3 6

4 7

8

10 13

18 2112 15

14 1711

9

22 2516 19

26 2920 23

3024 27

28 31

32

4

3 8

2 7

1 6

5

11 16

19 249 14

15 2010

12

23 2813 18

27 3217 22

3121 26

25 30

29

32

31 28

30 27

29 26

25

23 20

15 1221 18

19 1622

24

11 817 14

7 413 10

39 6

5 2

1

29

30 25

31 26

32 27

28

22 17

14 924 19

18 1323

21

10 520 15

6 116 11

212 7

8 3

4

angle-set D

Page 15: TAXI Code Overview and Status Timmie Smith November 14, 2003

1

2 5

3 6

4 7

8

10 13

18 2112 15

14 1711

9

22 2516 19

26 2920 23

3024 27

28 31

32

angle-set A4

3 8

2 7

1 6

5

11 16

19 249 14

15 2010

12

23 2813 18

27 3217 22

3121 26

25 30

29

angle-set B

Adding a reflecting boundary

32

31 28

30 27

29 26

25

23 20

15 1221 18

19 1622

24

11 817 14

7 413 10

39 6

5 2

1

angle-set C29

30 25

31 26

32 27

28

22 17

14 924 19

18 1323

21

10 520 15

6 116 11

212 7

8 3

4

angle-set D

Page 16: TAXI Code Overview and Status Timmie Smith November 14, 2003

A second reflecting boundary

1

2 5

3 6

4 7

8

10 13

18 2112 15

14 1711

9

22 2516 19

26 2920 23

3024 27

28 31

32

angle-set A4

3 8

2 7

1 6

5

11 16

19 249 14

15 2010

12

23 2813 18

27 3217 22

3121 26

25 30

29

angle-set B32

31 28

30 27

29 26

25

23 20

15 1221 18

19 1622

24

11 817 14

7 413 10

39 6

5 2

1

angle-set C29

30 25

31 26

32 27

28

22 17

14 924 19

18 1323

21

10 520 15

6 116 11

212 7

8 3

4

angle-set D

Page 17: TAXI Code Overview and Status Timmie Smith November 14, 2003

Opposing reflecting boundary

1

2 5

3 6

4 7

8

10 13

18 2112 15

14 1711

9

22 2516 19

26 2920 23

3024 27

28 31

32

angle-set A4

3 8

2 7

1 6

5

11 16

19 249 14

15 2010

12

23 2813 18

27 3217 22

3121 26

25 30

29

angle-set B32

31 28

30 27

29 26

25

23 20

15 1221 18

19 1622

24

11 817 14

7 413 10

39 6

5 2

1

angle-set C29

30 25

31 26

32 27

28

22 17

14 924 19

18 1323

21

10 520 15

6 116 11

212 7

8 3

4

angle-set D

Page 18: TAXI Code Overview and Status Timmie Smith November 14, 2003

STAPLing TAXI

Abstracting Communication Explicit MPI calls in driver function replaced

with calls to ARMI methods pGraph uses ARMI to transfer information

between threads when necessary ARMI fences replace MPI barriers

Fences required during problem initialization Most fences handled inside STAPL

Page 19: TAXI Code Overview and Status Timmie Smith November 14, 2003

Effects of STAPLing

Problem Time to Completion Average 2.16 times slower but improving

rapidly Currently 15 global barriers in the ASCI code There is opportunity for improvement

Page 20: TAXI Code Overview and Status Timmie Smith November 14, 2003

Effects of STAPLing

Reduced code size Code reduced ~6,000 lines.

Currently 13,000 lines and shrinking Elimination of classes

MPI wrappers XYZSpace CellSet

Code Reorganization Problem class reorganized Eliminated explicit grid distribution Use of pRanges

Page 21: TAXI Code Overview and Status Timmie Smith November 14, 2003

TAXI Drivervoid driver() { BaseProblem* problem = read_problem(*input_stream, *output_stream,

*error_stream); problem->solve(); problem->report();}

BaseProblem* read_problem(istream& input_stream, ostream& output_stream, ostream& error_stream){

ProblemInput* pinput = new ProblemInput(input_stream); Hex_cell_creator creator(*pinput); BaseEnergyAggregation egs; XMLObject xml_input = pinput->getTagObject("prototype")[0]; egs.init_from_input(xml_input, output_stream); asci_preprocessing::ASCI_Regular_pRange_Preprocessor* sched =

build_brick_scheduler(creator.dimx(), creator.dimy(), creator.dimz(), egs, *pinput);

BaseProblem* bp= new GenericSweepProblem<LogicallyRectangularGrid, Wt_Diamond_Diff_Method>(pinput, creator, egs, sched, output_stream, error_stream);

return bp;}

Page 22: TAXI Code Overview and Status Timmie Smith November 14, 2003

Questions?