eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming[about] sseRe: [about] sse
  • Data: 2012-01-27 20:22:15
    Temat: Re: [about] sse
    Od: " " <f...@W...gazeta.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    M.M. <m...@W...gazeta.pl> napisał(a):

    > <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.
    >
    >

    zdaje sie ze nie ma czegos takiego - glownie chyba
    mozna liczyc na rownolegle wykonywanie podstawowych
    opearcji jak * / + - sqrt, i tak nie wiem czy to dziala
    rzeczywiscie 4 (avx 8) razy szybciej niz fpu ale jakis
    procent szybciej pewin ejednak dziala

    jak potrzebujesz pisac jaknajszybsze procedury to sie
    najlepiej naucz sse - ja mam zamiar sie nauczyc, w miare
    poduczania wrzuce jakiegos posta z uwagami bo pare sie
    pojawia

    szkoda ze to pisanie bezposrednio kodu maszynowego
    przez 'odpalanie stringow' mi sie sypie z niewiadomych
    powodow (jeszcze nie szukalem odpowiedzi) na instrukcjach
    fpu/sse bo jest dosyc wygodne i moze od razu bym testowal
    czy funkcje przyspieszają







    --
    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

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: