VŠ z trochu jiného úhlu

Zz

Re:VŠ z trochu jiného úhlu
« Odpověď #1065 kdy: 21. 10. 2012, 17:11:57 »
když se zapne přepínač -fallow-undecidable-instances, tak kompilace nemusí skončit.

Skutečně se to v praxi může stát ? Nevyhučí to ani na přetečení zásobníku ?


Zz

Re:VŠ z trochu jiného úhlu
« Odpověď #1066 kdy: 21. 10. 2012, 17:24:22 »
Sústavy boli tuším so základom 2-36 a prevod medzi ľubovolnou dvojicou. Podľa mňa je to stále o tom istom.

A jaká teda část VŠ algebry se na to má použít ? Algebru z VŠ mám za sebou, ale ani jedna z těch dvou metod co jsi uváděl se tam nedělala.

poiu

Re:VŠ z trochu jiného úhlu
« Odpověď #1067 kdy: 21. 10. 2012, 17:33:32 »
Na cache-oblivious přístup jednoduše nevěřím, na to už jsem strávil v životě příliš mnoho času optimalizací
A ako sa prejavuje to "neverenie"? (Ten výraz sa mi akurát zdá divný a neviem, čo si pod tým predstaviť - to ako keby niekto povedal, že neverí na integráciu per partes)

a víc než teoretické znalosti mě pomohla znalost mechanismu cacheování a paměťového řadiče.
Tak to je trochu iná úroveň optimalizácií - cache-oblivious prístup mi ukáže, že algoritmus je v istom zmysle optimálny; znalosť cache-ovania už je len drobné prispôsobenie algoritmu, ktoré ho ani nezrýchli všade.

Práce HDD obsahuje ještě cache v RAID poli, diskovou cache v RAM a mohu si implementovat svoji vlastní cache v aplikaci a celý problém se stává tak složitý, že je to prakticky nemožné nějak solidně vypočíst dopředu.
Na to je práve dobrý cache-oblivious model, ktorý nerieši jednotlivé cache, ich veľkosť a úrovne - akurát ukáže, že sa daný algoritmus chová optimálne k ideálnej cache a tiež k maximálne 2× tak veľkej LRU cache.
A keďže toto platí pre všetky veľkosti cache, tak to platí aj pre ľubovolnú LRU cache.

A jaká teda část VŠ algebry se na to má použít ? Algebru z VŠ mám za sebou, ale ani jedna z těch dvou metod co jsi uváděl se tam nedělala.
Tak potom tá, ktorá sa nerobila  :P. Ak by sa malo vyhovieť aj takýmto firmám, tak by sa matematika na tej VŠ mala ešte rozšíriť, teda to je opak riešenia navrhovaného M. Prýmkom...

Zz

Re:VŠ z trochu jiného úhlu
« Odpověď #1068 kdy: 21. 10. 2012, 17:52:45 »
A ako sa prejavuje to "neverenie"?

Jednoduše ho ignoruji a algoritmus si přepíšu podle svých poznatků.

Tak to je trochu iná úroveň optimalizácií - cache-oblivious prístup mi ukáže, že algoritmus je v istom zmysle optimálny; znalosť cache-ovania už je len drobné prispôsobenie algoritmu, ktoré ho ani nezrýchli všade.

Jenže mě nezajímá istý zmysel, mě zajímá chování na i7/2011 a 10k RPM HDD

A keďže toto platí pre všetky veľkosti cache, tak to platí aj pre ľubovolnú LRU cache.

Pointa je v tom, že v praxi nemáš obecnou LRU cache, ale vždy nějak implementačně doprasenou, takže si sice můžeš teoreticky udělat krásnou analýzu, ale v praxi se to pak řeší dost jinak, podle specifik implementace.

Tak potom tá, ktorá sa nerobila

Takhle by to nešlo, to se jen tak plácáme.

Radek Miček

Re:VŠ z trochu jiného úhlu
« Odpověď #1069 kdy: 21. 10. 2012, 17:55:00 »
když se zapne přepínač -fallow-undecidable-instances, tak kompilace nemusí skončit.

Skutečně se to v praxi může stát ? Nevyhučí to ani na přetečení zásobníku ?

