Hier die Situation (immerhin kein falsches Ergebnis mehr)
in Mathematica 8 unter Linux (aber nicht viel anders unter Windows):
(* ********************************** *)
rolfm@gluon:~/m8bugs$ cat t.m
Print[ t1 = AbsoluteTiming[
m=IdentityMatrix[10000];
d10=Table[m[[i]] . m[[All,i]],{i,10}];
d1000=Table[m[[i]] . m[[All,i]],{i,1000}];
d10
]];
Print[ t2 = AbsoluteTiming[
SetSystemOptions[
"CompileOptions" ->
"SystemCompileOptimizations" -> {"ExpressionOptimization" -> False}];
m=IdentityMatrix[10000];
d10=Table[m[[i]] . m[[All,i]],{i,10}];
d1000=Table[m[[i]] . m[[All,i]],{i,1000}];
d10
]];
Print["Verlangsamung = ", t1[[1]]/t2[[1]]]
rolfm@gluon:~/m8bugs$ math -script t.m
{241.678274`8.834782604160106, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}
{2.596345`6.865907394120863, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}
"Verlangsamung =
"93.08403698275845467378179710323550991872`6.861266660205661
(* ********************************** *)
D.h., wenn Sie bei Table Operationen extreme Verlangsamungen
("negative speed consequences") feststellen sollten: bitte obigen
SetSystemOptions[ ] Trick verwenden.
Auf den bin ich auch nicht selber gekommen, sondern der wurde mir auf
meinen vorgestrigen bug-Report an WRI von einem
freundlichen Entwickler geschickt:
----------------------------------------------------------------
This happens because the expression optimizer copies the
matrix which has negative speed consequences.
You can do
SetSystemOptions[
"CompileOptions" ->
"SystemCompileOptimizations" -> {"ExpressionOptimization" -> False}]
which prevents the expression optimizer.
On 19/11/2010 15:56, Dr. Rolf Mertig wrote:
On Windows and Linux (probably also on Mac) I get horrible
timings for Table with the default autocompilation on by running from the
command line :
math -script b.m
"8.0 for Linux x86 (64-bit) (November 7, 2010)"
"With Table-autocompile on: "15.520639999999998" result = "{1, 1, 1, 1,
1, 1, 1, 1, 1, 1}
"With Table autocompile off: "0.193971000000003" result = "{1, 1, 1, 1,
1, 1, 1, 1, 1, 1}
"8.0 for Microsoft Windows (64-bit) (November 7, 2010)"
"With Table-autocompile on: "13.244" result = "{1, 1, 1, 1, 1, 1, 1, 1,
1, 1}
"With Table autocompile off: "0.125" result = "{1, 1, 1, 1, 1, 1, 1, 1,
1, 1}
where b.m is :
Print @ $Version;
(Print["With Table-autocompile on: ",#1, " result = ",#2]& @@
Timing[
m = IdentityMatrix[5000];
Table[ m[[i]].m[[All, i]], {i,250}][[1;;10]] ]
);
SetSystemOptions["CompileOptions" -> "TableCompileLength" -> 251];
(Print["With Table autocompile off: ",#1, " result = ",#2]& @@
Timing[
m = IdentityMatrix[5000];
Table[m[[i]].m[[All, i]], {i,250}][[1;;10]] ]
);
(* ********************************************** *)
This is a stripped-down version of a bug-report by a director of a
Max-Planck institute:
http://www.mathematica.ch/dmug-archive/2010/msg00012.html
(with a Darren-like work-around pointed out by Carsten here:
http://www.mathematica.ch/dmug-archive/2010/msg00018.html )
For the Berlin-Mathematica-day in seven days organized by Carsten
Herrmann, the german reseller and WEG-trainer, I wanted to recheck
that the original bug is fixed (which it is, i.e., the result is correct),
but a slow-down of 80 when autocompiling is of course completely unacceptable.
Could we please get a fixed kernel or patch by next week?
Rolf
On Sat, 2010-02-06 at 15:10 +0100, Martin Heimann wrote:
> Liebe Kollegen,
>
>
> Beim Berechnen von einzelnen Diagonal-Elementen eines Matrizenprodukts
> mit Hilfe der Skalarproduktfunktion "." bin ich auf einen grauenhaften
> Fehler gestossen. Reduziert auf ein ganz triviales Beispiel zeigt er
> sich wie folgt:
>
>
> In[1]:= m=IdentityMatrix[10000];
>
>
> In[2]:= d10=Table[m[[i]] . m[[All,i]],{i,10}];
>
>
> In[3]:= d1000=Table[m[[i]] . m[[All,i]],{i,1000}];
>
>
> In[4]:= d10
>
>
> Out[4]= {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
>
>
> In[5]:= d1000[[;;10]]
>
>
> Out[5]= {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
>
>
> Die Diagonalelemente müssten doch alle 1 geben - wenn ich nur die
> ersten 10 berechne (d10), dann ergibt sich dies; wenn ich die ersten
> 1000 berechne, erhalte ich Schrott. Wie ich leider erfahren musste,
> tritt das Problem nicht nur bei dieser trivialen Identitätsmatrix
> auf.
>
>
> Der Fehler tritt konsistent in zwei verschiedenen Mma Installationen
> auf zwei verschiedenen Mac's auf (Version 7.0.1), auf einer Linux
> Installation hingegen nicht.
>
>
> Frage: kann dies jemand von Euch auf einer Mac OSX - Installation auch
> nachvollziehen?
>
>
> Gruss,
> Martin
>
> ----------------------------------------------------------------------------
> Max-Planck-Institute for Biogeochemistry, PF 100164, D-07701 Jena,
> Germany
> Street Address: Beutenberg Campus, Hans-Knoell-Straße 10, D-07745
> Jena
> Office: +49-3641-57-6350/6301
> Mobile No: +49-151-12035946
> Home: +49-3641-618247
> Fax.: +49-3641-57-7300
> Skype: mheimann
> Email: martin.heimann@XXXXXXX.de,
> office.bgc-systems@XXXXXXX.de
> Web: http://www.bgc-jena.mpg.de/~martin.heimann