Transcript
Page 1: Sparse matrix computations

Sparse matrix computations

Dave O’Hallaron

Intel Research Pittsburgh

Sept 2007

Page 2: Sparse matrix computations

Scientific Computing Process

Earthquake ground motion

Physical System

mesh

elementnode

ComputerModel

FEM solver

Numerical Model

Galerkin discretization

t

simulation results

VisualizationModel

Animation

Physical Model

Material property model

Mathematical Model

Wave propagation equation

2

2

t

uIuuu T

Page 3: Sparse matrix computations

Scientific Computing Workflow

Mesh

t

Simulation results

Physical model Mesh

generationVisuali-zation

Solver

Mesh

Page 4: Sparse matrix computations

David O’Hallaron (CMU CS and ECE)Jacobo Bielak (CMU CivE)

Page 5: Sparse matrix computations

1994 Northridge Quake Simulation

20 seconds of an aftershock from the Jan 17, 1994 Northridge quake in San Fernando Valley of Southern California.

Page 6: Sparse matrix computations

Teora, Italy1980

Page 7: Sparse matrix computations

San Fernando Valley

x

epicenter lat. 34.32 long. -118.48

lat. 34.08 long. -118.75

lat. 34.38 long. -118.16

San Fernando Valley

Page 8: Sparse matrix computations

San Fernando Valley (Top View)

Soft soil

Hard rock

xepicenter

Page 9: Sparse matrix computations

San Fernando Valley (Side View)

Soft soil

Hard rock

Page 10: Sparse matrix computations

Initial node distribution

Page 11: Sparse matrix computations

Unstructured mesh (top view)

Page 12: Sparse matrix computations

Partitioned Unstructured Mesh

element

nodes

Page 13: Sparse matrix computations

Quake solver code

NODEVECTOR3 disp[3], M, C, M23; MATRIX3 K;

/* matrix and vector assembly */ FORELEM(i) { ... }

/* time integration loop */ for (iter = 1; iter <= timesteps; iter++) { SMVP(K, disp[dispt], disp[disptplus]); disp[disptplus] *= - IP.dt * IP.dt; disp[disptplus] += 2.0 * M * disp[dispt] - (M - IP.dt / 2.0 * C) * disp[disptminus] - ...); disp[disptplus] = disp[disptplus] / (M + IP.dt / 2.0 * C); i = disptminus; disptminus = dispt; dispt = disptplus; disptplus = i;}

K is the adjacency matrix of the mesh, a labeled undirected graph

The disp vector records thedisplacements of each mesh node during last three timesteps

90% of time spent in sparse matrix vector

product (SMVP) kernel


Recommended