V případě kompilátoru GHC vyhučí. Konkrétně, když do souboru pokus.hs napíši program

Kód: [Vybrat]
{-# LANGUAGE UndecidableInstances, FlexibleInstances #-}

class A a where

instance A [a] => A a

x :: A a => a
x = x

main = if x == 0 then return () else return ()

tak GHC vypíše hlášení

Kód: [Vybrat]
[1 of 1] Compiling Main             ( pokus.hs, pokus.o )

pokus.hs:10:11:
    Context reduction stack overflow; size = 201
    Use -fcontext-stack=N to increase stack size to N
      $dA :: A [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[a0]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
    In the first argument of `(==)', namely `x'
    In the expression: x == 0
    In the expression: if x == 0 then return () else return ()

V tomto případě HP musí vyřešit programátor a také musí odhadnout, za jak dlouho se kompilátoru podaří odvodit příslušné instance (v tomto konkrétním příkladě nikdy).


Re:VŠ z trochu jiného úhlu
« Odpověď #1070 kdy: 21. 10. 2012, 18:00:36 »
Myslím, že celý průzkum je docela chudý
Myslím, že ti nikdo nebrání uvést jiná, tvrdší data. Dokonce jste k tomu byli všichni x-krát vyzváni. Zatím nic...

Například v programovacích jazycích založených na polymorfním lambda kalkulu (otypovat jdou pouze programy, které skončí). Takže, když navrhujete takový jazyk, je třeba udělat určitá omezení typového systému,
A jsme zase u toho - když má zaznít reálný příklad, zazní nějaká totálně obskurní věc.

Nebudu se opakovat, řeknu to jinak: studentům, kteří mají budou navrhovat jazyky tohodle typu, bych napařil matiky a teorie klidně 15 semestrů. Oba dva je to určitě bude moc bavit a budou šťastní.

Na cache máme cache-oblivious prístup, ktorý umožňuje navrhovať algoritmy tak, aby sa správali optimálne ku cache, aj keď nevedia jej veľkosť.
Teda já o tomhle nic nevím, ale mám takové podezření, že jakmile začneme brát v úvahu cache, diskové operace, přerušení apod., tak to už jsme u úplně jiného typu výpočtu než co se řeší v teoretické složitosti jako O(xy)... Mýlím se?


Zz

Re:VŠ z trochu jiného úhlu
« Odpověď #1071 kdy: 21. 10. 2012, 18:05:00 »
V případě kompilátoru GHC vyhučí.

Potom nemáme HP problém :) Stack overflow je ukončení programu.
Já tomu pochopitelně rozumím, na nekonečné turingově pásce máš HP problém a tudíž potřebuješ studovat HP problém, jenže v praxi nekonečnou pásku nemáme, naše páska má 8 388 608 bitů (defaultně).

Re:VŠ z trochu jiného úhlu
« Odpověď #1072 kdy: 21. 10. 2012, 18:08:09 »
jenže v praxi nekonečnou pásku nemáme, naše páska má 8 388 608 bitů (defaultně).
Neskromně dodám, že o nutnosti nekonečné pásky jsem psal asi tak dvěstě příspěvků zpátky :)

No, on je to asi definiční znak lidí s vytrénovaným "abstraktním myšlením", že znovu vytahují něco, na co už bylo odpovězeno...  ::)

Jakub Galgonek

Re:VŠ z trochu jiného úhlu
« Odpověď #1073 kdy: 21. 10. 2012, 18:28:35 »
Neskromně dodám, že o nutnosti nekonečné pásky jsem psal asi tak dvěstě příspěvků zpátky :)

Hraje to nějakou roli u té dříve zmiňované nemožnosti (obecně) zjistit, zda dva programy dělají totéž?

Re:VŠ z trochu jiného úhlu
« Odpověď #1074 kdy: 21. 10. 2012, 18:34:45 »
Hraje to nějakou roli u té dříve zmiňované nemožnosti (obecně) zjistit, zda dva programy dělají totéž?
To řekněte vy teoretici - a dokažte ;)

Radek Miček

