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

PyStokes

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Rajesh Singh 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

Avatar for Rajesh Singh

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