creating profiling tools to analyze and optimize fipy presentation

37
Creating Profiling Tools to Analyze and Optimize FiPy Danya D. Murali Advisors: Jonathan E. Guyer and Daniel Wheeler Materials Measurement Laboratory Material Science and Engineering Division Center for Theoretical and Computational Material Science

Upload: dmurali2

Post on 15-Jul-2015

164 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Creating Profiling Tools to Analyze and

Optimize FiPy

Danya D. MuraliAdvisors: Jonathan E. Guyer and Daniel Wheeler

Materials Measurement Laboratory

Material Science and Engineering Division

Center for Theoretical and Computational Material Science

Page 2: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Outline

● FiPy Introduction

● How it works

● Examples

● Problems with FiPy

● Profiling Tools

● What are the they?

● How our tools work

● Results

● Conclusion

Page 3: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

What is FiPy?

● An open source Python-based program that

uses the Finite Volume method to numerically

solve Partial Differential Equations (PDEs)

● Python has many powerful numerical libraries

● Designed for material scientists by material

scientists

Page 4: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

What is a PDE?

Page 5: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Finite Volume Method

● Solve a general PDE on a given domain for a field

Page 6: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Finite Volume Method

● Solve a general PDE on a given domain for a field

● Integrate PDE over general control volumes

Page 7: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Finite Volume Method

● Solve a general PDE on a given domain for a field

● Integrate PDE over general control volumes

● Integrate PDE over polyhedral control volumes

Page 8: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Finite Volume Method

● Solve a general PDE on a given domain for a field

● Integrate PDE over general control volumes

● Integrate PDE over polyhedral control volumes

● Obtain a set of linear equations

Page 9: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

How FiPy Works

import fipy as fp

L = 1.

N = 100

m = fp.Grid2D(Lx=L, Ly=L, nx=N, ny=N)

v = fp.CellVariable(mesh=m)

x, y = m.cellCenters

v[x > L / 2] = 1.

v.constrain(0., where=m.facesLeft |

m.facesRight)

v.constrain(1., where=m.facesTop |

m.facesBottom)

e = fp.TransientTerm() == fp.DiffusionTerm()

for i in range(10):

e.solve(v, dt=0.001)

fp.Viewer(v).plot()

Page 10: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

How FiPy Works

import fipy as fp

L = 1.

N = 100

m = fp.Grid2D(Lx=L, Ly=L, nx=N, ny=N)

v = fp.CellVariable(mesh=m)

x, y = m.cellCenters

v[x > L / 2] = 1.

v.constrain(0., where=m.facesLeft |

m.facesRight)

v.constrain(1., where=m.facesTop |

m.facesBottom)

e = fp.TransientTerm() == fp.DiffusionTerm()

for i in range(10):

e.solve(v, dt=0.001)

fp.Viewer(v).plot()

Page 11: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Examples of FiPy: Polycrystal and Phase Field

courtesy S. A. David, ORNL

Page 12: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

courtesy S. A. David, ORNL

Examples of FiPy: Polycrystal and Phase Field

Page 13: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

courtesy S. A. David, ORNL

Examples of FiPy: Polycrystal and Phase Field

heatEq = (TransientTerm(var=dT)

== DiffusionTerm(coeff=Dt, var=dT)

+ TransientTerm(var=phase))

psi = theta + arctan2(phase.faceGrad[1], phase.faceGrad[0])

Phi = tan(N * psi / 2)

PhiSq = Phi**2

beta = (1. - PhiSq) / (1. + PhiSq)

DbetaDpsi = -N * 2 * Phi / (1 + PhiSq)

Ddia = (1.+ c * beta)

Doff = c * DbetaDpsi

D = alpha**2 * (1.+ c * beta) * (Ddia * (( 1, 0), ( 0, 1)) +

Doff * (( 0,-1), ( 1, 0)))

phaseEq = (TransientTerm(coeff=tau, var=phase)

== DiffusionTerm(coeff=D, var=phase)

+ ImplicitSourceTerm(coeff=(phase -

0.5 - kappa1 / pi * arctan(kappa2 * dT))

* (1 - phase)), var=phase)

eq = heatEq & phaseEq

Page 14: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

courtesy S. A. David, ORNL

Examples of FiPy: Polycrystal and Phase Field

Page 15: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Examples Of FiPy: Extreme Fill

Page 16: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Examples Of FiPy: Extreme Fill

adsorptionCoeff = dt * suppressor * kPlus

thetaEq = fp.TransientTerm() ==

fp.ExplicitUpwindConvectionTerm(fp.SurfactantConvectionVariable(di

stance)) \

