eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[about] sse › Re: [about] sse
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
    From: " M.M." <m...@W...gazeta.pl>
    Newsgroups: pl.comp.programming
    Subject: Re: [about] sse
    Date: Fri, 27 Jan 2012 18:47:05 +0000 (UTC)
    Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
    Lines: 72
    Message-ID: <jfurf9$iao$1@inews.gazeta.pl>
    References: <jfrmpu$btm$1@inews.gazeta.pl> <jfrvf1$975$1@inews.gazeta.pl>
    <jfs3nq$l7h$1@inews.gazeta.pl> <jfs84c$5jo$1@inews.gazeta.pl>
    <jftqeg$9g7$1@inews.gazeta.pl> <jfu20n$2ln$1@inews.gazeta.pl>
    NNTP-Posting-Host: localhost
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: inews.gazeta.pl 1327690025 18776 172.20.26.236 (27 Jan 2012 18:47:05 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Fri, 27 Jan 2012 18:47:05 +0000 (UTC)
    X-User: mariotti
    X-Forwarded-For: 89.229.34.123
    X-Remote-IP: localhost
    Xref: news-archive.icm.edu.pl pl.comp.programming:194898
    [ ukryj nagłówki ]

    <f...@W...gazeta.pl> napisał(a):
    > to troche zakrawa na przyblizenie, ale mozna
    > tak postrzegac czesc operacji np przerzutowanie
    > tablicy floatow na tablice ssefloat8 i liczenie
    > osmiu operacji arytmetycznych na raz
    >
    > z tymi branchami jest problem, wogole jest problem
    > pt "jak dostosowac sse do przyspieszania jak najwiekszej
    > ilosci przypadkow intensywnych obliczen w petlach"
    > (niektorzy nazywaja takie miejsca chyba goracymi petlami
    > ale to okreslenie mi nie bardzo pasuje, slowko intensywne
    > tez nie jest calkiem dobre)
    >
    > dla mnie sa to ciekawe tematy, obok wielopotokowosci
    > to jest drugi sposob zwiekszenia mocy przetwarzania
    > rdzenia

    No wlasnie musze przyspieszyc program, a czasu na testowanie
    kolejnych rozwiazan nie mam.

    Jesli przetransponuje macierz danych, to na uproszczonym tescie
    juz zyskuje 10krotne przyspieszenie.
    Cos w rodzaju:
    for( i=0 ; i<N ; i++ )
    for( j=0 ; j<M ; j++ )
    operacje( dane[i][j] )
    VS
    for( j=0 ; j<M ; j++ )
    for( i=0 ; i<N ; i++ )
    operacje( dane[i][j] )

    Do tego pidzial na watki i na 6 rdzeniach powinno byc 60 razy szybciej.
    Niestety to nadal troche za malo.

    A jest może coś takiego w SSE, żeby porównał cztery int32 upakowane do
    jednego int128 i zwrócił inta z ustawionymi albo wyzerowanymi czterema
    najmlodszymi bitami?

    Mysle nad czyms takim:

    int dane[N] = { wprowadza uzytkownik };
    int test[4] = { 5 , 5 , 5 , 5 };

    for( int i=0 ; i<N ; i+4 ) {
    switch( mniejsze_lub_rowne( dane+i , test ) ) {
    case 0: break;
    case 1: break;
    ..............
    case 15:
    }
    }

    Wtedy bylby jeden skok pod wyspecjalizowany kod dla kazdego przypadku.

    Pozdrawiam

    P.S.
    Wlasnie w takich przypadkach by sie przydala pragma do poinformowania
    kompilatora ze funkcja mniejsze_lub_rowne zwraca liczbe z zakresu
    od 0 do 15 i kompilator nie musi generowac zadnego kodu do omijania
    switcha.









    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

  • 27.01.12 20:22

Najnowsze wątki z tej grupy


Najnowsze wątki

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: