DMUG-Archiv 2010

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: Grauenhafter Fehler in MMA unter Mac OSX?

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





Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html