Thanks Andreas, that was helpful. See message to Tim in this thread.

P

On Friday, January 9, 2015 at 11:55:20 AM UTC-8, Andreas Noack wrote:
>
> Sometimes Julia can have problems inferring the type of fields of types 
> which is what conn is. Using @code_warntype as suggested by Tim could give 
> an indication if it is the case.
>
> 2015-01-09 14:51 GMT-05:00 Petr Krysl <[email protected] <javascript:>>:
>
>> The size() function is from the base. fes.conn is a 2D array of ints.
>>
>> P
>>
>>
>> On Friday, January 9, 2015 at 11:25:34 AM UTC-8, Tim Holy wrote:
>>>
>>> I wonder if your `size` function isn't returning an Int, or that the 
>>> compiler 
>>> can't infer that. Did you try this on julia 0.4 with @code_warntype? 
>>>
>>> --Tim 
>>>
>>> On Friday, January 09, 2015 08:06:43 AM Petr Krysl wrote: 
>>> > Actually, I realized that  the example shows the same problem, but for 
>>> a 
>>> > different function. This time the allocation occurs  in the function 
>>> > CALLING getconn!. 
>>> > 
>>> > P 
>>> > 
>>> > On Friday, January 9, 2015 at 8:03:00 AM UTC-8, Petr Krysl wrote: 
>>> > > Tim, 
>>> > > 
>>> > > Your explanation is very helpful.  There is a complication though: 
>>> > > The function is actually called from another  function (from a chain 
>>> of 
>>> > > 
>>> > > functions). Here is the measurement from a simplified situation: 
>>> > >         - using JFFoundationModule 
>>> > >         - using FESetModule 
>>> > >         - 
>>> > >         - n=100; 
>>> > >         - function test(n) 
>>> > >         0     fes=FESetH8(conn=rand(JFInt,n, 
>>> > > 
>>> > > 8)) 
>>> > > 
>>> > >       112     conn1::JFIntMat=zeros(JFInt,nfense(fes),1); 
>>> > >   
>>> > >   6383704     for j=1:size(fes.conn,1) 
>>> > >   
>>> > >         0         getconn!(fes,conn1,j); 
>>> > >         -     end 
>>> > >         0     return true 
>>> > >         - end 
>>> > >         - 
>>> > >         - test(n) 
>>> > >         - clear_malloc_data() 
>>> > >         - n=100000; 
>>> > >         - test(n) 
>>> > > 
>>> > > As you can see the loop over the rows of the array fes.conn 
>>> allocates 
>>> > > substantial amount of memory. 
>>> > > 
>>> > > Here is the type: 
>>> > > https://gist.github.com/PetrKryslUCSD/794f521a8e5b057e5e4e 
>>> > > 
>>> > > Petr 
>>>
>>>
>

Reply via email to