A Hidden Weakness
A surprising combination of symbol qualifiers that lead to a long bug hunt.
A surprising combination of symbol qualifiers that lead to a long bug hunt.
exploring the impact of -ftrivial-auto-var-init on Firefox codebase
What's worse than a global variable? A global variable initialized at startup!
What is the effect of different compiler flags on the size of a shared library? Let's explore!
Jumbo builds make C++ code compilation faster, but what happens when you require them?
This project is about using Pythran to accelerate algorithms in SciPy and writing benchmarks for the algorithms. Let's look into the details of the project.
Not stricly a post about Pythran, but about one of its component: xsimd, the vectorization engine we (optionally) use. And more specifically about a new forthcoming feature of it: dispatching call based on supported instruction set.
Pythran version bump, supporting Python 3.9, fixing a few performance issues and benchmarking the release.
Pythran recently gained a significant improvment in its value range analysis. Let's discuss some implementation details through a bunch of examples.
Pythran version bump, bringing a lot of unexpected features in!
Many tools manipulate the Python AST to analyse or transform it. Let's propose a collection of analyse those tools can leverage on: beniget .
Pythran can also be used as a source-to-source transformation engine. This post showcases some recent transformation on a high-level code.
Pythran version bump, new PyPI packages + Conda release, Changelog and comments.
How pythran can be use to bridge the divide between fast prototyping and code deployment
Once upon a time, on IRC, Serge Guelton asked me whether I wanted to work on having Cython using Pythran for Numpy-related computation. I wasn't really sure what I was getting into, but I've always liked optimizing software, and that sounded like an interesting challenge to understand both projects. As …
After five years of friendship, Pythran replaces boost.simd by xsimd as its vectorization engine. This post goes through the motivation of this change, and the advantage of this move.
Performance of the compiled code is an important feature of Pythran. Yet, Pythran had no unit test to prevent performance regression! Fortunately, thanks to a mix of airspeed velocity and numpy-benchmark , it is now a granted a decent way to track these regressions.
Stack Overflow is a great place to find new challenging test case for Pythran :-)
Or how to compile a basic kernel from the machine learning field with Pythran.
Following a thread on scipy-dev , I've started to work on reducing the size of Pythran-generated binaries. Here is the outcome of my work.
Starting from a Cython blog post by Jake VanderPlas , a trip in compiler optimisation, with a special glance at modulo operation!
Python provides a convenient way to encapsulate a raw pointer in an object, to make interaction between native modules easier. SciPy uses that mechanism to call native code from some functions, and now Pythran can produce them just as well as Dr Brief would!
Pythran version bump, new PyPI packages + Conda release, and a Changelog commented in a Jupyter notebook.
6 months of tireless efforts to speedup pythran compilation time, and make the code easier to maintain.
Pythran recently gained a type checking ability, called tog . And given the size of the diff, that's not some minor improvement! Let's see what happened in terms of better robustness and error reporting :-)
Learn how to use Pythran, in a notebook or in a shell. Including some unusual Pythran tricks ;-)
Show Pythran usage on multiple kernels with its strengths and its weaknesses
Pythran version bump, new pypi packages and conda release!
Gathering several Cython vs. Numpy benchmarks on the WWW and piping them to Pythran to check that we don't have any performance regression before the release for PyData Paris .
Broadcasting is a neat feature of Numpy array, but it was not trivial to implement at the C++ level, while keeping a high-level interface. after weeks of effort, here is a showcase of how good it runs, compared to the Numpy version and lower-level Cython and Numba version!
Alias analysis is a poor term to describe the processing done by Pythran that is going to be described here. It could rather be named static computation of identifier binding , in the sense that it tries to give an over-approximation of which values an identifier can be bound to, at a given point of the program execution. Still, whatever its name, the process plays a key role in Pythran, so let's…
Let's re-run an existing benchmark with Pythran
Playing with compiler forwarded by Pythran to GCC (or Clang) can yield surprising results, let's explore this!
Optimizing an algorithm found on Stack Overflow with Pythran, getting a x2 speedup with a single line, a x4 speedup with two lines and much more while switching our brain on!
Pythran version bump, new pypi packages and conda release!