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 > >