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>
- Re: Re: ParrallelDo and set::noval