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