I tried to implement Strassen algorithm for matrix multiplication in julia. And here is the gist, a naive implementation. a sample benchmark is included at beginning of the file.
https://gist.github.com/GaZ3ll3/87df748f76b119199fed It can beat Julia's A_mul_B!(). around 2~8% faster, depending on the size of matrix and mindim threhold. However*, my problem* is it takes julia like 2~5% of the running time on allocating *lots* of memory, like storing 3 extra matrices. Now I am using a11 = a[1:mt, 1:kt] to get a submatrix, I assume this is a copy of values, not passing reference or using pointer. I think this is the problem, but I do not know how to avoid this and use pure julia pointer for all computing( in julia). later I found out "sub" function can give a SUBARRAY, which is using reference. But when I changed the code into sub-based. It takes much longer time to run a program. Not better, also it consumes lots of memory. I do not know why. Anyway, I can write this in C using cblas, using pure pointer operations and then call the C library(in fact, i already wrote it), I just want to see how is strassen algorithm working on Julia.