Re:VŠ z trochu jiného úhlu
« Odpověď #1075 kdy: 21. 10. 2012, 18:45:20 »
Já tomu pochopitelně rozumím, na nekonečné turingově pásce máš HP problém a tudíž potřebuješ studovat HP problém, jenže v praxi nekonečnou pásku nemáme, naše páska má 8 388 608 bitů (defaultně).

Ano, počítač má konečnou paměť, kde lze HP rozhodovat triviálně (alespoň teoreticky). Jenže prakticky je počet možných stavů příliš velký, takže je triviální řešení nepoužitelné (proto GHC používá praktické řešení, kdy má zásobník s kontexty omezenu maximální velikost - standardně 201).

poiu

Re:VŠ z trochu jiného úhlu
« Odpověď #1076 kdy: 21. 10. 2012, 18:47:49 »
Sry, napísal som už príspevok ale omylom som to zavrel, tak v krátkosti.

Zz: ano, už to s prevodom čísel k ničomu nevedie; ja som to písal len ako ukážku M. Prýmkovi, že existuje viac firiem, ktoré sa aspoň pri nábore chcú niečo teoretickejšie (aj keď je pravda, že prakticky - naprogramovať).

Teda já o tomhle nic nevím, ale mám takové podezření, že jakmile začneme brát v úvahu cache, diskové operace, přerušení apod., tak to už jsme u úplně jiného typu výpočtu než co se řeší v teoretické složitosti jako O(xy)... Mýlím se?
Skôr sa mýliš, aj keď možno nie tak úplne. V cache oblivious modeli ide o počet cache missov na rozdiel od počtu krokov, v čom máš pravdu. Ale O(...) tam sú.
Teda keď cache oblivious algoritmus beží v O(f(n)), tak bude mať O(f(n)/c) cache missov pre veľkosť cache c. To platí pre ľubovolné c, takže sa dá povedať, že sa program chová ku cache-i optimálne.
A zaujímavé je, že aj keď sú to "len výpočty" s istými predpokladmi, tak to na dnešnom "domrvenom HW" funguje pomerne presne.

Hraje to nějakou roli u té dříve zmiňované nemožnosti (obecně) zjistit, zda dva programy dělají totéž?
Za predpokladu konečnej abecedy (čo je v PC zrejmé) si myslím, že ano - konečná páska => konečný počet stavov počítača => stačí zistiť ekvivalenciu konečných automatov a to vieme => vieme zistiť, či 2 programy robia to isté.

Mám tam niekde chybu?

Radek Miček

Re:VŠ z trochu jiného úhlu
« Odpověď #1077 kdy: 21. 10. 2012, 18:53:51 »
Citace
Za predpokladu konečnej abecedy (čo je v PC zrejmé) si myslím, že ano - konečná páska => konečný počet stavov počítača => stačí zistiť ekvivalenciu konečných automatov a to vieme => vieme zistiť, či 2 programy robia to isté.

Mám tam niekde chybu?

Jenže tohle obecně nefunguje, když neznáte velikost té pásky (co když uživatel přidá paměť?).

Zz

Re:VŠ z trochu jiného úhlu
« Odpověď #1078 kdy: 21. 10. 2012, 18:54:04 »
Ano, počítač má konečnou paměť, kde lze HP rozhodovat triviálně (alespoň teoreticky). Jenže prakticky je počet možných stavů příliš velký, takže je triviální řešení nepoužitelné (proto GHC používá praktické řešení, kdy má zásobník s kontexty omezenu maximální velikost - standardně 201).

Teď jsem se nějak ztratil. Takže i když tvůrci GHC měli k dispozici aktuální výtisk Turinga, tak jim v praxi moc nepomoh a museli vzít za vděk pekelnou praxí kontrolou stack overflow, tedy jak by to dělali kdyby o žádném Turingovi nevěděli ?

Re:VŠ z trochu jiného úhlu
« Odpověď #1079 kdy: 21. 10. 2012, 18:54:47 »
 ;D ;D ;D ;D

Teda, člověk Vás tu nechá den bez dozoru ...

PS: tak co, kdo ho má většího?
PPS: ale blahopřeji k překonání té tisícovky!