Ian Reddy

Progress Report


This week, peeked into some more performance libraries, VSIPL, learned how to program moderately with VSIPL api's. Was able to wrapper some of the methods too and used them via JNI. Downloaded the Java Matrix package (JAMA) another high performance library, purely implemented in java. Wrote experimental code with it. Looked in Dr Lyon and Rao performance library which they used for their book, wrote substantial code with it. Currently reading Java advanced Imaging.


As I was looking into all of these libraries, I just had an idea, as create a small library of my own which would make use of the JNI. A little reading prior to making this library, enabled me to draw an outline as to what the library must contain. I made sure there is a queue which is loaded with data and there is a single JNI call, as JNI communication is expensive too. Made sure the library can be extended in future. Another article that I read described the use of assembly language in C to improve performance. Well since thats my target, using instruction sets, I decided to in line some assembly code. It worked pretty good, compiled with optimizations, unwinded the loops, used register variables. The code looks pretty clumsy now, needs a clean up.


Later wrote a fairly complex program to implement with these libraries, which dealt with matrices, this may be a wrong option, but I thought it may not be a bad idea. There may be a possibility that I may have used these high performance libraries poorly. Like you pointed out in class I must do this with a standard benchmark. I will do that before I start with my next step.


Well having assembly integrated with C through JNI, I'm pretty much convinced that using instruction sets would lead to improvement in performance. Well my next step is to write a program, or extend an existing program to read bytecodes and recognize numeric intense pattern. This seems to be achievable, but my next big step is to manipulate these bytecodes to use instruction set.