[julia-users] help with improving performance of a matrix multiplication

2014-07-29 Thread Florian Oswald
Hi all,

I've got an algorithm that hinges critically on fast matrix multiplication. 
I put up the function on this gist

https://gist.github.com/floswald/6dea493417912536688d#file-tensor-jl-L45

indicating the line (45) that takes most of the time, as you can see in the 
profile output that is there as well. I am trying to figure out if I'm 
doing something wrong here or if that line just takes as long as it takes. 
I have to do this many times, so if this takes too long I have to change my 
strategy.

The core of the problem looks like that

for imat in 2:nbm
v0= copy(v1)
stemp = ibm[ks[imat]]
n = size(stemp,1)
m = nall / n
for i in 1:m
v1[m*(0:(n-1)) + i] = stemp * v0[(n*(i-1)) + (1:n)]
   end
end


where v are vectors and stemp is a matrix. I spend a lot of time in the 
matrix multiplication line on the innermost loop. Any suggestions would be 
much appreciated. Thanks!




[julia-users] help with improving performance of a matrix multiplication

2014-07-29 Thread Florian Oswald
From the profile output it looks like a lot of time is spent in getindex. I
suppose that is bad news? Not sure how I could avoid any of the index
lookups.


On Tuesday, 29 July 2014, Dahua Lin linda...@gmail.com
javascript:_e(%7B%7D,'cvml','linda...@gmail.com'); wrote:

 You may have to check which is the bottleneck: getindex or matrix
 multiplication.

 Dahua

 On Tuesday, July 29, 2014 4:22:32 PM UTC-5, Florian Oswald wrote:

 Hi all,

 I've got an algorithm that hinges critically on fast matrix
 multiplication. I put up the function on this gist

 https://gist.github.com/floswald/6dea493417912536688d#file-tensor-jl-L45

 indicating the line (45) that takes most of the time, as you can see in
 the profile output that is there as well. I am trying to figure out if I'm
 doing something wrong here or if that line just takes as long as it takes.
 I have to do this many times, so if this takes too long I have to change my
 strategy.

 The core of the problem looks like that

 for imat in 2:nbm
 v0= copy(v1)
 stemp = ibm[ks[imat]]
 n = size(stemp,1)
 m = nall / n
 for i in 1:m
 v1[m*(0:(n-1)) + i] = stemp * v0[(n*(i-1)) + (1:n)]
end
 end


 where v are vectors and stemp is a matrix. I spend a lot of time in the
 matrix multiplication line on the innermost loop. Any suggestions would be
 much appreciated. Thanks!





Re: [julia-users] help with improving performance of a matrix multiplication

2014-07-29 Thread Dahua Lin
You may call gemv directly.

Dahua

On Tuesday, July 29, 2014 5:56:28 PM UTC-5, Florian Oswald wrote:

 From the profile output it looks like a lot of time is spent in getindex. 
 I suppose that is bad news? Not sure how I could avoid any of the index 
 lookups. 


 On Tuesday, 29 July 2014, Dahua Lin linda...@gmail.com wrote:

 You may have to check which is the bottleneck: getindex or matrix 
 multiplication.

 Dahua

 On Tuesday, July 29, 2014 4:22:32 PM UTC-5, Florian Oswald wrote:

 Hi all,

 I've got an algorithm that hinges critically on fast matrix 
 multiplication. I put up the function on this gist

 https://gist.github.com/floswald/6dea493417912536688d#file-tensor-jl-L45

 indicating the line (45) that takes most of the time, as you can see in 
 the profile output that is there as well. I am trying to figure out if I'm 
 doing something wrong here or if that line just takes as long as it takes. 
 I have to do this many times, so if this takes too long I have to change my 
 strategy.

 The core of the problem looks like that

 for imat in 2:nbm

 v0= copy(v1)

 stemp = ibm[ks[imat]]

 n = size(stemp,1)

 m = nall / n

 for i in 1:m

 v1[m*(0:(n-1)) + i] = stemp * v0[(n*(i-1)) + (1:n)]

end
 end


 where v are vectors and stemp is a matrix. I spend a lot of time in the 
 matrix multiplication line on the innermost loop. Any suggestions would be 
 much appreciated. Thanks!