With all that  done, the julia code runs about the same if not better than 
matlab (using 4 threads)

On Sunday, May 8, 2016 at 2:21:42 PM UTC-4, feza wrote:
>
> Well first problem was that the vectorized version of my code was very 
> slow.
> Then I devectorized still slow, because of the index clashing with the 
> column-major storage
> I assumed for i =1:10,j=1:10,k=1:10  does the index i first then j then k 
> wrongly...
>
> On Sunday, May 8, 2016 at 2:04:37 PM UTC-4, David Gold wrote:
>>
>> So, the issue here was the indexing clashing up against the column-major 
>> storage of multi-dimensional arrays?
>>
>> On Sunday, May 8, 2016 at 10:10:54 AM UTC-7, Tk wrote:
>>>
>>> Could you try replacing
>>>    for i in 1:nx, j in 1:ny, k in 1:nz
>>> to
>>>    for k in 1:nz, j in 1:ny, i in 1:nx
>>> because your arrays are defined like a[i,j,k]?
>>>
>>> Another question is, how many cores is your Matlab code using?
>>>
>>>
>>> On Monday, May 9, 2016 at 2:03:58 AM UTC+9, feza wrote:
>>>>
>>>> Milan
>>>>
>>>> Script is here: 
>>>> https://gist.github.com/musmo/27436a340b41c01d51d557a655276783
>>>>
>>>>
>>>> On Sunday, May 8, 2016 at 12:40:44 PM UTC-4, feza wrote:
>>>>>
>>>>> 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