Hallo Hakan & Rolf,
In[43]:= Remove[pr]
Array[pr, {101}, {2200}] // Short
Out[44]//Short= {pr[2200], pr[2201], pr[2202], pr[2203], <<93>>,
pr[2297], pr[2298], pr[2299], pr[2300]}
works, jedoch
In[47]:= Remove[pr]
SetSharedVariable[pr]
Array[pr, {101}, {2200}] // Short
Out[49]//Short= {Null[2200], Null[2201], Null[2202], <<95>>,
Null[2298], Null[2299], Null[2300]}
doesn't work: nach der Verwendung von SetSharedVariable[pr] ist
pr nur deklariert, nicht initialisiert. Die Hilfe zu
SetSharedVariable[] sagt: "Shared variables without
a value evaluate to Null."
Deshalb gibt man mit
Remove[pr]
SetSharedVariable[Array[pr, {101}, {2200}] = Table[{}, {101}]];
Do[pr[i] = {}, {i, 2200, 2300}];
ParallelDo[If[PrimeQ[2^i - 1], AppendTo[pr[i], i]], {i, 2200, 2300}]
Do[Print[pr[i]], {i, 2200, 2300}];
auch die leeren Listen aus, worin die urspruengliche Intention des problem
owners
gelegen haben mag.
Gruss
Udo.
SetSharedFunction[pr];
Do[pr[i] = {},{i,2000, 4000}];
ParallelDo[If[PrimeQ[2^i-1], AppendTo[pr[i],i]],{i,2000,4000}];
Do[If[pr[i]=!={},Print[pr[i]]],{i,2000,4000}];
geht.
Gruss aus Berlin,
Rolf Mertig
P.s.: http://www.wolfram.com/services/education/courses/m225.html
--
GluonVision GmbH
http://www.gluonvision.com
Am 24.03.2011 16:02, schrieb Hakan Önel:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Liebe Mathematica-DEMUG-Community,
ich arbeite zwar länger mit Mathematica, bin aber mit
den Parallelisierungsroutienen von Mathematica 8 noch
nicht sehr vertraut und wende mich daher mit einem
Verständnisproblem an die DEMUG:
In der Mathematica 8-Hilfe ist unter "ParallelDo" das
folgende Beispiel zu finden:
SetSharedVariable[pr]
pr = {};
ParallelDo[If[PrimeQ[2^i - 1], AppendTo[pr, i]], {i, 2000, 4000}]
pr
was das Resultat {2203, 2281, 3217} liefert.
So weit, so gut.
Nun möchte ich aber, für eine andere Anwendung, dieses Beispiel
abändern:
SetSharedVariable[pr]
Do[pr[i] = {},{i,2000,4000}];
ParallelDo[If[PrimeQ[2^i - 1], AppendTo[pr[i], i]], {i, 2000, 4000}]
Do[Print[pr[i]],{i,2000,4000}];
Dies jedoch schlägt mit Fehlermeldungen der Form
"Set::write: Tag Null in Null[2000] is Protected.>>"
fehl.
Zugegeben, dieses Beispiel ist ein wenig an den Haaren herbei-
gezogen, aber das Problem ist hoffentlich klar: Innerhalb einer
parallelen Umgebung gelingt es mir nicht Variabelen druchzu-
nummerieren. Dies muss aber doch irgendwie funktionieren...
Über hilfreiche Kommentare hierzu würde ich mich freuen.
Vielen Dank und viele Grüße
Hakan
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.15 (GNU/Linux)
iQIcBAEBCgAGBQJNi10CAAoJEHrvU7SxOdYG6UkQAKDNWqREEzH9Nq0IJ7Qe6QIF
s5oeRaJhduXabu7iclLvDGyVEynNV4kowlMB7blc4ZcXSMvL0RQEVQiPcwCiFRFs
7/hOlkS9URXIaw4gER7Fx4/DmCSZdZk1xQpyp0yzhBpMX/K+DI18Bc4XoxCiuZWM
c0IrdH2EPp7Wt2OwG6oZc4wuFWCJJxu/Oc0m+6G1q3mKUh4yVGMoAF5wnae+kn8e
Nziv4bB1le89DzW/FaUhof7On4Brb7r+TDAWEu3fyeuXdVcvp12b4taT05AJiSad
D3V+rGcihGAs0R1+Vnv67HP2iUXmcE6vXu8Tl95HIch2J1R5RuXguLeF4RH4Yoxn
yng1bKcvrlTuOGsXvJ6B0IZG8ZzBdvJl1U48eDd/BcxFvPm4jC6Zsx+jZUvZ1mVo
lQaMo91m3Ip7/eLJlaYIomw5DU/sX2WJjhi+leQ4Sw2b8Mae1BZqERdiVoaG5I7z
sax0kEPGuyJJjY08/O9HAAggl5YzoGFS6oLEzZkiCwAD9qY2sIT1iAw+MiDqHqUI
jNW3F9zYWMLMPbynK3hTVQCv6M7FahITu21KJ1OO7xWwzcqWVvZj94oAbsJb+ytH
gA784IwZ/ALe4xd4COY90V8lhxUxv4jLiylcaK47xCUvFjryvxIayGogi07vD/S/
EguklsY6UBNt2/FjKI+c
=EcmT
-----END PGP SIGNATURE-----