+ adsorptionCoeff * surface \

- fp.ImplicitSourceTerm(adsorptionCoeff *

distance._cellInterfaceFlag) \

- fp.ImplicitSourceTerm(kMinus * depositionRate * dt)

Page 17: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Examples Of FiPy: Extreme Fill

Page 18: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Problems with FiPy

● Potentially time

inefficient and excessive

in memory usage

● But how do we measure

that?

● Why do we even care?

● How do we find the

bottlenecks?

● Need profiling tools!

Page 19: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Profiling Tools

● What is profiling?

● Tool used to identify and quantify what resources

are being used by certain parts of a program

Page 20: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Profiling Tools

● What is profiling?

● Tool used to identify and quantify what resources

are being used by certain parts of a program

● Our profiler needs to:

Page 21: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Profiling Tools

● What is profiling?

● Tool used to identify and quantify what resources

are being used by certain parts of a program

● Our profiler needs to:

● Profile multiple functions at once

Page 22: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Profiling Tools

● What is profiling?

● Tool used to identify and quantify what resources

are being used by certain parts of a program

● Our profiler needs to:

● Profile multiple functions at once

● Cache profiling data for many simulations

Page 23: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Profiling Tools

● What is profiling?

● Tool used to identify and quantify what resources

are being used by certain parts of a program

● Our profiler needs to:

● Profile multiple functions at once

● Cache profiling data for many simulations

● Produce graphs of performance scaling against

system size

Page 24: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Speed Profilingclass FiPyProfileTime(FiPyProfile):

def __init__(self, profileFunc, ncells, regenerate=False):

...

def profile(self, ncell):

...

def get_time_for_function(self, function_key):

return stats[function_key]

def get_key_from_function_pointer(function_pointer):

return inspect.getfile(function_pointer)

def plot(self, keys, field="cumulative"):

...

Page 25: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Memory Profilingclass MemoryProfiler(object):

def __init__(self, profileMethod, runfunc):

...

def decorate(self, func):

def wrapper(*args, **kwargs):

...

return self.codeMap

def getLineMemory(self, line):

...

class MemoryViewer(object):

def generateData(self):

def worker(ncell, resultQ, profileMethod, runfunc, lines):

process = multiprocessing.Process(...)

Page 26: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Results: Profiling Polycrystal - Memory

Page 27: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Results: Profiling Polycrystal - Speed

Page 28: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Results: Profiling Extreme Fill - Memory

Page 29: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Results: Profiling Extreme Fill - Speed

Page 30: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Results: Profiling Different Solvers

Page 31: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

So What?

● Identified that FiPy has memory issues that need

to be addressed

● Limits the size of simulations that we can run

● Located the classic memory for speed trade off

with Gmsh

● Determined that using inline was faster

● Identified that Trilinos is much slower than

Pysparse but has the option to run in parallel

● Next Step: Analyze algorithms to figure out how

to address these issues

Page 32: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

So What?

● Identified that FiPy has memory issues that need

to be addressed

● Limits the size of simulations that we can run

● Located the classic memory for speed trade off

with Gmsh

● Determined that using inline was faster

● Identified that Trilinos is much slower than

Pysparse but has the option to run in parallel

● Next Step: Analyze algorithms to figure out how

to address these issues

Page 33: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

So What?

● Identified that FiPy has memory issues that need

to be addressed

● Limits the size of simulations that we can run

● Located the classic memory for speed trade off

with Gmsh

● Determined that using inline was faster

● Identified that Trilinos is much slower than

Pysparse but has the option to run in parallel

● Next Step: Analyze algorithms to figure out how

to address these issues

Page 34: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

So What?

● Identified that FiPy has memory issues that need

to be addressed

● Limits the size of simulations that we can run

● Located the classic memory for speed trade off

with Gmsh

● Determined that using inline was faster

● Identified that Trilinos is much slower than

Pysparse but has the option to run in parallel

● Next Step: Analyze algorithms to figure out how

to address these issues

Page 35: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

So What?

● Identified that FiPy has memory issues that need

to be addressed

● Limits the size of simulations that we can run

● Located the classic memory for speed trade off

with Gmsh

● Determined that using inline was faster

● Identified that Trilinos is much slower than

Pysparse but has the option to run in parallel

● Next Step: Analyze algorithms to figure out how

to address these issues

Page 36: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Acknowledgements

● Mentors: Dr. Jon Guyer and Dr. Daniel Wheeler

● SHIP Student: Mira Holford

● SURF Program Staff and Peers

Page 37: Creating Profiling Tools to Analyze and Optimize FiPy Presentation

Questions?