Top Banner
GridPACK™: A Framework for Developing Power Grid Simulations on High Performance Computing Platforms Bruce Palmer, William Perkins, Yousu Chen, Shuangshuang Jin, David Callahan, Kevin Glass, Ruisheng Diao, Mark Rice, Stephen Elbert, Mallikarjuna Vallem, Zhenyu (Henry) Huang 1
24

GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Dec 01, 2018

Download

Documents

VuHanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™: A Framework for Developing Power Grid Simulations on High Performance Computing Platforms Bruce Palmer, William Perkins, Yousu Chen, Shuangshuang Jin, David Callahan, Kevin Glass, Ruisheng Diao, Mark Rice, Stephen Elbert, Mallikarjuna Vallem, Zhenyu (Henry) Huang

1

Page 2: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

The  Power  Grid  

2

Page 3: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Motivation

! Power grid is enormously complex but is still mostly modeled using serial code

! To fit models onto a single core, numerous approximations and aggregations have been used

! Using parallel code would allow engineers to relax some of the current restrictions in their models but the barrier to creating parallel code is high

3

Page 4: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Considerations

! The power grid is represented as a graph ! Graph nodes (buses) and edges (branches) are highly

heterogeneous. Different buses and branches can have very different qualities

! Most models describing the power grid are expressed in terms of non-linear algebraic equations involving complex variables

! Need to capture a diverse range of models and numerical approaches to cover power grid applications

4

Page 5: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™ Framework

! Object-oriented design implemented in C++ ! Use software templates and inheritance to create

application-specific versions of most framework modules ! Hide all communication and minimize the number of

parallel concepts that application developers must deal with

! Focus on “local” calculations in application ! Wrap math libraries to separate libraries from the rest of

the framework and allow seamless substitution of other libraries in the future

5

Page 6: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

6

Core  Data  Objects  

Power Grid Network

Matrices and Vectors

Application Driver

Base Network Components •  Neighbor Lists •  Matrix Elements

Network Module •  Exchanges •  Partitioning

Export Module •  Serial IO •  PTI Formats

GridPACK™  Framework  

GridPACK™  Applica;ons  

Utilities •  Errors •  Profiling

Base Factory •  Network-wide

Operations

Application Factory

Application Components

Y-matrix

Dynamic Simulation

Powerflow

Configure Module •  XML

Mapper Math and Solver Module •  PETSc

Import Module •  PTI Formats •  Dictionary

Task Manager

Page 7: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Software Hierarchy

7

Matrix-Vector Interface

Base Component

Base Bus Component Base Branch Component

Application Bus Application Branch

Base Network<AppBus , AppBranch>

Serial IO<AppNetwork> Base Factory<AppNetwork>

Mapper<AppNetwork>

App Factory<AppNetwork>

Network Parser<AppNetwork>

Page 8: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Network Module

! Templated class that takes application-specific bus and branch objects as template arguments

! Manages partitioning of network and exchange of data between processors

! Assigns internal indices that are used by other framework modules

8

Page 9: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Schematic Diagram of Network Object

Framework-defined interface User-

defined model

Page 10: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Network Partition

10

Page 11: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™ Mappers

! Construct matrices from contributions from buses and branches

! Manage index transformations between grid location and matrix

! Construct matrices with sensible row partitions based on network partition

11

Page 12: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™ Mappers: Initial Network

12

1 2 3

4

5

6

7 8

12

11

10 9

Page 13: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™ Mappers: Matrix Contributions

13

1 2 3

4

5

6

7 8

12

11

10 9

No matrix contribution

No matrix contribution

No matrix contribution

Page 14: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

GridPACK™ Mappers: Matrix Generation

14

Final Matrix Initial Placement

Page 15: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Matrix Contributions

! Calculations are “local” ! Only involve sums over

neighboring branches or sums over the two buses at the ends of a branch

Yii=-ΣjYij ! Each bus/branch

evaluates its local block, the mapper builds the matrix in a consistent manner

15

Page 16: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Math Module

