code: def matrix_multiplication_blockwise(self, matrix, blocksize):
          
          #Create the blockwise version of self and matrix
          selfBlockwise = self.matrix_to_blockmatrix(blocksize)
          matrixBlockwise = matrix.matrix_to_blockmatrix(blocksize)
  
          return (selfBlockwise * matrixBlockwise).flatten()
docs: http://en.wikipedia.org/wiki/Block_matrix#Block_matrix_multiplication