PyStokes: A case study of accelerating Python using Cython Rajesh - - PowerPoint PPT Presentation

pystokes a case study of accelerating python using cython
SMART_READER_LITE
LIVE PREVIEW

PyStokes: A case study of accelerating Python using Cython Rajesh - - PowerPoint PPT Presentation

PyStokes: A case study of accelerating Python using Cython Rajesh Singh Jan 31, 2015 1 Contributors 2 Outline Stokes law Rigid body motion of active colloids 3 Outline Stokes law Rigid body motion of active colloids


slide-1
SLIDE 1

PyStokes: A case study of accelerating Python using Cython

Rajesh Singh Jan 31, 2015

1

slide-2
SLIDE 2

Contributors

2

slide-3
SLIDE 3

Outline

  • Stokes law
  • Rigid body motion of active colloids

3

slide-4
SLIDE 4

Outline

  • Stokes law
  • Rigid body motion of active colloids
  • Python

3

slide-5
SLIDE 5

Outline

  • Stokes law
  • Rigid body motion of active colloids
  • Python
  • Cython

3

slide-6
SLIDE 6

Outline

  • Stokes law
  • Rigid body motion of active colloids
  • Python
  • Cython
  • Python and Cython

3

slide-7
SLIDE 7

Outline

  • Stokes law
  • Rigid body motion of active colloids
  • Python
  • Cython
  • Python and Cython
  • PyStokes

3

slide-8
SLIDE 8

Outline

  • Stokes law
  • Rigid body motion of active colloids
  • Python
  • Cython
  • Python and Cython
  • PyStokes
  • Benchmarks

3

slide-9
SLIDE 9

Stokes law

4

slide-10
SLIDE 10

Stokes law

Vn = Fn 6πηa

4

slide-11
SLIDE 11

Stokes law

Vn = Fn 6πηa Ωn = Tn 8πηa3

4

slide-12
SLIDE 12

Rigid body motion of active colloids

Vn =

N

  • m=1
  • µTT

nm · FB m + µTR nm · TB m

  • +
  • lσ, m

π(T, lσ)

nm

· V(lσ)

m ,

Ωn =

N

  • m=1
  • µRT

nm · FB m + µRR nm · TB m

  • +
  • lσ, m

π(R, lσ)

nm

· V(lσ)

m .

  • J. Stat. Mech. (2015) P06017

5

slide-13
SLIDE 13

Python

1 Free and open source 2 High level & interpreted 3 Interactive environment 4 Object-oriented

6

slide-14
SLIDE 14

Python

1 Free and open source 2 High level & interpreted 3 Interactive environment 4 Object-oriented 5 Speed 6 Dictionary lookups 7 Function calling overheads 8 GIL - global interpreter lock

6

slide-15
SLIDE 15

Cython

  • Attempt to make a superset of python

7

slide-16
SLIDE 16

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C

7

slide-17
SLIDE 17

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled

7

slide-18
SLIDE 18

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions

7

slide-19
SLIDE 19

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions
  • Supports parallelism (openMP) by opening GIL

7

slide-20
SLIDE 20

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions
  • Supports parallelism (openMP) by opening GIL
  • Memoryviews allow efficient access to memory buffers like

numpy arrays without python overhead

7

slide-21
SLIDE 21

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions
  • Supports parallelism (openMP) by opening GIL
  • Memoryviews allow efficient access to memory buffers like

numpy arrays without python overhead

  • Steps involves in building a cython code

1 A .pyx file is compiled by cython to .c

7

slide-22
SLIDE 22

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions
  • Supports parallelism (openMP) by opening GIL
  • Memoryviews allow efficient access to memory buffers like

numpy arrays without python overhead

  • Steps involves in building a cython code

1 A .pyx file is compiled by cython to .c 2 The .c file is then compiled by the C compiler

7

slide-23
SLIDE 23

Cython

  • Attempt to make a superset of python
  • High level coolness of python along with the speed of C
  • Compiled
  • Cdef variables, attributes, functions
  • Supports parallelism (openMP) by opening GIL
  • Memoryviews allow efficient access to memory buffers like

numpy arrays without python overhead

  • Steps involves in building a cython code

1 A .pyx file is compiled by cython to .c 2 The .c file is then compiled by the C compiler 3 Building can be done in a single step using a setup.py

7

slide-24
SLIDE 24

Python and Cython

8

slide-25
SLIDE 25

Python and Cython

9

slide-26
SLIDE 26

Python and Cython

10

slide-27
SLIDE 27

Python and Cython

  • Cython is three orders of magnitude FASTER than Python!

10

slide-28
SLIDE 28

Python and Cython

  • Cython is three orders of magnitude FASTER than Python!
  • The Cython code is as fast as C code!!

10

slide-29
SLIDE 29

PyStokes: README.md

  • Cython library for computing Stokes flows produced by spheres
  • The library computes flow and RBM
  • Geometries supported
  • unbounded
  • wall-bounded
  • periodic
  • Free and open source
  • Planned developments
  • linear solvers
  • fast multipole accelerations
  • data layout
  • References
  • R. Singh, A. Laskar, and R. Adhikari. PyStokes: Hampi, Nov 2014.
  • S. Ghose and R. Adhikari. Phys. Rev. Lett., 112(11):118102, 2014.
  • R. Singh, S. Ghose and R. Adhikari. J. Stat. Mech, P06017, 2015

11

slide-30
SLIDE 30

PyStokes: Usage

import pystokes , p y f o r c e s import numpy as np a , Np = 1 , 100 L , dim = 128 , 3 dt , T = 0.01 , 100 v = np . ze ros ( dim∗Np ) ; r = v ; F = v ; pRbm = pystokes . p e r i o d i c .Rbm(a , Np, L) f f = p y f o r c e s . f o r c e F i e l d s . Forces (Np) for t t in range (T) : f f . sedimentation (F , g=−10)

  • pRbm. s t o k e s l e t V ( v ,

r , F) r = ( r + (F/(0.75∗ a ) + v )∗ dt)%L

12

slide-31
SLIDE 31

PyStokes: Example

Figure: Crowley instability in a sedimenting lattice.

13

slide-32
SLIDE 32

PyStokes: Benchmarks

Figure: Propulsion matrix calculation using the PyStokes library

Present implementation scales

  • linearly with # cores
  • quadratic with # particles

14

slide-33
SLIDE 33

Summary

  • Free and open source library
  • Efficient and fast evaluation of Stokes flow
  • A python front end for the user
  • Present implementation scales
  • linearly with # cores
  • quadratic with # particles

15