sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Też zauważam problem w tym, że części spraw nie rozumiesz. Ale jak mówisz po kolei:
gpuuu @ 2010.10.18 15:23
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Zacznijmy od definicji Warp. Warp nie ma zawsze 32 wątki, a to ile ma zależy od sprzętu, i oznacza to najmniejszą jednostkę wykonującą równoległy kod. W wypadku AMD i kart nVidii przed fermi warp był równy ilości rdzeni w SM. W Fermi wprowadzono dual warp i SM nie jest już najmniejszą jednostką wykonawczą, a własnie te warpy wielkości 1/2 SM (czyli nie 32, a 16/24 zależnie od tego czy to GF100, czy GF10[4/6/8]). Load/Store może być wykonywany równolegle, ale nie jest bo musi być synchronizowany z obliczeniami i danymi które one potrzebują załadować/zapisać więc jest on uruchamiany wtedy kiedy potrzeba, a kolejne instrukcje czekają, aż wykona pracę, bo na tych danych będą operować (nie mogą operować na danych których nie wiadomo czy załadował i dlatego musi być synchronizacja, a równoległość trafia szlak). Warpy muszą czekać, aż bliźniak zakończy obliczenia (warp 16/24 w SM o 2x rozmiarze), bo scheduler rozrzucający instrukcje pomiędzy SM nie da mu kolejnych danych i instrukcji dopóki cały SM nie będzie gotowy na nie.
gpuuu @ 2010.10.18 15:23
Instrukcje if else nie moga byc rozdzielone na inne grupy, jesli rozne watki warpa wybiara inna sciezke w kodzie, obje sciezki zostana wykonane jedna za druga z blokowaniem watkow ktore nie weszly do danej sciezki. Dual warp znaczy tyle, ze w danym cyklu sheduler moze dwa niezalezne warpy wybrac i z kazdego rozpoczac po jednej instruckji, dodatkowo, jesli stwierdzi, ze w wybranym warpie nastepna instrukcja jest niezalezna od poprzednich, moze rowniez na 3 grupie alu odpalic taka instrukcje...
Tak jeśli w ramach warpa będą różne ścieżki to wykona on obie drogi, blokując rdzenie które nie powinny wykonywać danego kodu, dual warp nie wybiera żadnych warpów (są 2x schedulery które mają na stałe przypisane procki na których operuje).
lol, to moj ostatni post w tym temacie, bo znow, sobie przypomnialem, czemu lepiej sie nie wdawac w dyskusje w komentarzach
sprawdz sobie, warp ma zawsze 32 watki, na wszystkich architekturach nvidii
dodatkowo na ati nie ma warpow, sa wavefronty, poczytaj jeszcze tez o load store, kazda instrukcja musi czekac przed wykonaniem zanim jego zrodlowe rejestry nie beda zablokowane przez wykonywane instrukcje ktore maja do niego zapisac, tyle, ze mp ma takich warpow w kolejce kilkadziesiat, i zawsze sie znajdzie jakis warp gotowy do wykonania. dodatkowo kompilator zmienia kolejnosc niezaleznych lini tak by muc kolejne dwie instrukcje z danego warpa odpalic w jednym cyklu, tak jak kiedys parowanie instrukcji na cpu.
sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Też zauważam problem w tym, że części spraw nie rozumiesz. Ale jak mówisz po kolei:
gpuuu @ 2010.10.18 15:23
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Zacznijmy od definicji Warp. Warp nie ma zawsze 32 wątki, a to ile ma zależy od sprzętu, i oznacza to najmniejszą jednostkę wykonującą równoległy kod. W wypadku AMD i kart nVidii przed fermi warp był równy ilości rdzeni w SM. W Fermi wprowadzono dual warp i SM nie jest już najmniejszą jednostką wykonawczą, a własnie te warpy wielkości 1/2 SM (czyli nie 32, a 16/24 zależnie od tego czy to GF100, czy GF10[4/6/8]). Load/Store może być wykonywany równolegle, ale nie jest bo musi być synchronizowany z obliczeniami i danymi które one potrzebują załadować/zapisać więc jest on uruchamiany wtedy kiedy potrzeba, a kolejne instrukcje czekają, aż wykona pracę, bo na tych danych będą operować (nie mogą operować na danych których nie wiadomo czy załadował i dlatego musi być synchronizacja, a równoległość trafia szlak). Warpy muszą czekać, aż bliźniak zakończy obliczenia (warp 16/24 w SM o 2x rozmiarze), bo scheduler rozrzucający instrukcje pomiędzy SM nie da mu kolejnych danych i instrukcji dopóki cały SM nie będzie gotowy na nie.
gpuuu @ 2010.10.18 15:23
Instrukcje if else nie moga byc rozdzielone na inne grupy, jesli rozne watki warpa wybiara inna sciezke w kodzie, obje sciezki zostana wykonane jedna za druga z blokowaniem watkow ktore nie weszly do danej sciezki. Dual warp znaczy tyle, ze w danym cyklu sheduler moze dwa niezalezne warpy wybrac i z kazdego rozpoczac po jednej instruckji, dodatkowo, jesli stwierdzi, ze w wybranym warpie nastepna instrukcja jest niezalezna od poprzednich, moze rowniez na 3 grupie alu odpalic taka instrukcje...
Tak jeśli w ramach warpa będą różne ścieżki to wykona on obie drogi, blokując rdzenie które nie powinny wykonywać danego kodu, dual warp nie wybiera żadnych warpów (są 2x schedulery które mają na stałe przypisane procki na których operuje).
Natomiast kompletujac zestaw high end do domu jestem gotow poswiecic te 5 klatek w crysisie kosztem np kultury pracy, nizszych temperatur, cichszego chlodzenia, nizszych rachunkow za prad.
Rachunków za prąd... Wciąż pokutują o tym mity. Panowie, przeliczcie sobie kiedyś te różnice w poborze energii elektrycznej przez różne karty graficzne na złotówki.
Każde 100W brane non-stop 24h na dobę, to około 466zł\rok* . Ile średnio czasu używamy karty graficznej? Cztery godziny dziennie? Wówczas karta graficzna 'biorąca' 100W więcej obciąży nasz portfel niesamowita sumą 78 zł po roku!
Sześć i pół złotego miesięcznie dzieli GTX295 od HD4830**
Co do reszty to oczywiście się zgadzam.
*(cenę za kWh = 0,54 zł wziąłem z moich rachunków, wliczając wszelkie opłaty stałe dla około 100kWh, przy wyższym zużyciu cena ta będzie tylko niższa)
chyba nie do konca wiesz co piszesz, poczytaj, po pierwsze to nie jest simd, a po drugie kazda grupa 16 rdzeni wykonuje niezalezna instrukcje, co wiecej, inne grupy tez moga wykonac taka instrukcje, i caly mp moze wykonac 4 instrukcje w jednym cyklu, kazda na 16 innych rdzeniach bedacych jego czescia, na przyklad 3 instrukcje ALU kazda na 16 rdzeniach + jedna instrukcja load/store na grupie do tego przeznaczonej.
To jest SIMD. Teoretycznie każda grupa 32/48 mogą wykonać 2x instrukcje w warpach po 16/24 (gf100 i gf104), czyli jest to SIMD teoretycznie 2x więcej SIMD niż jest SM... nie bez powodu mówię teoretycznie bo robiłem testy na 470 i na 460 (obliczanie dużej ilości danych i tylko co 32/48 procek dostawał dane które nakazywały mu dużo więcej obliczeń) i właśnie mimo, że teoretycznie jest dual warp (więc tylko co druga grupa 16/24 procków powinna zwolnić, a zwalniały wszystkie i wydajność była tak jakby wszystkie dostały dane do obliczania tak jakby nie działał dual warp... tzn pewnie działa tylko zamiast czekać podczas wykonywania programu, 16/24 rdzenie skończą wcześniej, ale zanim będą mogły się wsiąść za coś nowego do liczenia muszą poczekać na tamte 16/24). SM nie może wykonać 4x instrukcji na raz - instrukcje load/store może robić tylko jak, żadnej innej instrukcji nie wykonują 2/3 rdzenie którymi się zajmuje, a innych instrukcji w jednym cyklu też nie może wykonać więcej niż 1... no dobra może upakować i zrobić dwie instrukcje jako jedną (instrukcja FMA, która na raz dodaje i mnoży) i może dwie takie wykonać na raz (dual warp + FMA), co daje co prawda niby 4x instrukcje na raz (tylko jak jeden będzie robić więcej instrukcji drugi musi czekać).
OFC dual warp może czasami się przydać (if() razem z else() o podobnej ilości czasu który tam spędzą i dodatkowo pod warunkiem, ze akurat tak się trafi, że wszystkie instrukcje w grupie 16 nie dostaną danych, że część pójdzie w if, a część do else (a w drugiej grupie, że będzie dokładnie na odwrót (w jednym tylko spełnia warunki if, a w drugim nigdy go nie spełnia ;p))) - jak dobrze wiesz jest mało prawdopodobne, żeby tak było i normalnie z dual warp zostaje tak naprawdę po prostu co prawda 2x niezależnie wykonywane, ale i tak działające tak jakby działało bez dual warp.
sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Instrukcje if else nie moga byc rozdzielone na inne grupy, jesli rozne watki warpa wybiara inna sciezke w kodzie, obje sciezki zostana wykonane jedna za druga z blokowaniem watkow ktore nie weszly do danej sciezki. Dual warp znaczy tyle, ze w danym cyklu sheduler moze dwa niezalezne warpy wybrac i z kazdego rozpoczac po jednej instruckji, dodatkowo, jesli stwierdzi, ze w wybranym warpie nastepna instrukcja jest niezalezna od poprzednich, moze rowniez na 3 grupie alu odpalic taka instrukcje...
chyba nie do konca wiesz co piszesz, poczytaj, po pierwsze to nie jest simd, a po drugie kazda grupa 16 rdzeni wykonuje niezalezna instrukcje, co wiecej, inne grupy tez moga wykonac taka instrukcje, i caly mp moze wykonac 4 instrukcje w jednym cyklu, kazda na 16 innych rdzeniach bedacych jego czescia, na przyklad 3 instrukcje ALU kazda na 16 rdzeniach + jedna instrukcja load/store na grupie do tego przeznaczonej.
To jest SIMD. Teoretycznie każda grupa 32/48 mogą wykonać 2x instrukcje w warpach po 16/24 (gf100 i gf104), czyli jest to SIMD teoretycznie 2x więcej SIMD niż jest SM... nie bez powodu mówię teoretycznie bo robiłem testy na 470 i na 460 (obliczanie dużej ilości danych i tylko co 32/48 procek dostawał dane które nakazywały mu dużo więcej obliczeń) i właśnie mimo, że teoretycznie jest dual warp (więc tylko co druga grupa 16/24 procków powinna zwolnić, a zwalniały wszystkie i wydajność była tak jakby wszystkie dostały dane do obliczania tak jakby nie działał dual warp... tzn pewnie działa tylko zamiast czekać podczas wykonywania programu, 16/24 rdzenie skończą wcześniej, ale zanim będą mogły się wsiąść za coś nowego do liczenia muszą poczekać na tamte 16/24). SM nie może wykonać 4x instrukcji na raz - instrukcje load/store może robić tylko jak, żadnej innej instrukcji nie wykonują 2/3 rdzenie którymi się zajmuje, a innych instrukcji w jednym cyklu też nie może wykonać więcej niż 1... no dobra może upakować i zrobić dwie instrukcje jako jedną (instrukcja FMA, która na raz dodaje i mnoży) i może dwie takie wykonać na raz (dual warp + FMA), co daje co prawda niby 4x instrukcje na raz (tylko jak jeden będzie robić więcej instrukcji drugi musi czekać).
OFC dual warp może czasami się przydać (if() razem z else() o podobnej ilości czasu który tam spędzą i dodatkowo pod warunkiem, ze akurat tak się trafi, że wszystkie instrukcje w grupie 16 nie dostaną danych, że część pójdzie w if, a część do else (a w drugiej grupie, że będzie dokładnie na odwrót (w jednym tylko spełnia warunki if, a w drugim nigdy go nie spełnia ;p))) - jak dobrze wiesz jest mało prawdopodobne, żeby tak było i normalnie z dual warp zostaje tak naprawdę po prostu co prawda 2x niezależnie wykonywane, ale i tak działające tak jakby działało bez dual warp.
karty jeszcze nie ma, a połowa ludzi juz wie jakie bedzie miała przepsutowość pamieci i jak sie bedą krecic. uwierzcie, ze Ci w nV wiedza lepiej od was, ile dać bitów do karty etc.
nie do konca rozumiem dlaczego moglo by miec to taki fatalny wplyw na obliczenia? shedulery gtx480 sa slabsze niz te w 460, pamietaj, ze w fermi kazda grupa 16 rdzeni moze wykonac wlasna instrukcje, gdyby dodano w gtx580 jedna grupe to i tak podwójny sheduler z 460 mogl by odpalic 4 niezalezne instrukcje dla kazdej grupy.
Nie każda grupa 16 rdzeni (bo takich grup nie ma), tylko właśnie każda grupa 32 rdzeni może wykonać inny program (tyle co jest w SIMD - w wypadku 460 są to grupy po 48 rdzeni, a u Amd po grupy po 80). Ten jak to nazwałeś podwójny scheduler, to po prostu scheduler działający na dwóch niezależnych płaszczyznach (1. Rozdziela różne programy, na poszczególne SIMD (ten etap jest nowością, bo w GT200 czy u Amd po prostu wszystkie SIMD muszą wykonać ten dam program (tylko robią to niezależnie)) i 2. Rozsyła pojedyncze instrukcje do wszystkich swoich procków (GF100 32, GF104 48), i rozdziela im różne dane (dlatego to jest SIMD - single instruction, multiple data)).
Chyba, że mówisz o dual warp (który w większości przypadków jest single warp) to i tak masz wtedy w GF100 2x mniejsze warpy niż w GF110 (przyjmując teoretyczne 64procków per simd)
chyba nie do konca wiesz co piszesz, poczytaj, po pierwsze to nie jest simd, a po drugie kazda grupa 16 rdzeni wykonuje niezalezna instrukcje, co wiecej, inne grupy tez moga wykonac taka instrukcje, i caly mp moze wykonac 4 instrukcje w jednym cyklu, kazda na 16 innych rdzeniach bedacych jego czescia, na przyklad 3 instrukcje ALU kazda na 16 rdzeniach + jedna instrukcja load/store na grupie do tego przeznaczonej.
A jeżeli ma się taką kartę dla entuzjastów która do tego prowadzi w wyścigu wydajności przekłada się to też na prestiż słabszych modeli... które stają się jak Porsche Boxster, model 959 to to nie jest, ale zawsze to porsche
Tutaj zgodze sie z przedmowcami - segment enthusiast to wlasnie bezkompromisowa wydajnosc, gdzie nie licza sie ani decybele i zuzycie pradu ani wydana kasa tylko punkty w 3dmarkach - ale nie mozna mylic tego segmentu z high endem bo target jest diametralnie inny...
w segmencie entuzjastow skladasz maszyne do bicia rekordow w 3d marku - nie patrzac na to ze wentylatory wyja jak potepieniec, a calosc bierze tyle pradu co osiedle domkow, nie martwi Cie ze wokol stercza kable a polowe biurka zajmuje ci rozebrana lodówka której uzyjesz do chlodzenia cpu aby moc go jeszcze bardziej wykrecic- tu chodzi o wydajnosc bez zadnych kompromisow. Natomiast kompletujac zestaw high end do domu jestem gotow poswiecic te 5 klatek w crysisie kosztem np kultury pracy, nizszych temperatur, cichszego chlodzenia, nizszych rachunkow za prad. High end oprócz wydajnosci oznacza tez ogolna jakosc, czyli np komputer w ladnej, aluminiowej obudowie Lian Li, a nie czesci na pudelku po plycie glownej z sterczacymi zewszad kabelkami.
To dokladnie tak jak z samochodami - na maksa stuningowany lancer evo kosztuje tyle samo co powiedzmy bmw m5. Zapewne przyspiesza do setki o sekunde czy dwie szybciej od niego, czas okrazenia na torze tez ma lepszy - ale o to wlasnie chodzi, bo to samochod dla entuzjastow, ktorzy dla poprawienia przyspieszenia o 0,2 sekundy wywala z samochodu cala tylnia kanape, klimatyzacje, tapicerke i wszystko co sie da.... Natomiast high end to najwyzsza polka ale na zasadzie malutkich kompromisów w kazdej dziedzinie - a to znaczy ze chce miec super przyspieszenia, ale oczekuje tez komfortu i ciszy wewnatrz... nie chce rezygnowac ze skorzanej tapicerki i klimatyzacji a nade wszystko z uzywalnosci na codzien.
Nie czujesz tej roznicy?
W holenderskim sklepie internetowym podano omyłkowo do wiadomości oficjalne ceny przedpremierowe nowych Radków, dokładniej Saphire:
mają wynieść 255 euro za model Radeon HD 6870 oraz 189 euro za Radeon HD 6850.
Po cenach widać, że będą w innym przedziale cenowym niż ich odpowiedniki w serii HD5k co może konkretnie zbić z tropu potencjalnych nowych użytkowników rozumujących logicznie:
- skoro HD5870 było potężne i mocne, to HD6870 będzie jeszcze potężniejsze, a tu ZONK...
Fakt, będą jeszcze serie 69xx, ale nie zmienia to faktu, że będzie nie małe zamieszanie na początku sprzedaży, czyli za około miesiąc...
Za tydzień będzie premiera 'papierowa'...
W holenderskim sklepie internetowym podano omyłkowo do wiadomości oficjalne ceny przedpremierowe nowych Radków, dokładniej Saphire:
mają wynieść 255 euro za model Radeon HD 6870 oraz 189 euro za Radeon HD 6850.
Po cenach widać, że będą w innym przedziale cenowym niż ich odpowiedniki w serii HD5k co może konkretnie zbić z tropu potencjalnych nowych użytkowników rozumujących logicznie:
- skoro HD5870 było potężne i mocne, to HD6870 będzie jeszcze potężniejsze, a tu ZONK...
Fakt, będą jeszcze serie 69xx, ale nie zmienia to faktu, że będzie nie małe zamieszanie na początku sprzedaży, czyli za około miesiąc...
Za tydzień będzie premiera 'papierowa'...
darujcie sobie takie cytowanie
sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Też zauważam problem w tym, że części spraw nie rozumiesz. Ale jak mówisz po kolei:
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Zacznijmy od definicji Warp. Warp nie ma zawsze 32 wątki, a to ile ma zależy od sprzętu, i oznacza to najmniejszą jednostkę wykonującą równoległy kod. W wypadku AMD i kart nVidii przed fermi warp był równy ilości rdzeni w SM. W Fermi wprowadzono dual warp i SM nie jest już najmniejszą jednostką wykonawczą, a własnie te warpy wielkości 1/2 SM (czyli nie 32, a 16/24 zależnie od tego czy to GF100, czy GF10[4/6/8]). Load/Store może być wykonywany równolegle, ale nie jest bo musi być synchronizowany z obliczeniami i danymi które one potrzebują załadować/zapisać więc jest on uruchamiany wtedy kiedy potrzeba, a kolejne instrukcje czekają, aż wykona pracę, bo na tych danych będą operować (nie mogą operować na danych których nie wiadomo czy załadował i dlatego musi być synchronizacja, a równoległość trafia szlak). Warpy muszą czekać, aż bliźniak zakończy obliczenia (warp 16/24 w SM o 2x rozmiarze), bo scheduler rozrzucający instrukcje pomiędzy SM nie da mu kolejnych danych i instrukcji dopóki cały SM nie będzie gotowy na nie.
Tak jeśli w ramach warpa będą różne ścieżki to wykona on obie drogi, blokując rdzenie które nie powinny wykonywać danego kodu, dual warp nie wybiera żadnych warpów (są 2x schedulery które mają na stałe przypisane procki na których operuje).
lol, to moj ostatni post w tym temacie, bo znow, sobie przypomnialem, czemu lepiej sie nie wdawac w dyskusje w komentarzach
sprawdz sobie, warp ma zawsze 32 watki, na wszystkich architekturach nvidii
dodatkowo na ati nie ma warpow, sa wavefronty, poczytaj jeszcze tez o load store, kazda instrukcja musi czekac przed wykonaniem zanim jego zrodlowe rejestry nie beda zablokowane przez wykonywane instrukcje ktore maja do niego zapisac, tyle, ze mp ma takich warpow w kolejce kilkadziesiat, i zawsze sie znajdzie jakis warp gotowy do wykonania. dodatkowo kompilator zmienia kolejnosc niezaleznych lini tak by muc kolejne dwie instrukcje z danego warpa odpalic w jednym cyklu, tak jak kiedys parowanie instrukcji na cpu.
sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Też zauważam problem w tym, że części spraw nie rozumiesz. Ale jak mówisz po kolei:
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Zacznijmy od definicji Warp. Warp nie ma zawsze 32 wątki, a to ile ma zależy od sprzętu, i oznacza to najmniejszą jednostkę wykonującą równoległy kod. W wypadku AMD i kart nVidii przed fermi warp był równy ilości rdzeni w SM. W Fermi wprowadzono dual warp i SM nie jest już najmniejszą jednostką wykonawczą, a własnie te warpy wielkości 1/2 SM (czyli nie 32, a 16/24 zależnie od tego czy to GF100, czy GF10[4/6/8]). Load/Store może być wykonywany równolegle, ale nie jest bo musi być synchronizowany z obliczeniami i danymi które one potrzebują załadować/zapisać więc jest on uruchamiany wtedy kiedy potrzeba, a kolejne instrukcje czekają, aż wykona pracę, bo na tych danych będą operować (nie mogą operować na danych których nie wiadomo czy załadował i dlatego musi być synchronizacja, a równoległość trafia szlak). Warpy muszą czekać, aż bliźniak zakończy obliczenia (warp 16/24 w SM o 2x rozmiarze), bo scheduler rozrzucający instrukcje pomiędzy SM nie da mu kolejnych danych i instrukcji dopóki cały SM nie będzie gotowy na nie.
Tak jeśli w ramach warpa będą różne ścieżki to wykona on obie drogi, blokując rdzenie które nie powinny wykonywać danego kodu, dual warp nie wybiera żadnych warpów (są 2x schedulery które mają na stałe przypisane procki na których operuje).
Rachunków za prąd... Wciąż pokutują o tym mity. Panowie, przeliczcie sobie kiedyś te różnice w poborze energii elektrycznej przez różne karty graficzne na złotówki.
Każde 100W brane non-stop 24h na dobę, to około 466zł\rok* . Ile średnio czasu używamy karty graficznej? Cztery godziny dziennie? Wówczas karta graficzna 'biorąca' 100W więcej obciąży nasz portfel niesamowita sumą 78 zł po roku!
Sześć i pół złotego miesięcznie dzieli GTX295 od HD4830**
Co do reszty to oczywiście się zgadzam.
*(cenę za kWh = 0,54 zł wziąłem z moich rachunków, wliczając wszelkie opłaty stałe dla około 100kWh, przy wyższym zużyciu cena ta będzie tylko niższa)
**(oparłem się na tabeli Average: http://www.techpowerup.com/reviews/NVIDIA/..._Fermi/30.html)
To jest SIMD. Teoretycznie każda grupa 32/48 mogą wykonać 2x instrukcje w warpach po 16/24 (gf100 i gf104), czyli jest to SIMD teoretycznie 2x więcej SIMD niż jest SM... nie bez powodu mówię teoretycznie bo robiłem testy na 470 i na 460 (obliczanie dużej ilości danych i tylko co 32/48 procek dostawał dane które nakazywały mu dużo więcej obliczeń) i właśnie mimo, że teoretycznie jest dual warp (więc tylko co druga grupa 16/24 procków powinna zwolnić, a zwalniały wszystkie i wydajność była tak jakby wszystkie dostały dane do obliczania tak jakby nie działał dual warp... tzn pewnie działa tylko zamiast czekać podczas wykonywania programu, 16/24 rdzenie skończą wcześniej, ale zanim będą mogły się wsiąść za coś nowego do liczenia muszą poczekać na tamte 16/24). SM nie może wykonać 4x instrukcji na raz - instrukcje load/store może robić tylko jak, żadnej innej instrukcji nie wykonują 2/3 rdzenie którymi się zajmuje, a innych instrukcji w jednym cyklu też nie może wykonać więcej niż 1... no dobra może upakować i zrobić dwie instrukcje jako jedną (instrukcja FMA, która na raz dodaje i mnoży) i może dwie takie wykonać na raz (dual warp + FMA), co daje co prawda niby 4x instrukcje na raz (tylko jak jeden będzie robić więcej instrukcji drugi musi czekać).
OFC dual warp może czasami się przydać (if() razem z else() o podobnej ilości czasu który tam spędzą i dodatkowo pod warunkiem, ze akurat tak się trafi, że wszystkie instrukcje w grupie 16 nie dostaną danych, że część pójdzie w if, a część do else (a w drugiej grupie, że będzie dokładnie na odwrót (w jednym tylko spełnia warunki if, a w drugim nigdy go nie spełnia ;p))) - jak dobrze wiesz jest mało prawdopodobne, żeby tak było i normalnie z dual warp zostaje tak naprawdę po prostu co prawda 2x niezależnie wykonywane, ale i tak działające tak jakby działało bez dual warp.
sory, ale gadasz zupelne brednie, czesci tego co pisales nawet nie moge zrozumiec, co wlasciwie miales na mysli. Ale po kolei:
Warp ma zawsze 32 watki, i na kazdej grupie (16 rdzeni) jest wykonywany przez 2 cykle, a wlasciwie, to inicjowana przez 2 cykle, by wykonywana jest znacznie dluzej, ale potokowanie to ukrywa, wystarczy, ze bedziesz mial odpowiednia liczbe aktywnych warpow na mp. Zadna grupa nie musi czekac na inna, Load/Store moze byc wykonywane rownolegle z innymi instrukcjami.
Instrukcje if else nie moga byc rozdzielone na inne grupy, jesli rozne watki warpa wybiara inna sciezke w kodzie, obje sciezki zostana wykonane jedna za druga z blokowaniem watkow ktore nie weszly do danej sciezki. Dual warp znaczy tyle, ze w danym cyklu sheduler moze dwa niezalezne warpy wybrac i z kazdego rozpoczac po jednej instruckji, dodatkowo, jesli stwierdzi, ze w wybranym warpie nastepna instrukcja jest niezalezna od poprzednich, moze rowniez na 3 grupie alu odpalic taka instrukcje...
To jest SIMD. Teoretycznie każda grupa 32/48 mogą wykonać 2x instrukcje w warpach po 16/24 (gf100 i gf104), czyli jest to SIMD teoretycznie 2x więcej SIMD niż jest SM... nie bez powodu mówię teoretycznie bo robiłem testy na 470 i na 460 (obliczanie dużej ilości danych i tylko co 32/48 procek dostawał dane które nakazywały mu dużo więcej obliczeń) i właśnie mimo, że teoretycznie jest dual warp (więc tylko co druga grupa 16/24 procków powinna zwolnić, a zwalniały wszystkie i wydajność była tak jakby wszystkie dostały dane do obliczania tak jakby nie działał dual warp... tzn pewnie działa tylko zamiast czekać podczas wykonywania programu, 16/24 rdzenie skończą wcześniej, ale zanim będą mogły się wsiąść za coś nowego do liczenia muszą poczekać na tamte 16/24). SM nie może wykonać 4x instrukcji na raz - instrukcje load/store może robić tylko jak, żadnej innej instrukcji nie wykonują 2/3 rdzenie którymi się zajmuje, a innych instrukcji w jednym cyklu też nie może wykonać więcej niż 1... no dobra może upakować i zrobić dwie instrukcje jako jedną (instrukcja FMA, która na raz dodaje i mnoży) i może dwie takie wykonać na raz (dual warp + FMA), co daje co prawda niby 4x instrukcje na raz (tylko jak jeden będzie robić więcej instrukcji drugi musi czekać).
OFC dual warp może czasami się przydać (if() razem z else() o podobnej ilości czasu który tam spędzą i dodatkowo pod warunkiem, ze akurat tak się trafi, że wszystkie instrukcje w grupie 16 nie dostaną danych, że część pójdzie w if, a część do else (a w drugiej grupie, że będzie dokładnie na odwrót (w jednym tylko spełnia warunki if, a w drugim nigdy go nie spełnia ;p))) - jak dobrze wiesz jest mało prawdopodobne, żeby tak było i normalnie z dual warp zostaje tak naprawdę po prostu co prawda 2x niezależnie wykonywane, ale i tak działające tak jakby działało bez dual warp.
nie do konca rozumiem dlaczego moglo by miec to taki fatalny wplyw na obliczenia? shedulery gtx480 sa slabsze niz te w 460, pamietaj, ze w fermi kazda grupa 16 rdzeni moze wykonac wlasna instrukcje, gdyby dodano w gtx580 jedna grupe to i tak podwójny sheduler z 460 mogl by odpalic 4 niezalezne instrukcje dla kazdej grupy.
Nie każda grupa 16 rdzeni (bo takich grup nie ma), tylko właśnie każda grupa 32 rdzeni może wykonać inny program (tyle co jest w SIMD - w wypadku 460 są to grupy po 48 rdzeni, a u Amd po grupy po 80). Ten jak to nazwałeś podwójny scheduler, to po prostu scheduler działający na dwóch niezależnych płaszczyznach (1. Rozdziela różne programy, na poszczególne SIMD (ten etap jest nowością, bo w GT200 czy u Amd po prostu wszystkie SIMD muszą wykonać ten dam program (tylko robią to niezależnie)) i 2. Rozsyła pojedyncze instrukcje do wszystkich swoich procków (GF100 32, GF104 48), i rozdziela im różne dane (dlatego to jest SIMD - single instruction, multiple data)).
Chyba, że mówisz o dual warp (który w większości przypadków jest single warp) to i tak masz wtedy w GF100 2x mniejsze warpy niż w GF110 (przyjmując teoretyczne 64procków per simd)
chyba nie do konca wiesz co piszesz, poczytaj, po pierwsze to nie jest simd, a po drugie kazda grupa 16 rdzeni wykonuje niezalezna instrukcje, co wiecej, inne grupy tez moga wykonac taka instrukcje, i caly mp moze wykonac 4 instrukcje w jednym cyklu, kazda na 16 innych rdzeniach bedacych jego czescia, na przyklad 3 instrukcje ALU kazda na 16 rdzeniach + jedna instrukcja load/store na grupie do tego przeznaczonej.
A jeżeli ma się taką kartę dla entuzjastów która do tego prowadzi w wyścigu wydajności przekłada się to też na prestiż słabszych modeli... które stają się jak Porsche Boxster, model 959
w segmencie entuzjastow skladasz maszyne do bicia rekordow w 3d marku - nie patrzac na to ze wentylatory wyja jak potepieniec, a calosc bierze tyle pradu co osiedle domkow, nie martwi Cie ze wokol stercza kable a polowe biurka zajmuje ci rozebrana lodówka której uzyjesz do chlodzenia cpu aby moc go jeszcze bardziej wykrecic- tu chodzi o wydajnosc bez zadnych kompromisow. Natomiast kompletujac zestaw high end do domu jestem gotow poswiecic te 5 klatek w crysisie kosztem np kultury pracy, nizszych temperatur, cichszego chlodzenia, nizszych rachunkow za prad. High end oprócz wydajnosci oznacza tez ogolna jakosc, czyli np komputer w ladnej, aluminiowej obudowie Lian Li, a nie czesci na pudelku po plycie glownej z sterczacymi zewszad kabelkami.
To dokladnie tak jak z samochodami - na maksa stuningowany lancer evo kosztuje tyle samo co powiedzmy bmw m5. Zapewne przyspiesza do setki o sekunde czy dwie szybciej od niego, czas okrazenia na torze tez ma lepszy - ale o to wlasnie chodzi, bo to samochod dla entuzjastow, ktorzy dla poprawienia przyspieszenia o 0,2 sekundy wywala z samochodu cala tylnia kanape, klimatyzacje, tapicerke i wszystko co sie da.... Natomiast high end to najwyzsza polka ale na zasadzie malutkich kompromisów w kazdej dziedzinie - a to znaczy ze chce miec super przyspieszenia, ale oczekuje tez komfortu i ciszy wewnatrz... nie chce rezygnowac ze skorzanej tapicerki i klimatyzacji a nade wszystko z uzywalnosci na codzien.
Nie czujesz tej roznicy?
The way it's meant to be played!
Zgadzam się, ale zapomniałeś o znaczku.
The way it's meant to be played!
Popieram
W holenderskim sklepie internetowym podano omyłkowo do wiadomości oficjalne ceny przedpremierowe nowych Radków, dokładniej Saphire:
mają wynieść 255 euro za model Radeon HD 6870 oraz 189 euro za Radeon HD 6850.
Po cenach widać, że będą w innym przedziale cenowym niż ich odpowiedniki w serii HD5k co może konkretnie zbić z tropu potencjalnych nowych użytkowników rozumujących logicznie:
- skoro HD5870 było potężne i mocne, to HD6870 będzie jeszcze potężniejsze, a tu ZONK...
Fakt, będą jeszcze serie 69xx, ale nie zmienia to faktu, że będzie nie małe zamieszanie na początku sprzedaży, czyli za około miesiąc...
Za tydzień będzie premiera 'papierowa'...
Coś Ci ten EOT nie wyszedł
Popieram
W holenderskim sklepie internetowym podano omyłkowo do wiadomości oficjalne ceny przedpremierowe nowych Radków, dokładniej Saphire:
mają wynieść 255 euro za model Radeon HD 6870 oraz 189 euro za Radeon HD 6850.
Po cenach widać, że będą w innym przedziale cenowym niż ich odpowiedniki w serii HD5k co może konkretnie zbić z tropu potencjalnych nowych użytkowników rozumujących logicznie:
- skoro HD5870 było potężne i mocne, to HD6870 będzie jeszcze potężniejsze, a tu ZONK...
Fakt, będą jeszcze serie 69xx, ale nie zmienia to faktu, że będzie nie małe zamieszanie na początku sprzedaży, czyli za około miesiąc...
Za tydzień będzie premiera 'papierowa'...
The way it's meant to be played!
WHO! WHO! WHO! WHO!
The way it's meant to be played!