Hi.

The only difference between P1 and P2 is that A  and B are
of type ::Any in P2 and just B is ::Any in P1 (As expected). 

So it seems that 

A = convert(SharedArray,A)

makes A  "not type stable" and any operation using it will suffer, specially
the (silly) operation A'*A*A*A*A*A' I used to spend some time inside the 
loop. 

As a small test, I changed the code to 

 C = sdata(A)
 B[i] = norm(C'*C*C*C*C')

and the execution time is now equivalent to the first example. 

Is there any way to make a SharedArray type stable ?

Thanks.

On Wednesday, July 8, 2015 at 8:17:07 AM UTC-3, Eduardo Lenz wrote:
>
> Thanks Tim. I will take a look.
>
> On Wednesday, July 8, 2015 at 12:02:56 AM UTC-3, Tim Holy wrote:
>>
>> Without having spent the time to look carefully, one obvious point is 
>> that you 
>> have some serious type-instability in your SharedArray function. If 
>> you're 
>> running 0.4, try using @code_warntype and tweak your implementation until 
>> it 
>> is type stable. 
>>
>> --Tim 
>>
>> On Tuesday, July 07, 2015 08:19:58 AM Eduardo Lenz wrote: 
>> > Hi. 
>> > 
>> > I was studying parallel methods with some silly routines. After some 
>> tries, 
>> > I realized that reading Shared Arrays is slower than reading regular 
>> > arrays, although I cannot understand the reason. I am using the latest 
>> > version in Nightly. 
>> > 
>> > As an example,  routine P2 takes more time than routine P1, and the 
>> only 
>> > difference is the fact that A is Shared. Is it expected ? 
>> > 
>> > https://gist.github.com/CodeLenz/776c138c2c49dbd4a2d5 
>> > 
>> > Thanks for your help. 
>>
>>

Reply via email to