[MATLAB] Verschillende resultaten voor dezelfde code

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PHOEN1X
  • Registratie: Oktober 2006
  • Laatst online: 01-09 22:26
Momenteel ben ik bezig met het produceren van een model in matlab welke temperaturen over de lengte van een warmtewisselaar uitrekent. Om het model uit te laten rekenen gebruik ik 2 computers. Beide computers hebben exact dezelfde kopie van het model gekregen, maar zijn verder verschillend in hard- en software.

Comp1:
AMD X6 1100T
MSI 790FX GD70
16GB geheugen
Win7 x64
Matlab 2011b 32bit
- produceert foute resultaten

Comp 2
Dell
Core 2 Duo
4GB geheugen
WinXP 32bit
Matlab 2007b
Produceert goede resultaten

Iemand hier ervaring mee?

Acties:
  • 0 Henk 'm!

  • synx6
  • Registratie: Juli 2010
  • Laatst online: 21:47
Zover ik weet hebben verschillende Matlab versies ook hier en daar verschillende resultaten. Is het verschil gigantisch of een kleine afronding? Heb er zelf nooit iets van gemerkt trouwens.

Acties:
  • 0 Henk 'm!

  • PHOEN1X
  • Registratie: Oktober 2006
  • Laatst online: 01-09 22:26
Het gaat om meer dan enkel een afrondingsfout. Dat vind ik het vreemde eraan

Acties:
  • 0 Henk 'm!

  • Trolando
  • Registratie: April 2005
  • Laatst online: 25-08 13:47
Je hebt nogal wat variabelen. Als je nou eens Matlab 2007 op de AMD X6 installeert... of anders iemand zoekt die ook Matlab heeft en vergelijkt...

Is het ook zo dat je van een van de models duidelijk kunt zien dat het fout is?

Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 12-09 20:45

Onbekend

...

Heeft het niet te maken met de 32bit en de 64bit OS?

Edit: Geen enkele variabele is het zelfde. Gebruik eerst maar eens de zelfde Matlabversie.

[ Voor 47% gewijzigd door Onbekend op 25-02-2012 12:23 ]

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11-09 12:01
Zijn de modellen wel zonder meer uitwisselbar tussen de twee versies van Matlab/Simulink?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Ophoping van afrondingsfouten waarschijnlijk. Ik heb ook wel eens een n-body simulatie gedraaid die na een tijdje compleet anders loopt op andere hardware. Twee deeltjes die net wel of net niet botsen en vervolgens gaat alles anders. Een andere instructie ordening doet dat al. Dus als het een andere built van matlab is, kan het voorkomen.

Acties:
  • 0 Henk 'm!

  • Ploink
  • Registratie: April 2002
  • Laatst online: 21-08 13:05
Trolando schreef op zaterdag 25 februari 2012 @ 12:21:
Je hebt nogal wat variabelen. Als je nou eens Matlab 2007 op de AMD X6 installeert... of anders iemand zoekt die ook Matlab heeft en vergelijkt...
Je kan wel uitzoeken of het verschil in computer, OS of matlab versie zit, maar daarmee weet je nog steeds niet waar de fout in de source code zit en welke resultaten correct zijn.
Ik zou dus beiden gaan vergelijken en de verschillen zoeken. Kwestie van beiden tegelijk debuggen en zien waar de verschillen ontstaan. Gebruik zonodig VNC als de computers niet naast elkaar staan.
Of je kan tussenresultaten naar een logfile schrijven en die twee vergelijken.

Als het een ophoping van afrondingsfouten betreft dan zou ik ernstig gaan twijfelen aan het model, want als het zo gevoelig is voor onnauwkeurigheden dan weet je nooit zeker wanneer het resultaat wel correct is.

Als het programma in C geschreven was, dan zou ik gaan zoeken naar niet geinitialiseerde variabelen en pointer fouten, maar ik neem aan dat matlab alles automatisch initialiseert?

Acties:
  • 0 Henk 'm!

  • bwerg
  • Registratie: Januari 2009
  • Niet online

bwerg

Internettrol

Verschil in resultaat tussen CPU's zou er nooit mogen zijn als beiden dezelfde instructieset hebben. D'r zijn uitzonderingen, zoals race conditions met meerdere threads maar bij een lineair script zie ik niet waar dat zou kunnen gebeuren. Dat verschillende versies van matlab een ander resultaat geven is niet ondenkbaar.

Heeft geen speciale krachten en is daar erg boos over.


Acties:
  • 0 Henk 'm!

  • windancer
  • Registratie: Maart 2000
  • Laatst online: 08-09 09:16
Matlab gebruikt onder water de Intel MKL, en in de documentatie van deze library staat dat bit voor bit gelijke uitkomsten gegarandeerd worden onder de volgende omstandigheden:
  1. De input is bit voor bit gelijk
  2. Je gebruikt dezelfde versie van de MKL
  3. Je input is aligned op 16 bytes
  4. De CPU is hetzelfde
Voorwaarden 1 en 3 zijn vast wel OK, maar aan voorwaarden 2 en 4 ga je niet voldoen. Dus bit voor bit gelijke output gaan hem niet worden. Zoals eerder is gezegd: fouten kunnen heel snel accumuleren.

Hoe weet je trouwens dat computer 1 de correcte resultaten geeft ?

Acties:
  • 0 Henk 'm!

  • Schonhose
  • Registratie: April 2000
  • Laatst online: 09-09 15:28

Schonhose

Retro Icoon

Zelf denk ik niet dat de CPU het probleem is maar de Matlab versie.

Het verschil tussen beide versies is maar liefst 7(!) releases waarin van alles aan de core functies en de toolboxen veranderd, verbeterd, aangepast is.

Iets wat ontwikkeld is onder 2007b hoeft niet goed meer te draaien onder 2011b vanwege deze veranderingen in de core. Dit is de reden dat je als Matlab gebruiker een preview kan doen van een nieuwe release waardoor je kunt kijken of er iets veranderd aan je code.

voor de liefhebber: Matlab released per jaar twee versies, de 20xxa en 20xxb releases. De TS heeft de 2008a, 2008b, 2009a, 2009b, 2010a, 2010b en 2011a overgeslagen.
windancer schreef op zondag 26 februari 2012 @ 23:43:
Hoe weet je trouwens dat computer 1 de correcte resultaten geeft ?
Ja, hoe weet je dat eigenlijk??

[ Voor 14% gewijzigd door Schonhose op 28-02-2012 09:55 ]

"The thing under my bed waiting to grab my ankle isn't real. I know that, and I also know that if I'm careful to keep my foot under the covers, it will never be able to grab my ankle." - Stephen King
Quinta: 3 januari 2005


Acties:
  • 0 Henk 'm!

Verwijderd

Wat schonhose zegt kan ik beamen. De wijzigingen die Matlab doorvoert in de API's zijn alles behalve backwards compatible.

Tijdens een schoolopdracht ben ik er ook achter gekomen dat zowel de manier waarop de API's aangesproken moeten worden veranderd zijn (andere parameters, parametervolgorde). Maar ook de implementatie van de API functies zijn totaal anders.
Pagina: 1