90 likes | 318 Views
Thesis Proposal. Template Recognition of Bytecodes and Execution using Hardware Architecture. (Vectorization of Java). by Ian Reddy. MatMul Benchmark. MatMul is a benchmark, which involves matrices. Performs multiplication, time estimated for 100 cycles.
E N D
Thesis Proposal Template Recognition of Bytecodes and Execution using Hardware Architecture. (Vectorization of Java) by Ian Reddy
MatMul Benchmark • MatMul is a benchmark, which involves matrices. • Performs multiplication, time estimated for 100 cycles. • Executed it using the mentioned Libraries. • Note: JNI was used in case of VSIPL (selectively wrapped). • Results purely based on my LINUX box, 2.2 Ghz 608 MB RAM variation may occur. • May have used libraries poorly
Leads • Usage of Assembly powers performance. • Usage of Instruction Set will improve performance • Scan bytecodes, for patterns. (refers to my title of Template recognition of bytecodes) • In line assembly code ...[instruction sets] (execution using hardware architecture).
More To scan for computation intensive patterns in bytecodes • Need a program which can scan bytecodes • Need a program that can modify bytecodes • Do I have to write a program to do this (fairly complex job) • Any Open Source Programs Available on the Net ? YES • ASM • BCEL (Byte code Engineering Library) • JavaAssist
ASM (nutshell) • Bytecode manipulation framework • Designed and Implemented to be small and fast • Purely Implemented in Java • Runtime jar is only 25kb • Abstracts bytecode complexity from the User. • Implemented some sample programs successfully. • only needs the runtime jar in the class path • Complex (clearly my view)
BCEL • Bytecode Engineering Library • Analyse, Create and Manipulate java class files • Allows creation and modifications of class files from the scratch • runtime jar size is 350kb • Not thread safe • Implemented some sample programs • Huge API set • Easy to Understand. • just needs the jar on the class path
JavaAssist • Capable of creation, manipulation and editing class files during runtime. • Based on java vocabulary • runtime jar size is 425kb • Source code level and bytecode level API available • Bytecode can be directly inserted as text, Java Assist will compile on the fly • Implemented some sample programs • Large API set • Easy to Understand. • just needs the jar on the classpath
Conclusion • Decided to go with the JavaAssist • Source and bytecode level API available • bytecodes can be inserted in the source, in text form. • May be large in size. More: • Use a standard class for test case • first recognize complex patterns at bytecode level Thank you