eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Nowoczesne procesory - jak to z nimi jest?
Ilość wypowiedzi w tym wątku: 100

  • 21. Data: 2013-03-23 11:26:24
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: Wojciech Muła <w...@g...com>

    On Saturday, March 23, 2013 12:28:41 AM UTC+1, M.M. wrote:
    > Bardzo prosto :)
    > Padło pytanie:
    >
    > > I naszla mnie watpliwosc. Czy w ogole wspolczesne kompilatory, maszyny
    > > wirtualne potrafia te featuresy wykorzystac?
    >
    > Odpowiedziałeś:
    >
    > > Potrafią.
    >
    > Ale proszę, nie kłóćmy się, w gruncie rzeczy nie chcę Ci imputować
    > że coś takiego napisałeś. Potraktuj to jako zwykłe pytanie. Czy
    > jesteś pewny że w rozsądnym nakładzie pracy nie da się napisać
    > kompilatora który wygeneruje kod:
    > a) 10 razy szybszy od obecnych,
    > b) 5 razy szybszy
    > c) 3 razy szybszy
    > d) 2 razy szybszy

    No właśnie, chodziło o to, że nie twierdziłem, że się *nie da*
    [albo nadal czegoś nie jarzę].

    Ale ok, nie da się. :) Z faktu, że procesory są coraz szybsze i kompilatory
    coraz lepiej optymalizują (zarówno wykorzystując cechy procesora, jak i
    przeprowadzając coraz bardziej zaawansowaną analizę przepływu danych i
    sterowania) nie wynika, że stanie się cud.

    Trochę się bawiłem w ręczną wektoryzację kodu i widzę, że to jest loteria.
    Tzn. pewne problemy w oczywisty sposób się zrównoleglają, inne słabo lub
    wcale.

    Ostatecznie zawsze ogranicza nas złożoność obliczeniowa. :)

    w.


  • 22. Data: 2013-03-23 16:24:45
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: "M.M." <m...@g...com>

    W dniu sobota, 23 marca 2013 11:26:24 UTC+1 użytkownik Wojciech Muła napisał:

    > Ale ok, nie da się. :)
    Może się nie da, ale ja tego nie wiem :)


    > Z faktu, że procesory są coraz szybsze
    Chodziło mi bardziej o fakt, że kolejne wersje procesorów w większym lub
    mniejszym stopniu różnią się miedzy sobą, a to z kolei wymusza inne
    zasady optymalizowania kodu. Inne zasady optymalizowania pociągają za
    sobą konieczność zmian w kompilatorach. Absolutnie bym się nie zdziwił,
    gdyby prace nad zmianami w kompilatorach były mocno opóźnione.

    Często panuje pogląd że wykonanie softu to najprostszy etap projektu, a
    najtrudniejsze
    jest wykonanie sprzętu. Praktyka pokazuje, że często bywa odwrotnie.
    Choćby taki Itanium.... procesor wydajny, a było (może nadal nie ma) dobrego
    optymalizatora. Po skompilowaniu i zmierzeniu czasu przegrywał z
    przeciętnym tanim komputerem. Podobnie było z alphami które testowałem.


    > i kompilatory
    > coraz lepiej optymalizują (zarówno wykorzystując cechy procesora, jak i
    > przeprowadzając coraz bardziej zaawansowaną analizę przepływu danych i
    > sterowania) nie wynika, że stanie się cud.
    Z kolei ja nie twierdzę że stanie się cud. Zastanawiam się tylko, o ile
    szybszy kod wygenerowałby kompilator, jakby pracowało nad optymalizatorem ze
    stu specjalistów przez kilka lat.

    > Trochę się bawiłem w ręczną wektoryzację kodu i widzę, że to jest loteria.
    > Tzn. pewne problemy w oczywisty sposób się zrównoleglają, inne słabo lub
    > wcale.
    Dużo osób wypowiada się w podobny sposób na ten temat, dziś bardzo trudno
    jest obliczyć czas wykonania kodu, głównie z powodu różnego czasu dostępu
    do pamięci.


    > Ostatecznie zawsze ogranicza nas złożoność obliczeniowa. :)
    Ale w ramach tego ograniczenia można trochę zdziałać.

    Pozdrawiam


  • 23. Data: 2013-03-23 21:42:10
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: Bronek Kozicki <b...@s...net>

    On 22/03/2013 15:54, Marek Borowski wrote:
    > On 2013-03-21 23:09, M.M. wrote:
    ...
    >> No dobrze, ale skąd ta pewność? Czy jesteś pewny na 100% że nie
    >> da się napisać kompilatora który dla przeciętnych programów
    >> wygeneruje kod 2 razy szybszy?
    > Pewnie ze da sie, ale dopuki komitent standaryzacyjny bedzie sie
    > zajmowal abstrakcjami a nie wprowadzal do core jezyka nowych typow
    > danych ktore sie mapuja 1:1 na nowe sprzetowe rejestry to IMO nic sie

    a jak sobie wyobrażasz specyfikację języka który mapuje typy 1:1 na
    sprzętowe rejestry? I jak ma to pomóc w optymalizacji przeciętnych
    programów?


    B.


  • 24. Data: 2013-03-23 23:21:58
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: Marek Borowski <m...@...borowski.com>

    On 2013-03-23 21:42, Bronek Kozicki wrote:
    > On 22/03/2013 15:54, Marek Borowski wrote:
    >> On 2013-03-21 23:09, M.M. wrote:
    > ...
    >>> No dobrze, ale skąd ta pewność? Czy jesteś pewny na 100% że nie
    >>> da się napisać kompilatora który dla przeciętnych programów
    >>> wygeneruje kod 2 razy szybszy?
    >> Pewnie ze da sie, ale dopuki komitent standaryzacyjny bedzie sie
    >> zajmowal abstrakcjami a nie wprowadzal do core jezyka nowych typow
    >> danych ktore sie mapuja 1:1 na nowe sprzetowe rejestry to IMO nic sie
    >
    > a jak sobie wyobrażasz specyfikację języka który mapuje typy 1:1 na
    > sprzętowe rejestry? I jak ma to pomóc w optymalizacji przeciętnych
    > programów?
    >
    char, int, long -> mapuje sie w rejestry uniwersalne
    float, double -> mapuje sie w rejestry koprocesora

    Swiat idze do przodu, rejestry uniwersalne sie wydluzyly i pojawily sie
    rejestry jednostek wektorowych, a w C/C++ juz niekoniecznie.


    co za problem dodac uint8_vt, uint16_vt, uint32_vt i operacje na nich ?

    uint8_vt = 0x03030303;
    uint8_vt = 0x02020202;
    uint8_vt = v1*v3; // 0x06060606

    z vektorowym float byloby nieco trudniej ale cos mozna wykombinowac.


    Co do drugiej czesci:

    Wspolczesne CPU i tak za zbyt szybkie dla przecietnych programow, moga
    wykorzystywac 1/10 funkcjonalnosci i bedzie dobrze. Pozatym przecietny
    program po stronie klienta to niedlugo bedzie pisany wylacznie
    javascripcie wiec prymitywne typy danych i tak nie beda mialy znaczenia.

    Natomiast co do innych zastosowac to wystarczy spojrzec w kod np. VLC
    (precyzujac bibliotek) Jakos tak sie dziwnie sklada ze najbardziej
    krytyczne fragmenty np. transformata cosinusowa sa jednak pisnanie z
    uzyciem niestandartowych rozszezen czy wrecz asemblerze. Jakby dalo sie
    napisac czysty kod ktory kompilator by zoptymalizowal dostatecznie
    dobrze na jednostke wektorowa to by chyba tam byl jedyny, nie uwazasz ?


    Marek







  • 25. Data: 2013-03-23 23:50:57
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: "M.M." <m...@g...com>

    W dniu sobota, 23 marca 2013 23:21:58 UTC+1 użytkownik Marek Borowski napisał:
    > char, int, long -> mapuje sie w rejestry uniwersalne
    > float, double -> mapuje sie w rejestry koprocesora
    Mapuje, ale co do jakości tego mapowania nie jestem
    przekonany. W programach szachowych wykorzystuje się fakt, że
    zarówno plansza ma 64 pola, a typ long long ma 64 bity. Robiąc
    operacje logiczne uzyskuje się równoległość. Często i gęsto
    widać wstawki asemblerowe do tych operacji. Choć są to
    maleńkie wstawki to przyspieszają cały programy o kilka procent.
    O jakich wstawkach mowa? Np. o zliczaniu bitów na procesorze
    który nie ma tej instrukcji sprzętowo. Wersja asemblerowa
    przyspiesza cały program o kilka procent.

    Pozdrawiam


  • 26. Data: 2013-03-24 00:06:09
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: firr kenobi <p...@g...com>

    bylo juz o tym na grupie (plc, w styczniu 2012
    w watku pt "typy proste i operatory dla sse")


  • 27. Data: 2013-03-24 17:54:34
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: "M.M." <m...@g...com>

    W dniu niedziela, 24 marca 2013 00:06:09 UTC+1 użytkownik firr kenobi napisał:
    > bylo juz o tym na grupie (plc, w styczniu 2012
    > w watku pt "typy proste i operatory dla sse")
    Zdaje się, że nieraz wracałeś do tego tematu :)
    Teraz temat wrócił :)
    Pozdrawiam


  • 28. Data: 2013-03-25 08:08:34
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: firr kenobi <p...@g...com>

    W dniu piątek, 22 marca 2013 17:49:48 UTC+1 użytkownik M.M. napisał:
    > W dniu piątek, 22 marca 2013 16:27:16 UTC+1 użytkownik Michoo napisał:
    >
    > > Ca�y czas to powstaje. Ostatnio np. w glibc zrobili podstawy obs�ugi
    >
    > > instrukcji stm w nowych procesorach intela.
    >
    > Ano właśnie. Techniki optymalizacyjne implementuje się w kompilatorach
    >
    > na bieżąco, można domniemać że jutro kompilatory będą lepsze, czyli dziś
    >
    > są nie inne, tylko gorsze.
    >
    >
    >
    > > Pewnie ze da sie, ale dopuki komitent standaryzacyjny bedzie sie
    >
    > > zajmowal abstrakcjami a nie wprowadzal do core jezyka nowych typow
    >
    > > danych ktore sie mapuja 1:1 na nowe sprzetowe rejestry to IMO nic sie
    >
    > > nie poradzi. Wynalazki w postaci intrinsic functions to nie to samo
    >
    > Kilkanaście lat temu rozmawiam ze znajomym. Był on wtedy wykładowcą
    >
    > na UMK, uczył między innymi programowania w rożnych językach, głównie w C.
    >
    > W trakcie rozmowy poruszam temat sensowności programowania w asemblerze w
    >
    > celu przyspieszenia kodu. Pytam na ile dobry kod generują kompilatory
    >
    > borlanda czy microsoftu. Prawie na mnie się wydarł że to jet niemożliwe
    >
    > aby generowały nieoptymalny kod. Zdziwiłem się, bo wygenerowanie optymalnego
    >
    > kodu jest niemożliwe. Pomyślałem więc, że chodzi po pierwsze o to, że
    >
    > generują optymalny kod w stosunku do nakładu pracy jaki włożono w napisane
    >
    > tych kompilatorów, a po drugie o to, że włożony nakład pracy był bardzo
    >
    > duży. Uwierzyłem że są optymalne w takim sensie, że jak się zgromadzi
    >
    > 100 speców od optymalizacji kodu to przez 10 lat pracy napiszą kompilator
    >
    > lepszy o góra 10%-20%. Tymczasem w ciągu nie więcej niż roku od naszej
    >
    > rozmowy pojawiły się kompilatory tak efektywne, że czas wykonania wielu
    >
    > programów skrócił się o 60%, rzadziej o 70%. Więc drugi raz na ten sam numer
    >
    > nie dam się nabrać :) Ktoś by musiał napisać dużo więcej niż "w intelu się
    >
    > starają", to wtedy bym uwierzył, że dzisiejsze kompilatory są u szczytu
    >
    > możliwości. Być może są, ale ja na razie nie wierzę.
    >

    co do kompilatorow to tez moze byc wlasnie
    tak ze intel icc optymalizuje lepiej niz gcc
    i vcc, np w tym benchmarku

    http://benchmarksgame.alioth.debian.org/u32/performa
    nce.php?test=mandelbrot

    najszybszy okazal sie intelowy fortran i to
    prawie dwa razy szybszy niz c w gcc :/ - nie
    przypuszczam zeby fortran byl szybszy od c

    wiec wychodziloby ze roznica wynika z
    optymalizacji kodu w asemblerze (icc vs gcc)

    o ile tak jest tp jest troche straszne bo mz
    znaczyloby ze icc albo jest w optymalizowaniu dobry albo jaki taki (bo tego tez nie
    wiadnomo
    czy on jet taki hiperdobry w stosunku do
    recznego specjalisty) natomiast gcc i vcc sa byc moze dosyc slabe

    jest to pewnego rodzaju hipoteza ale jak kogos to
    interesuje to powinien pomierzyc lub conajmniej poczytac jakies w miare aktualne
    porownania bo
    pewnie sa jakies w necie (i moglby wpisac
    wyniki na grupe)

    mnie osobiscie jak na dzis bardziej interesuje
    poznanie rwguł optymalizacji kodu samemu niz
    posiadanie hiperoptymalizujacego kompilatora,
    oczywiscie wolalbym raczej by kompilator ktorego
    uzywam generowal na zadanie lepszego asma
    ale nawet bardziej interesuje mnie reczna
    optymalizacja - umiem optymalizowac kody w c
    choc chcialbym sie nauczyc robic to lepiej
    i troche umiem optymalizowac na poziomie asma
    (ale tutaj slabo - tez chcialbym sie nauczyc
    optymalizowac lepiej )




  • 29. Data: 2013-03-25 10:07:25
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: "M.M." <m...@g...com>

    W dniu poniedziałek, 25 marca 2013 08:08:34 UTC+1 użytkownik firr kenobi napisał:
    > co do kompilatorow to tez moze byc wlasnie
    > tak ze intel icc optymalizuje lepiej niz gcc
    > i vcc, np w tym benchmarku
    > http://benchmarksgame.alioth.debian.org/u32/performa
    nce.php?test=mandelbrot
    > najszybszy okazal sie intelowy fortran i to
    > prawie dwa razy szybszy niz c w gcc :/
    No proszę. Tak podejrzewałem, ale nie wiedziałem.
    Teraz widać, różnice dwa razy to coś czego można
    się spodziewać.

    Pamiętam jak kiedyś dobierałem drobiazgi implementacyjne w
    programie szachowym na bardzo wczesnym etapie realizacji.
    Chodziło dosłownie o przesuwanie bierek po planszy i o
    update kilku pomocniczych statystyk przy okazji przesuwania.
    Kompilowałem gcc, wtedy jeszcze na platformę 32bitową. Od
    czasu do czasu zauważałem, że po jakiejś drobnej zmianie
    kompilator wygenerował kod 2-3 razy szybszy. Dosłownie 50
    różnych pomysłów, różnice w wydajności pomiędzy pomysłami
    o ułamki procenta, a czasami/nagle różnica o 200-300%. Taki
    kod skompilowany potem przy pomocy MSVC++ działał o wiele
    wolniej. To było tak, jakbym dobrał konstrukcje językowe,
    które kompilator gcc akurat umie zoptymalizować. Więc kilka
    przesłanek na to jest, że jakby sztab fachowców przysiadł, to
    by napisał kompilator 2-3 razy wydajniejszy.


    > - nie przypuszczam zeby fortran byl szybszy od c
    Nie zdziwiłbym się, jakby napisanie optymalizatora do
    frotrana/ady, było łatwiejsze niż do C/C++.

    > wiec wychodziloby ze roznica wynika z
    > optymalizacji kodu w asemblerze (icc vs gcc)
    No chyba tak, chyba potwierdzają się moje przypuszczenia.

    > jest to pewnego rodzaju hipoteza ale jak kogos to
    > interesuje to powinien pomierzyc lub conajmniej poczytac
    > jakies w miare aktualne porownania bo
    > pewnie sa jakies w necie (i moglby wpisac
    > wyniki na grupe)
    Liczyłem że ktoś bardzo doświadczony w asemblerze coś konkretnego
    powie w tym wątku, na razie wszyscy łącznie ze mną bazujemy na
    przypuszczeniach.

    Przed laty wyszła książka "procesory pentium, narzędzia optymalizacji"
    autorstwa Micheal L. Schmit. W którymś z rozdziałów pokazał ręcznie
    zoptymalizowaną procedurę w asemblerze, po czym dodał coś w rodzaju
    "nie sądzę aby jakikolwiek kompilator zdołał tak zoptymalizować". Myślę,
    że to stwierdzenie nadal w jakimś stopniu jest aktualnie, ciekawe tylko w
    jakim :)

    Odbiegając od tematu...
    Ostatnio napisałem w proceduralnym C++ prosty program optymalizacyjny.
    Prosty, bo kodu tam raptem 1000 linijek, z czego kod obliczeniowy to
    może 400 linii. Kod jest bardzo sprytnie zoptymalizowany, ale patrzę na
    niego, patrzę na podejrzane wyniki i się zastanawiam... czy tam na pewno
    nie ma błędu? No i właśnie dziś przepisuję w wysokopoziomowym C++,
    nafaszerowanym klasami i vectorami... co byłoby gdybym miał ten kod
    napisany w asemblerze? Pewnie bym po pierwszej procedurze miał dosyć i
    bym wrócić do wysokopoziomowego C++ albo do Javy :)

    Pozdrawiam





    >
    >
    >
    > mnie osobiscie jak na dzis bardziej interesuje
    >
    > poznanie rwguł optymalizacji kodu samemu niz
    >
    > posiadanie hiperoptymalizujacego kompilatora,
    >
    > oczywiscie wolalbym raczej by kompilator ktorego
    >
    > uzywam generowal na zadanie lepszego asma
    >
    > ale nawet bardziej interesuje mnie reczna
    >
    > optymalizacja - umiem optymalizowac kody w c
    >
    > choc chcialbym sie nauczyc robic to lepiej
    >
    > i troche umiem optymalizowac na poziomie asma
    >
    > (ale tutaj slabo - tez chcialbym sie nauczyc
    >
    > optymalizowac lepiej )


  • 30. Data: 2013-03-25 10:30:15
    Temat: Re: Nowoczesne procesory - jak to z nimi jest?
    Od: Adam Przybyla <a...@r...pl>

    M.M. <m...@g...com> wrote:
    > W dniu poniedziałek, 25 marca 2013 08:08:34 UTC+1 użytkownik firr kenobi napisał:
    >> mnie osobiscie jak na dzis bardziej interesuje
    >>
    >> poznanie rwguł optymalizacji kodu samemu niz
    >>
    >> posiadanie hiperoptymalizujacego kompilatora,
    >>
    >> oczywiscie wolalbym raczej by kompilator ktorego
    >>
    >> uzywam generowal na zadanie lepszego asma
    >>
    >> ale nawet bardziej interesuje mnie reczna
    >>
    >> optymalizacja - umiem optymalizowac kody w c
    >>
    >> choc chcialbym sie nauczyc robic to lepiej
    >>
    >> i troche umiem optymalizowac na poziomie asma
    >>
    >> (ale tutaj slabo - tez chcialbym sie nauczyc
    >>
    >> optymalizowac lepiej )
    ... i tak i nie. Pamietaj ludzki umysl jest ograniczony, uwzgldenienie
    wielu parametrow na wielu poziomach w wielu procedurach itp. No i podstawowa
    kwestia, niktomu nie bedzie chcialo sie bawic programowaniem tej ilosci kodu w asm;-)
    Kiedys duzo programowalem w asm na 68xxx, kod dawal sie optymalizowac ale
    z kazda wersja kompilatora C bylo coraz trudniej. Pod koniec mojej zabawy, roznice
    byly juz prawie minimalne, miedzy tym co ja robilem i kompilator. Z powazaniem
    Adam Przybyla

strony : 1 . 2 . [ 3 ] . 4 ... 10


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: