> I tried creating my own matrix power function using Python before, I used data parallelism(tiling), task parallelism(using topology) and pipelining parallelism(using lowered dependency).
As you say, attacking all levels of parallelism is very ambitious. However, I think working on just one of these parallelism structures would make for a good summer project. I would recommend you to pick one of these approaches and apply it to a widely used computation such as matrix-matrix multiplication. I had a look at your Python implementation https://github.com/usefulhyun/parallel_mmm/blob/master/prllmpow/prllmpow.py and it is quite hard to understand. If you can translate the essential parts into Julia and show how you can use features like Julia types and overloading of Julia's generic functions like * to make the code readable yet efficient, then I think we can make a good case for your participation in the Google Summer of Code. Without a Julia code sample to evaluate, it is quite difficult to make a strong case for participation.
