Tuesday, June 24, 2014

Week 5

To start, the last handful of days have consisted of me making it to Seattle for bug days a  meeting for Sage development, consisting mainly of bugs but also of other, development, like in my case M1RI.   My mentor, Martin Albrecht will be coming to this event too. 

I've worked on bitpacking, changing bitsliced groups into of rows of bits, have a output  consisting of numerous shades  of grey.   Libpng is doing the low level work.  I had ran into a problem, not properly setting up autotools to detect the library in the Makefile.am and this has now thankfully been fixed.   

 Done but in need of work, m*d_classic and m*d_strassen found here are in a state that has large portions of output, and has the amount of work reminiscent of the final state.  What needs checking still is logic errors, which will be the main focus of next week.    

A point of history that is noteworthy and relevant to this is this version of Strassen is not the original version but an optimization described in this paper called Strassen-Winograd.   This is the mathematician,   Shmuel Winograd who discovered the the asymptotically fast Coppersmith Winograd Algorithm which has not found widespread use currently due to the massive constant required for it to become efficient for matrix multiplication.   





Monday, June 16, 2014

Week 4

Next:
Matrix multiplication proper is the next frontier.   The code is already quite far along, with a 64*64 base case, strassen, and padding for multiplication.    Peeling is another goal to work on, cutting off portions of the matrix for when the matrix does not form a square.    This is best for when the input would otherwise waist a lot of time on unused values, from unused padding, and worst when the padding needed is minimal.    






Issues:
After dealing with an issue of configuring autotools, libpng does produce output, albeit not colorful or conforming to inputs.

Sunday, June 8, 2014

Input/Output and Permutation matrices

I/O is contained within the  m1ri_io.   At this point printing to ascii text is finished.  Within the next week, input files for matrices will become a feature.    Libpng, is optional, being less portable and is detected by autotools before functions relying upon it are used.  

Permutation matrices are rather important and interesting.    Using lapack style permutation matrices,  they consist of an array where the array index and the respective value stored at index represent a row/column to be swapped.    These will serve a major purpose later, being part of PLE decomposition,  improving performance when working with sparse matrices. 



Sunday, June 1, 2014

Second week of Gsoc

Today marks the end of the first two weeks of coding, the first milestone of the GSOC.    I’ve accomplished thorough tests for arithmetic, mod 3, mod 5, and mod 7, in matrices referred to as m3d_t , m5d_t, and m7d_t respectively. 




 I have a need to polish up a few functions, such as m*d_quarter, splitting a matrix into fourths not working on matrices less than 64 * 64.   An optimal way to do Hadamard GF(5), and GF(7) is still unknown, though that's a low priority issue at the moment.


Coming soon, I'll start working libpng read and write, along with ascii input into M1RI.   File input will make testing easier, and png files will add png files, along with being convenient, could make interesting art, depending on how numbers are represented.   The smallest footprint involves shades of grey, though primary and secondary colors corresponding to values seems more interesting.