The community bonding phase ended almost two weeks from now and I have been very busy working on my proposal.
My situation might be quite different from other GSoC participants. I started my proposal in early February and also wrote code at that time. Thus I did not have a rough start with the project setup.
The major things I have been working on is ironing out some problems that
happen in the dependency construction. I use a dependency graph to reschedule the PyPy
trace and there where some corner cases I did not think of (Trace operations with side effects and guards). Some edges missing are fatal, because it might happen that the instruction end up in the wrong order.
In addition
to that I designed and added a cost model to decide whether or not it
is reasonable to vectorize a trace loop. This prevents the optimizing
backend to spend time on traces that will not be faster.
I already compared the idea to classical vectorization in the last post. The biggest problem is that without a cost model it can sometimes happen that not vectorizable loops end up with a single vector load statement and later unpack the vector elements. This is not desirable and the cost model prevents this from happening.
By looking at the schedule of my proposal I'm quite advanced already and I'm already working on stuff I proposed to do in the second term of GSoC. This is great because there is lots of time to fine tune and I have already discussed with my mentors and project members where we could even further improve.
My next post explains the setup I started working at back in February/March and shows how I unroll loops.
No comments:
Post a Comment