Author: Maciej Fijalkowski <[email protected]> Branch: extradoc Changeset: r4092:dc5e0b3c78dc Date: 2012-02-20 23:28 +0100 http://bitbucket.org/pypy/extradoc/changeset/dc5e0b3c78dc/
Log: work on slides diff --git a/talk/sea2012/talk.rst b/talk/sea2012/talk.rst --- a/talk/sea2012/talk.rst +++ b/talk/sea2012/talk.rst @@ -1,3 +1,5 @@ +.. include:: beamerdefs.txt + Fast numeric in Python - NumPy and PyPy ======================================= @@ -19,7 +21,7 @@ * A framework for writing efficient dynamic language implementations -* An open source project with a lot of volunteer effort +* An open source project with a lot of volunteer effort, released under the BSD license * I'll talk today about the first part (mostly) @@ -28,16 +30,16 @@ * An **efficient just in time compiler** for the Python language -* Relatively "good" on numerics (compared to other dynamic languages) +* Relatively "good' on numerics (compared to other dynamic languages) * Example - real time video processing -* Some comparisons +* XXX some benchmarks Why would you care? ------------------- -* "If I write this stuff in C/fortran/assembler it'll be faster anyway" +* *If I write this stuff in C/fortran/assembler it'll be faster anyway* * maybe, but ... @@ -46,10 +48,14 @@ * Experimentation is important -* Implementing something faster, in human time, leaves more time for optimizations and improvements +* Implementing something faster, in **human time**, leaves more time for optimizations and improvements * For novel algorithms, being clearly expressed in code makes them easier to evaluate (Python is cleaner than C often) +|pause| + +* Sometimes makes it **possible** in the first place + Why would you care even more ---------------------------- @@ -66,17 +72,17 @@ * Next year a new generation of GPUs come along -* Your algorithms are no longer optimize +* Your algorithms are no longer optimized |pause| -* Alternative - express your algorithms +* Alternative - **express** your algorithms * Leave low-level details for people who have nothing better to do |pause| -* Like me (I don't know enough physics to do the other part) +* .. like me (I don't know enough physics to do the other part) Numerics in Python ------------------ @@ -119,19 +125,23 @@ * Stuff is reasonably fast, but... -* Only if you don't actually write much Python +|pause| + +* Only if you don't actually write much **Python** * Array operations are fine as long as they're vectorized * Not everything is expressable that way -* Numpy allocates intermediates for each operation, trashing caches +* Numpy allocates intermediates for each operation, suboptimal Our approach ------------ * Build a tree of operations +XXX a tree picture + * Compile assembler specialized for aliasing and operations * Execute the specialized assembler @@ -141,9 +151,14 @@ * ``a``, ``b``, ``c`` are single dimensional arrays -* ``a + a`` would generate different code than ``a + b`` +* ``a+a`` would generate different code than ``a+b`` -* ``a + b * c`` is as fast as a loop +* ``a+b*c`` is as fast as a loop + +Performance comparison +---------------------- + +XXX Status ------ @@ -204,7 +219,26 @@ * We did not spend a whole lot of time dealing with the low-level optimizations +* Automatic vectorization over multiple threads + +* SSE, GPU, dynamic offloading + +* Optimizations based on machine cache size + +* We're running a fundraiser, make your employer donate money + Extra - SSE preliminary results ------------------------------- XXX + +Q&A +--- + +* http://pypy.org/ + +* http://buildbot.pypy.org/numpy-status/latest.html + +* http://morepypy.blogspot.com/ + +* Any questions? _______________________________________________ pypy-commit mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-commit
