Awesome, thank you!
On Tue, Oct 20, 2015 at 4:41 PM, Richard Plangger <planri...@gmail.com> wrote: > Hi, > > glad you liked the post! See the answers below... > > On 10/20/2015 04:20 PM, Tuom Larsen wrote: >> Hello all! >> >> I just read with great interest the blog post "Automatic SIMD >> vectorization support in PyPy". >> >> Please, I have a few questions: >> >> - Does regular Python code benefit from the vectorization? I mean, the >> article on one hand says "it is not specifically targeted for the >> NumPy library" but on the other it says "Any interpreter (written in >> RPython)". > > Speaking about 'regular' Python code, there is potential !BUT! only if > enough time is spent in numeric code. What I meant in the article was: > E.g. you have a vector construct in your language (like the one the R > language has) you could use the optimization to vectorize operations on > the variables that represent. > > Take a look at my test virtual machine implementing a small subset of R. > https://bitbucket.org/plan_rich/vecopt-test-vm > >> >> - I would like to write a vector class as much suitable for PyPy as >> possible, what approach should I take in order to implement it? For >> example, what would suit PyPy JIT the best: >> >> class Vector3d: >> def __init__(a, x, y, z): >> (a.x, a.y, a.z) = x, y, z >> def __add__(a, b): >> return Vector3d(a.x + b.x, a.y+b.y, a.z+b.z) >> >> def add1(a, b): >> (ax, ay, az) = a >> (bx, by, bz) = b >> return [ax + bx, ay + by, az + bz] >> >> def add2(a, b): >> (ax, ay, az) = a >> (bx, by, bz) = b >> return (ax + bx, ay + by, az + bz) >> >> def add3((ax, ay, az), (bx, by, bz)): >> return (ax + bx, ay + by, az + bz) >> >> def add3: >> ??? >> > > I have made some tests with this already. You would need to use the > array module. Python lists would also work, but they leave behind some > instructions that are not well optimized. It is described in this post: > > http://pypyvecopt.blogspot.co.at/2015/08/gsoc-vec-little-brother-of-numpy-array.html > > The missing piece is then the --jit vec_all=1 parameter, that you must > specify on the command line. > > Be aware: > > 1) vec_all=1 parameter might lead to a crash, I have tested it, but it > occurred to me that it is not really ready for production. I'm still > working on this, thus it is disabled by default. > > 2) that with a very low number of vector elements (e.g 3) the overhead > to iterate the first iteration is quite significant. So I do not think > that there is much you can get just executing 1 vector add in parallel > on x86. > >> - Is NumPyPy going to be included with regular PyPy download/install? >> > > NumPyPy is included in a normal PyPy release version > >> Thanks a lot in advance! >> _______________________________________________ >> pypy-dev mailing list >> pypy-dev@python.org >> https://mail.python.org/mailman/listinfo/pypy-dev >> > > Cheers, > Richard > _______________________________________________ > pypy-dev mailing list > pypy-dev@python.org > https://mail.python.org/mailman/listinfo/pypy-dev _______________________________________________ pypy-dev mailing list pypy-dev@python.org https://mail.python.org/mailman/listinfo/pypy-dev