[GSoC][RFC] Enabling Julia to target GPUs through Polly and imrpove code using run time information

Hello All,

I’m Sanjay Srivallabh, a final year undergraduate student of BITS-Pilani, Hyderabad Campus in India. I’m currently pursuing a semester long dissertation in Polyhedral Compilation under Dr. Ramakrishna at IIT-Hyderabad, India.

I’d like to take GSoC as learning opportunity and make a proposal to,

  • Enable Julia to run on GPUs through Polly
  • Better optimise code using run-time information
  • Enable Polly to choose between sending code to the GPU or CPU for best results.
    Currently, I’ve made changes to local repositories of Polly and Julia that have made Julia run on GPUs via Polly. Benchmarking the gemm kernel has shown speedups of upto 191x when a GPU was used over the same kernel running on a CPU optimized by Julia’s passes alone. More information can be found in my draft proposal below.

As is evident from the benchmark, the simple act offloading the kernels to GPUs can have an incredibly positive effect on the runtime, especially for programmers or researchers who don’t want to be burdened by learning yet another programming language. Given that many people are getting into computational finance and data science and a lot of personal systems now integrate GPUs, this research can now be accelerated, and is accelerated further in the future when hardware gets faster and software gets smarter.

I understand that this is a cross-project proposal and wanted to know if anyone in the llvm community would be interested in mentoring me.

Here’s the link to the draft of my GSoC proposal. 'Looking forward to your feedback and suggestions.

Thank You,
Sanjay