! Wraps a parallel solver library (currently PETSc) and provides high level interface for manipulating matrices and vectors

! Provides interface for setting up distributed matrices and vectors

! Supports basic matrix/operations such as matrix-vector multiply, vector norms, matrix transpose, dot products, etc.

! Supports linear and non-linear solvers and preconditioners

16

Page 17: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Powerflow Application

17

1 typedef BaseNetwork<PFBus,PFBranch> PFNetwork; 2 typedef PFFactory<PFNetwork> PFfactory; 3 Communicator world; 4 shared_ptr<PFNetwork> network(new PFNetwork(world)); 5 6 PTI23_parser<PFNetwork> parser(network); 7 parser.parse(“network.raw”); 8 network->partition(); 9 10 PFfactory factory(network); 11 factory.load(); 12 factory.setComponents(); 13 factory.setExchange(); 14 15 network->initBusUpdate(); 16 factory.setYBus(); 17 factory.setSBus(); 18 factory.setMode(RHS); 19 BusVectorMap<PFNetwork> vMap(network); 20 shared_ptr<Vector> PQ = vMap.mapToVector(); 21 22 factory.setMode(Jacobian); 23 FullMatrixMap<PFNetwork> jMap(network); 24 shared_ptr<Matrix> J = jMap.mapToMatrix(); 25 shared_ptr<Vector> X(PQ->clone());

Read in network from external file and partition network

Initialize network components

Evaluate matrix components and create right hand side vector

Create Jacobian matrix

Page 18: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Powerflow Application

18

26 double tolerance = 1.0e-6; 27 int max_iteration = 20; 28 ComplexType tol; 29 LinearSolver solver(*J); 30 31 int iter = 0; 32 33 solver.solve(*PQ, *X); 34 tol = PQ->normInfinity(); 35 36 while (real(tol) > tolerance && iter < max_iteration) { 37 factory.setMode(RHS); 38 vMap.mapToBus(X); 39 network->updateBuses(); 40 vMap.mapToVector(PQ); 41 factory.setMode(Jacobian); 42 jMap.mapToMatrix(J); 43 solver.solve(*PQ,*X); 44 tol = PQ->normInfinity(); 45 iter++; 46 }

Create solver and perform initial solve

Execute Newton-Raphson iterative loop

Page 19: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Component Hierarchy

19

Matrix-Vector Interface

Base Component

Base Bus Component Base Branch Component

Y-matrix Bus Y-matrix Branch

Powerflow Bus Powerflow Branch

Page 20: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Powerflow Scaling for Artificial 777646 Bus Network

0.0

50.0

100.0

150.0

200.0

250.0

300.0

350.0

400.0

0 10 20 30 40 50 60 70

ParsingPartitioningSolverTotal

Tim

e (s

econ

ds)

Number of Processors

Page 21: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Dynamic Simulation

0.0

50.0

100.0

150.0

200.0

0 10 20 30 40 50 60 70

PartitionSolverMultiplyTotal

Tim

e (s

econ

ds)

Number of Processors

Simulation of 16351 bus WECC network

Page 22: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Current Activities

! Development of object-oriented Fortran 2003 interface ! Development of more generalized matrix-vector interface

to support applications where dependent and independent variables are associated with both buses and branches (not just buses)

! Investigating new methods for distributing data to the network (distributed hashing algorithms)

22

Page 23: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Conclusions

! A software framework for developing parallel power grid applications has been developed

! Several different types of power grid applications have been developed using the framework. These applications demonstrate parallel speedup

! GridPACK™ is available for download at https://gridpack.org

! Contact [email protected]

23

Page 24: GridPACK™: A Framework for Developing Power Grid ...hpc.pnl.gov/conf/wolfhpc/2014/talks/palmer.pdf · Developing Power Grid Simulations on High Performance Computing Platforms ...

Acknowledgments

! This work is supported by the U.S. Department of Energy (DOE) through its Advanced Grid Modeling Program.

! Computing resources were provided by Pacific Northwest National Laboratory through its PNNL Institutional Computing program

! GridPACK™ is available for download at https://gridpack.org