Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PyStokes

Rajesh Singh
January 31, 2015

 PyStokes

Presented in the January 2015 Meetup of the Chennai Python User Group.

PyStokes is a Cython library for computing Stokes flows produced by spheres in unbounded, wall-bounded and periodic geometries.

Read more on GitHub: https://github.com/rajeshrinet/pystokes

Rajesh Singh

January 31, 2015
Tweet

More Decks by Rajesh Singh

Other Decks in Research

Transcript

  1. Outline • Stokes law • Rigid body motion of active

    colloids • Python • Cython • Python and Cython 3
  2. Outline • Stokes law • Rigid body motion of active

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

    colloids • Python • Cython • Python and Cython • PyStokes • Benchmarks 3
  4. 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
  5. Python 1 Free and open source 2 High level &

    interpreted 3 Interactive environment 4 Object-oriented 6
  6. 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
  7. Cython • Attempt to make a superset of python •

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

    High level coolness of python along with the speed of C • Compiled 7
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. Python and Cython • Cython is three orders of magnitude

    FASTER than Python! • The Cython code is as fast as C code!! 10
  16. 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
  17. 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 . zeros ( 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
  18. PyStokes: Benchmarks Figure: Propulsion matrix calculation using the PyStokes library

    Present implementation scales • linearly with # cores • quadratic with # particles 14
  19. 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