Thanks for the tip (initially I just transllated the matlab verbatim)

Now I have made all the changes. In place operations, and direct function 
calls.
Despite these changes. Matlab is 3.6 seconds, new Julia  7.6 seconds
TBH the results of this experiment are frustrating, I was hoping Julia was 
going to provide a huge speedup (on the level of c)

Am I still missing anything in the Julia code that is crucial to speed?
@code_warntype looks ok sans a few red unions which i don't think are in my 
control


On Sunday, May 8, 2016 at 8:15:25 AM UTC-4, Tim Holy wrote:
>
> One of the really cool features of julia is that functions are allowed to 
> have 
> more than 0 arguments. It's even considered good style, and I highly 
> recommend 
> making use of this awesome feature in your code! :-) 
>
> In other words: try passing all variables as arguments to the functions. 
> Even 
> though you're wrapping everything in a function, performance-wise you're 
> running up against an inference problem 
> (https://github.com/JuliaLang/julia/issues/15276). In terms of coding 
> style, 
> you're still essentially using global variables. Honestly, these make your 
> life harder in the end (
> http://c2.com/cgi/wiki?GlobalVariablesAreBad)---it's 
> not a bad thing that julia provides gentle encouragement to avoid using 
> them, 
> and you're losing out on opportunities by trying to sidestep that 
> encouragement. 
>
> Best, 
> --Tim 
>
> On Sunday, May 08, 2016 01:38:41 AM feza wrote: 
> > That's no surprise your CPU is better :) 
> > 
> > Regarding devectorization 
> >             for l in 1:q 
> >             for k in 1:nz 
> >             for j in 1:ny 
> >             for i in 1:nx 
> >             u = ux[i,j,k] 
> >             v = uy[i,j,k] 
> >             w = uz[i,j,k] 
> > 
> >                 cu = c[k,1]*u  + c[k,2]*v + c[k,3]*w 
> >                 u2 = u*u + v*v + w*w 
> >                 feq[i,j,k,l] = weights[k]*ρ[i,j,k]*(1 + 3*cu + 
> 9/2*(cu*cu) 
> > - 3/2*u2) 
> >                 f[i,j,k,l] = f[i,j,k,l]*(1-ω) + ω*feq[i,j,k,l] 
> >               end 
> >               end 
> >               end 
> >              end 
> > 
> > Actually makes the code a lot slower.... 
> > 
> > On Sunday, May 8, 2016 at 4:37:18 AM UTC-4, Patrick Kofod Mogensen 
> wrote: 
> > > For what it's worth  it run in about 3-4 seconds on my computer on 
> latest 
> > > v0.4. 
> > > 
> > > CPU : Intel(R) Core(TM) i7-4600U CPU @ 2.10GHz 
> > > 
> > > On Sunday, May 8, 2016 at 10:33:14 AM UTC+2, Patrick Kofod Mogensen 
> wrote: 
> > >> As for the v0.5 performance (which is horrible), I think it's the 
> boxing 
> > >> issue with closure https://github.com/JuliaLang/julia/issues/15276 . 
> > >> Right? 
> > >> 
> > >> On Sunday, May 8, 2016 at 10:29:59 AM UTC+2, STAR0SS wrote: 
> > >>> You are using a lot of vectorized operations and Julia isn't as good 
> as 
> > >>> matlab is with those. 
> > >>> 
> > >>> The usual solution is to devectorized your code and to use loops 
> (except 
> > >>> for matrix multiplication if you have large matrices). 
>
>

Reply via email to