Thanks for the clarification, Tim! My concern was that the "unsafe" calls 
signalled a problem with the bounds.

Am Donnerstag, 24. September 2015 02:51:16 UTC+2 schrieb Tim Holy:
>
> Welcome to Julia! 
>
> Can you clarify the precise nature of your concern? I'm not sure I see a 
> problem. To make sure you're interpreting this right, it's indicating that 
> 741/839 = 88% of your execution time is in gemm!, which is the core 
> routine 
> for matrix-matrix multiplication. 
>
> The "unsafe" calls refer to the fact that these functions assume that the 
> indexes are in bounds...which is fine if the algorithm is guaranteed to 
> stay 
> in-bounds, or if a previous function already checked to make sure that 
> everything is OK. In other words, these are just internal functions that 
> get 
> called in the course of multiplication. 
>
> Best, 
> --Tim 
>
> On Wednesday, September 23, 2015 06:33:55 AM Benjamin Born wrote: 
> > Hey everybody, 
> > 
> > I'm a Julia beginner slowly transitioning from Matlab to Julia (0.4 RC2 
> on 
> > Win 7 64bit) and I haven't been able to figure out the following 
> problem. 
> > Profiling my code I have received the following message for a line of my 
> > code that multiplies three matrices D=A*B*C: 
> > 
> > ++++ 
> > 
> > 839  ...on\run_bbeg_check.jl; vfi_smart; line: 284 
> >      5   cartesian.jl; _unsafe_batchsetindex!; line: 34 
> >      4   multidimensional.jl; _unsafe_batchsetindex!; line: 322 
> >       4 operators.jl; setindex_shape_check; line: 256 
> >      11  multidimensional.jl; _unsafe_batchsetindex!; line: 328 
> >      5   multidimensional.jl; _unsafe_batchsetindex!; line: 329 
> >      15  multidimensional.jl; _unsafe_getindex; line: 193 
> >      42  multidimensional.jl; _unsafe_getindex; line: 195 
> >      757 operators.jl; *; line: 103 
> >       1   linalg/matmul.jl; gemm_wrapper!; line: 321 
> >       1   linalg/matmul.jl; gemm_wrapper!; line: 327 
> >        1 abstractarray.jl; stride; line: 80 
> >       741 linalg/matmul.jl; gemm_wrapper!; line: 328 
> >        741 linalg/blas.jl; gemm!; line: 632 
> > 
> > ++++ 
> > 
> > My code runs and I also get the same results as in Matlab but I would 
> still 
> > like to know whether I do something wrong or inefficient. 
> > 
> > Unfortunately I could not exactly reproduce the message with a 
> simplified 
> > example code but the following code at least produces the 
> > "_unsafe_getindex" message: 
> > 
> > function matmult_test() 
> >     A=rand(20,20,5) 
> >     B=rand(20,700,5) 
> >     C=eye(700,700) 
> >     D=zeros(20,700,5); 
> >     for ii=1:5 
> >         D[:,:,ii] = A[:,:,ii]*B[:,:,ii]*C; 
> >     end 
> > end 
> > matmult_test() 
> > Profile.clear() 
> > @profile matmult_test() 
> > Profile.print() 
> > 
> > Thanks for your help, 
> > 
> > Benjamin 
>
>

Reply via email to