Re: ParrallelDo and set::noval

*To*: mathgroup at smc.vnet.net*Subject*: [mg102697] Re: ParrallelDo and set::noval*From*: guerom00 <guerom00 at gmail.com>*Date*: Wed, 19 Aug 2009 07:02:55 -0400 (EDT)*References*: <h63cgg$1b6$1@smc.vnet.net> <h6duf8$h1c$1@smc.vnet.net>

As requested, a minimal example which illustrate the problem. The following sequential code works fine : grid = Range[4, 50, 0.5]; testArray = Array[Null, {Length[grid]}]; Do[ iroot = 0; rr = grid[[i]]; Which[ 4 <= rr <= 50, iroot = 1 ]; testArray[[i]] = {i, iroot}; , {i, 1, Length[grid]}] The equivalent parallel code : grid = Range[4, 50, 0.5]; testArray = Array[Null, {Length[grid]}]; DistributeDefinitions[grid,testArray]; ParallelDo[ iroot = 0; rr = grid[[i]]; Which[ 4 <= rr <= 50, iroot = 1 ]; testArray[[i]] = {i, iroot}; , {i, 1, Length[grid]}] returns "Set::noval: Symbol testArray in part assignment does not have an immediate value." Somehow the DistributeDefinitions[] is not sufficient to indicate to each kernel that I have initialized the list testArray. Thanks in advance for any help :)

**Follow-Ups**:**Re: Re: ParrallelDo and set::noval***From:*Fred Simons <f.h.simons@tue.nl>