In general you should write your code to avoid Anys. Depending on where you are losing type information, it's possible that scale! or using temp variables with different names will help you.
--Tim On Wednesday, July 08, 2015 04:53:36 AM Eduardo Lenz wrote: > 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.
