Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[python] Platformní (ne)závislost výsledků

4 views
Skip to first unread message

Radek Machulka

unread,
Jan 27, 2012, 7:11:50 AM1/27/12
to Konference PyCZ
Zdravím,

provádím teď nějaké analýzy dat a protože jejich zpracování je časově náročné,
začal jsem je zpracovávat na výpočetně výkonějším stroji. Porovnáním již
provedených analýz jsem ale zjistil, že se výsledky liší. Chyby (rozdíl) se
nevyskytují ve všech charakteristikách, ani nejsou nijak závratné, ale jsou (a
v některých případech nejsou ani moc zanedbatelné).

Spíš než aby mi to způsobovalo nějaké praktické komplikace mě to překvapilo.
Data se načítají z identických binárních zdrojů, používá se ten samý kód k
jejich zpracování včetně verzí veškerých knihoven i interpretu samotného
(binární balík). Chápal bych to snáze u nízkoůrovňových jazyků, ale myslel
jsem, že python bude v tomto konzistentní. Zakopaný pes bude asi v knihovně
numpy, kterou využívám, a jejíž střeva jsou psána v C (pokud vím). Zkoušel
jsem googlovat, ale nenašel jsem žádné moc relevantní informace.

Existuje možnost jak se dostat do nějakého 'strict' režimu, kdy by k tomu
nedocházelo? Nebo rozlišit situace, kdy k podobnému efektu může dojít. Stačí i
linky.

Dík
Radek

P.S. použité stroje:
1) Intel(R) Core(TM)2 Duo CPU T8100 @ 2.10GHz GenuineIntel
2) Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz

rajcze

unread,
Jan 27, 2012, 7:26:36 AM1/27/12
to Konference PyCZ
Ahoj,

bez programu a aspon vzorku dat (na kterem se da ukazat, co ti funguje
"jinak"), ti asi tezko poradime.
Jako prvni se samozrejme nabizi (klasicky) ruzny ukladani desetinnych
cisel, ale u dvou Intelu asi tezko (pokud jeden z nich neni rozbitej
:))

J.

2012/1/27 Radek Machulka <radek.m...@gmail.com>:
> _______________________________________________
> Python mailing list
> Pyt...@py.cz
> http://www.py.cz/mailman/listinfo/python



--
Rules of Optimization:
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet.

Matej Cepl

unread,
Jan 27, 2012, 5:25:36 PM1/27/12
to
On 27.1.2012 13:11, Radek Machulka wrote:
> Existuje možnost jak se dostat do nějakého 'strict' režimu, kdy by k tomu
> nedocházelo? Nebo rozlišit situace, kdy k podobnému efektu může dojít. Stačí i
> linky.

Nemělo by to být, ale

a) není jedna ta mašina 32bitová a druhá 64bitová?
b) jaké operační systémy?

Matěj

Radek Machulka

unread,
Jan 30, 2012, 3:28:08 AM1/30/12
to Konference PyCZ
Dne pondělí 30 ledna 2012 09:13:31, Matěj Cepl napsal(a):
> On 30.1.2012 08:56, Radek Machulka wrote:
> > Víkend bez internetu...
>
> http://linuxmafia.com/~rick/faq/?page=netiquette#offlist


Díky za upozornění. Vypadá to, že s novou verzí změnil můj klient výchozí
způsob odpovědi. Takže zde postřehy z předchozí komunikace.

---

Ted jsem si vsiml (trochu se divim, ze me to nenapadlo driv), ze jeden python
je 32 a druhy 64bit. Podle toho, co jsem ale ted googlil, tak by tento
rozdile nemel mit vliv na presnost vysledku.

Na wikipedii jsem treba narazil na vetu: "Programmers in LISP or Python (among
others) have some assurance that their program code will Do The Right Thing
with mathematical operations." Jen tak pro zajimavost...

---

Ted jsem to zkusil na dalsim 64-bit systemu. Vysledek je takovy, ze i na dvou
64-bitech se vysledky sice mnohem mene, ale stejne lisi. Jeste jsem si overil,
jesli se nacitaji stejne data (struct.unpack) a ano, takze k rozdilum musi
dochazet behem vypoctu. Jen pro predstavu: jedna se o matice hodnot ze kterych
se (krom jineho) pocita prumerna hodnota (numpy.array().mean()), coz je podle
me operator, kde by mel byt minimalni prostor k nejasnostem.

---

> a) není jedna ta mašina 32bitová a druhá 64bitová?
Je. Operační systém, balíčky včetně zkompilovaného pythonu jsou v jedné verzi
32 a ve druhé 64bit, nicméně podle toho co jsem našel by v tomto neměl být
problém, nehledě na to, že se mi liší i výsledky ze dvou 64bit systémů.

> b) jaké operační systémy?
Archlinux (nějaká) Mandriva a openSUSE (11.4). Jádra, python i moduly
identické včetně verze gcc, kterou byl python zkompilovan.

0 new messages