[LLVMdev] Another LLVM JIT extension to Python

Siu Kwan Lam michael.lam.sk at gmail.com
Fri Jun 29 10:44:44 PDT 2012


On 06/29/2012 02:47 AM, Tobias Grosser wrote:
> On 06/29/2012 01:06 AM, Siu Kwan Lam wrote:
>> Dear LLVM,
>>
>> I am a young developer who have just uploaded my first opensource
>> project based on LLVM. I would like to know what professionals think of
>> my project.
>>
>> I have started a JIT extension to Python called Pymothoa (
>> http://code.google.com/p/pymothoa/). Unlike other similar projects, I
>> did not modify the interpreter. Pymothoa uses Python decorators to mark
>> function for JIT compiling. It uses the AST generated by Python;
>> thereby, it uses the same syntax of Python but works like a low-level
>> programming language (like C). The goal is to get speedup in
>> compute-intensive code without writing C-extensions.
>>
>> If you are interested, there are two demo applications in the source
>> tree: matrix-matrix multiplication and reduce-sum. I would appreciate
>> any comment.
>>
>> Siu Kwan Lam
>
> Hi Siu Kwan Lam,
>
> that looks very interesting! It is very nice to see how easy it is to 
> install and how easy it is to add proper function annotations. Also, 
> the generated source code seems to be a good start. It would be 
> interesting to try it with Polly [1]. I believe that this could give 
> great speedups for the naive matrix multiply implementation.
> Is there a way I can dump the content of the entire LLVM-IR module 
> generated in the demo/matrixmul/matrixmul.py example?
>
> Cheers
> Tobi
>
> [1] http://polly.llvm.org
>
Hi Tobi,

Thank you for your feedback. I will be looking at Polly for better 
locality optimization. Can I simply include Polly as optimization 
passes? If so, the pymothoa/llvm_backend/default_passes.py can be easily 
edited to add new passes. I am still trying to figure out what to 
include for the optimization pass for the best result.

> Is there a way I can dump the content of the entire LLVM-IR module 
> generated in the demo/matrixmul/matrixmul.py example? 
You can do so by printing the default_module:

print default_module

You may want to do so before optimizing with "default_module.optimize()" 
to see what my codegen is doing.

I will be adding more documentation to the project wiki.

Thanks,
Siu Kwan Lam




More information about the llvm-dev mailing list