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