Czy instrukcje warunkowe są przerabiane przez procesorki strumieniowe? czy 'ich zarządce' - thread dispach procesor lub coś podobnego, lub nawet samo cpu (pytam bo nie wiem moge jedynie zgadywać?) wydawało mi się że to zadanie nie jest wykonywane na prostych jednostkach wykonawczych, podobnie jak przewidywanie skoków, pobrań wyprzedzających itd itp. i jest bardzo ograniczone lub wcale nie istnieje w gpu, a jest sprytnie ukryte przez kompilator który tak uklada kolejność że proste instrukcje są paczkami wysyłane do jednostek. (dlatego w tym wypadku nieważne ile jest jednostek ważne ile zarządców)
Dobrze napisany kod powinien tego unikać(instrukcji warunkowych) szczególnie jesli operuje się na gpu(chociaż w cpu również)..wiem że to jest możliwe napisać ten sam algorytm inaczej, bo sam na takie przypadki natrafiłem - sortowanie np. w algorytmie bwt jest kluczowe
Napewno quicksort na karcie graficznej musiałoby zmienić nazwe na veryslowsort - ciekawy motyw na magisterke.
Przerabianie branchów odbywa się w pełni na GPU. Biorąc przykładowy kod z mojego poprzedniego posta:
if (id_watku < 32)
{ kod1 }
else
{ kod2 }
Pierwszą instrukcją w tym kodzie jest instrukcja porównania i jest ona obliczana przez każdy SP. Wynikiem takiej operacji jest zapalenie lub niezapalenie flagi. Flaga jest oczywiście per wątek. Gdy instrukcja warunkowa w każdym z 64wątków zostanie przetworzona thread dispatcher to analizuje: tzn sprawdza czy wszystkie wątki mają taki sam stan flagi lub nie. Jeśli mają to dispacher wykonuje tylko kod na 'tak' albo na 'nie' w zaleznosci czy kazda flaga byla zapalona czy nie. Jeśli mają różny to dispatcher wykonuje zarówno 'tak' i 'nie' a każdy SP ma obowiązek sprawdzić czy aktualnie przetwarzana gałąź jest jego gałęzią. Jeśli tak wykonuje swoją instrukcje, jeśli nie zostaje uśpiony.
GPU nie ma predykcji skoków. Tu nie chodzi o szybki dostęp a o wysoką przepustowość. Po prostu do takiego jednego SIMD Engine wrzucasz np. 2 grupy po 64 wątki czyli razem 128 wątków. Dispatcher odpala pierwsze 64 wątki a gdy następuje próba dostępu do danych te 64wątki zostają odłożone na bok i dispatcher analizuje kolejne 64wątki. GPU jednak w tym czasie ściąga dane z pamięci dla tych pierwszych 64 wątków. Jak druga grupa będzie potrzebowac danych z pamięci disptacher weźmie pierwszą grupę, do której dane z pamięci zostały zaciągnięty w międzyczasie. W rzeczywistości 2 grupy to prawie zawsze za mało więc wrzuca się takich grup jeszcze więcej. Tak więc żeby optymalnie wykorzystać jeden SIMD Engine potrzebujesz kilkuset wątków mimo iż masz zaledwie 16 SP.
Wy jeszcze karmicie tego trolla ?? Nie karmcie Sulaco to pewnie będzie cicho i się znudzi. A najlepiej ignora.
Najlepiej oglądać na Pulsie(nie daje głowy) zawody dabljidablju-i(wwi?) czy coś w tym guście(wczoraj wieczorem leciało) kolesie z umiejętnościami kaskaderów udają że się na sobie wyżywają, watki obyczajowe(rywalizacja charakterów stworzonych postaci) również obecne, po kilku facetów w ringu i poza nim..to lepsze niż ukrywanie się za kartami graficznymi i konkurowanie jeden z drugim kto ma racje i czyja racja jest najmojsza.
Przecież można dyskutować o architekturze bez kibicowania, ot z boku, z czystej ciekawości i podziwu. Co innego gdyby ktoś z was pracował w jednej z firm i miał cząstke udziału w efekcie końcowym.
Ja podziwiam inżynierów Nvidii za to co stworzyli i podziwiam inżynierów ATi za to że potrafią kombinować jak stworzyć coś taniej i oszczędniej..podobnie jest w przypadku procesorów etc. A o gustach się nie dyskutuje, od dawna wole czerwone bo mi pasuje do samochodu ..nie na każdego pasują te same buty, dlatego nosimy każdy inne i luz.
Zażartość jest na ręke producentom, im wszystkim chodzi tylko o kase. A tekst tej notki 'Po wprowadzeniu nowych radeonów nikt nie będzie w stanie z nimi konkurować' przypmniał wczorajsze teksty z ringu gdzie koleś z grupy 'nexus' przechwalał się że jest najlepszy i nikt nie może mu dorównać.
Te zawody nie wiem czy bardziej śmieszne czy żałosne ale napewno nakręcają emocje jesli ktoś potrzebuje. Tylko gdzie to rozładować?
Wy jeszcze karmicie tego trolla ?? Nie karmcie Sulaco to pewnie będzie cicho i się znudzi. A najlepiej ignora.
Najlepiej oglądać na Pulsie(nie daje głowy) zawody dabljidablju-i(wwi?) czy coś w tym guście(wczoraj wieczorem leciało) kolesie z umiejętnościami kaskaderów udają że się na sobie wyżywają, watki obyczajowe(rywalizacja charakterów stworzonych postaci) również obecne, po kilku facetów w ringu i poza nim..to lepsze niż ukrywanie się za kartami graficznymi i konkurowanie jeden z drugim kto ma racje i czyja racja jest najmojsza.
Przecież można dyskutować o architekturze bez kibicowania, ot z boku, z czystej ciekawości i podziwu.
Podziwiam inżynierów Nvidii za to co stworzyli i podziwiam inżynierów ATi za to że potrafią kombinować jak stworzyć coś taniej i oszczędniej..podobnie jest w przypadku procesorów etc.
A o gustach się nie dyskutuje, ja wole czerwone bo mi pasuje do samochodu , zażartość jest na ręke producentom, im wszystkim chodzi tylko o kase. A tekst tej notki 'Po wprowadzeniu nowych radeonów nikt nie będzie w stanie z nimi konkurować' przypmniał wczorajsze teksty z ringu gdzie koleś z grupy 'nexus' przechwalał się że jest najlepszy i nikt nie może mu dorównać. Prawda jest taka że..nie na każdego pasują te same buty, dlatego nosimy każdy inne i luz.
Przecież można dyskutować o architekturze bez kibicowania, ot z boku, z czystej ciekawości i podziwu.
pewnie, ze mozna. tylko nie kazdy potrafi. a jak sie nie potrafi to jak to najlatwiej 'ukryc'? za epitetami, 'minusami' i innymi 'malo intelektualnie' rozwinietymi metodami.
Megabyte @ 2010.11.20 13:15
Raczej ekonomiści którzy siedzą nad programistami i mówią: taki macie deadline, takie macie fundusze.
Yaronimo, ja pod windę nie programuję, ale AVR, TI, Hitachi (renesas) i wiem jak czasem pociąga zrobienie czegoś w sposób 'ustaw pwm', 'odczytaj kolejne 10 próbek i uśrednij' itp. itd. Nie ma nic złego w upraszczaniu sobie życia... ale czasem zamiast zrobić efektywnie jakieś rzeczy to się nabiera złych nawyków, np. IF(bit=0) zamiast IF(!bit) albo wartość=wartość*2 zamiast przesunięcia (z drugiej strony niektóre proce nie mają przesunięcia i trzeba mnożyć). Tak samo niektóre konwersje formatów - często można zrobić dużo szybciej i prościej we wstawkach ASM niż to co daje kompiler na wyjściu.
Yaronimo, ja pod windę nie programuję, ale AVR, TI, Hitachi (renesas) i wiem jak czasem pociąga zrobienie czegoś w sposób 'ustaw pwm', 'odczytaj kolejne 10 próbek i uśrednij' itp. itd. Nie ma nic złego w upraszczaniu sobie życia... ale czasem zamiast zrobić efektywnie jakieś rzeczy to się nabiera złych nawyków, np. IF(bit=0) zamiast IF(!bit) albo wartość=wartość*2 zamiast przesunięcia (z drugiej strony niektóre proce nie mają przesunięcia i trzeba mnożyć). Tak samo niektóre konwersje formatów - często można zrobić dużo szybciej i prościej we wstawkach ASM niż to co daje kompiler na wyjściu.
Fakt, w niemałej ilości firm pisałem i piszę z rzeszą innych programistów i powiem, że w przypadku aplikacji biznesowych niestety wygląda to obecnie tak, że optymalizacji szuka się w przypadku gdy klientowi coś działa już naprawdę wolno (dzieje się tak np po 'spuchnięciu' bazy) a zwykle biorąc pod uwagę, że lepiej się pobijać przed deadlinem to w większości nowe rzeczy powstają przez dodanie większości kodu ze starszych modułów bądź Ctrl-C, Ctrl-V na źródłach i chorą w niektórych wręcz projektach redundancję kodu.
Z akademickimi optymalizacjami na ASD ma to mało wspólnego
@Promilus, Megabyte
Będąc programistą powiem, że... wina leży w większości po stronie programistów i naszej wygody (inni nazywają to lenistwem )
Bzdura - lenistwo takie samo jest u wszystkich, a problemy to fundusze i kadra (nie tylko jakość, ale też ilość). Nie jest tajemnicą, że więcej na software wydaje Intel i nVidia, niż chyba całe AMD w sumie (i obie firmy zatrudniają stosunkowo znane nazwiska, i większą ilość). Intel pisze całą masę oprogramowania... i nawet zatrudnia programistów, którzy pracują nad poprawą konkurencji (intel tworzy ICC, ale ma pracowników których zadaniem jest poprawa GCC) - intel tworzy całą masę oprogramowania przydatnego dla programistów (AMD oszczędza i nie tworzy samo za wiele, a jedynie modyfikuje istniejące - AMD Open64 to GCC, AMD CodeAnalyst to OProfile które powstało do profilowania jądra linuksa, ale się nadaje i do innych programów). Podobnie jest z nVidia vs AMD, z tym, że ostatnio częściowo poprawiło się AMD i tworzy przynajmniej narzędzia do OpenCL podobne do tych nVidii, ale często są to narzędzia jedynie na jeden system i odstające jednak od narzędzi nVidii, która poza tym, sterownikami, przykładami, robi masę innego oprogramowania, jak PhysX, Gelato, OptiX, SceniX, Cg, CompleX, Texture Tools, pluginy do PS, 3ds max, Maya... to wszystko nie bierze się z tego, że są mniej leniwi, a dlatego, że są większe fundusze na oprogramowanie (przez co większa kadra etc.) - w AMD po prostu jak jest coś do zrobienia z oszczędności pracuje nad tym mniej osób, a deadline mają podobny jakby to była np. 2x większa grupa (przez co nie wszystko uda się zrobić na czas, nie wszystko tak sprawnie i bezbłędnie będzie działać).
Ale to co piszesz jest tylko i wyłacznie pochodną tego, że najlepszym czynnikiem motywującym (chyba w każdej pracy, nie tylko programisty) są pieniążki
http://techreport.com/articles.x/19934/7
tak wiec potwierdza sie, to o czym zawsze bylo wiadomo - nie 'ilosc' swiadczy o wydajnosci ukladu, a jego sprawnosc
i 9800gtx+ ^^
Dobrze napisany kod powinien tego unikać(instrukcji warunkowych) szczególnie jesli operuje się na gpu(chociaż w cpu również)..wiem że to jest możliwe napisać ten sam algorytm inaczej, bo sam na takie przypadki natrafiłem - sortowanie np. w algorytmie bwt jest kluczowe
Napewno quicksort na karcie graficznej musiałoby zmienić nazwe na veryslowsort - ciekawy motyw na magisterke.
Przerabianie branchów odbywa się w pełni na GPU. Biorąc przykładowy kod z mojego poprzedniego posta:
if (id_watku < 32)
{ kod1 }
else
{ kod2 }
Pierwszą instrukcją w tym kodzie jest instrukcja porównania i jest ona obliczana przez każdy SP. Wynikiem takiej operacji jest zapalenie lub niezapalenie flagi. Flaga jest oczywiście per wątek. Gdy instrukcja warunkowa w każdym z 64wątków zostanie przetworzona thread dispatcher to analizuje: tzn sprawdza czy wszystkie wątki mają taki sam stan flagi lub nie. Jeśli mają to dispacher wykonuje tylko kod na 'tak' albo na 'nie' w zaleznosci czy kazda flaga byla zapalona czy nie. Jeśli mają różny to dispatcher wykonuje zarówno 'tak' i 'nie' a każdy SP ma obowiązek sprawdzić czy aktualnie przetwarzana gałąź jest jego gałęzią. Jeśli tak wykonuje swoją instrukcje, jeśli nie zostaje uśpiony.
GPU nie ma predykcji skoków. Tu nie chodzi o szybki dostęp a o wysoką przepustowość. Po prostu do takiego jednego SIMD Engine wrzucasz np. 2 grupy po 64 wątki czyli razem 128 wątków. Dispatcher odpala pierwsze 64 wątki a gdy następuje próba dostępu do danych te 64wątki zostają odłożone na bok i dispatcher analizuje kolejne 64wątki. GPU jednak w tym czasie ściąga dane z pamięci dla tych pierwszych 64 wątków. Jak druga grupa będzie potrzebowac danych z pamięci disptacher weźmie pierwszą grupę, do której dane z pamięci zostały zaciągnięty w międzyczasie. W rzeczywistości 2 grupy to prawie zawsze za mało więc wrzuca się takich grup jeszcze więcej. Tak więc żeby optymalnie wykorzystać jeden SIMD Engine potrzebujesz kilkuset wątków mimo iż masz zaledwie 16 SP.
i 9800gtx+ ^^
to tylko zle swiadczy o serii hd5 i hd6
dobrze wiesz o co chodzi. sprawnosc masz jak jest z czego, gorzej jak jest z czego, a tej sprawnosci ukladu nie osiagasz.
To nie trol jemu za to płacą
Najlepiej oglądać na Pulsie(nie daje głowy) zawody dabljidablju-i(wwi?) czy coś w tym guście(wczoraj wieczorem leciało) kolesie z umiejętnościami kaskaderów udają że się na sobie wyżywają, watki obyczajowe(rywalizacja charakterów stworzonych postaci) również obecne, po kilku facetów w ringu i poza nim..to lepsze niż ukrywanie się za kartami graficznymi i konkurowanie jeden z drugim kto ma racje i czyja racja jest najmojsza.
Przecież można dyskutować o architekturze bez kibicowania, ot z boku, z czystej ciekawości i podziwu. Co innego gdyby ktoś z was pracował w jednej z firm i miał cząstke udziału w efekcie końcowym.
Ja podziwiam inżynierów Nvidii za to co stworzyli i podziwiam inżynierów ATi za to że potrafią kombinować jak stworzyć coś taniej i oszczędniej..podobnie jest w przypadku procesorów etc. A o gustach się nie dyskutuje, od dawna wole czerwone bo mi pasuje do samochodu
Zażartość jest na ręke producentom, im wszystkim chodzi tylko o kase. A tekst tej notki 'Po wprowadzeniu nowych radeonów nikt nie będzie w stanie z nimi konkurować' przypmniał wczorajsze teksty z ringu gdzie koleś z grupy 'nexus' przechwalał się że jest najlepszy i nikt nie może mu dorównać.
Te zawody nie wiem czy bardziej śmieszne czy żałosne ale napewno nakręcają emocje jesli ktoś potrzebuje. Tylko gdzie to rozładować?
Najlepiej oglądać na Pulsie(nie daje głowy) zawody dabljidablju-i(wwi?) czy coś w tym guście(wczoraj wieczorem leciało) kolesie z umiejętnościami kaskaderów udają że się na sobie wyżywają, watki obyczajowe(rywalizacja charakterów stworzonych postaci) również obecne, po kilku facetów w ringu i poza nim..to lepsze niż ukrywanie się za kartami graficznymi i konkurowanie jeden z drugim kto ma racje i czyja racja jest najmojsza.
Przecież można dyskutować o architekturze bez kibicowania, ot z boku, z czystej ciekawości i podziwu.
Podziwiam inżynierów Nvidii za to co stworzyli i podziwiam inżynierów ATi za to że potrafią kombinować jak stworzyć coś taniej i oszczędniej..podobnie jest w przypadku procesorów etc.
A o gustach się nie dyskutuje, ja wole czerwone bo mi pasuje do samochodu
Ja wolę VIA, ale aktualnie ssie
Raczej ekonomiści którzy siedzą nad programistami i mówią: taki macie deadline, takie macie fundusze.
pewnie, ze mozna. tylko nie kazdy potrafi. a jak sie nie potrafi to jak to najlatwiej 'ukryc'? za epitetami, 'minusami' i innymi 'malo intelektualnie' rozwinietymi metodami.
np. caly rok siedza? slabe tlumaczenie.
Będąc programistą powiem, że... wina leży w większości po stronie programistów i naszej wygody (inni nazywają to lenistwem
Raczej ekonomiści którzy siedzą nad programistami i mówią: taki macie deadline, takie macie fundusze.
Jak znam życie i kilku programistów to jest raczej tak K**** jutro już deadline a nawet połowy roboty nie zrobiłem.
Fakt, w niemałej ilości firm pisałem i piszę z rzeszą innych programistów i powiem, że w przypadku aplikacji biznesowych niestety wygląda to obecnie tak, że optymalizacji szuka się w przypadku gdy klientowi coś działa już naprawdę wolno (dzieje się tak np po 'spuchnięciu' bazy) a zwykle biorąc pod uwagę, że lepiej się pobijać przed deadlinem to w większości nowe rzeczy powstają przez dodanie większości kodu ze starszych modułów bądź Ctrl-C, Ctrl-V na źródłach i chorą w niektórych wręcz projektach redundancję kodu.
Z akademickimi optymalizacjami na ASD ma to mało wspólnego
Będąc programistą powiem, że... wina leży w większości po stronie programistów i naszej wygody (inni nazywają to lenistwem
Bzdura - lenistwo takie samo jest u wszystkich, a problemy to fundusze i kadra (nie tylko jakość, ale też ilość). Nie jest tajemnicą, że więcej na software wydaje Intel i nVidia, niż chyba całe AMD w sumie (i obie firmy zatrudniają stosunkowo znane nazwiska, i większą ilość). Intel pisze całą masę oprogramowania... i nawet zatrudnia programistów, którzy pracują nad poprawą konkurencji (intel tworzy ICC, ale ma pracowników których zadaniem jest poprawa GCC) - intel tworzy całą masę oprogramowania przydatnego dla programistów (AMD oszczędza i nie tworzy samo za wiele, a jedynie modyfikuje istniejące - AMD Open64 to GCC, AMD CodeAnalyst to OProfile które powstało do profilowania jądra linuksa, ale się nadaje i do innych programów). Podobnie jest z nVidia vs AMD, z tym, że ostatnio częściowo poprawiło się AMD i tworzy przynajmniej narzędzia do OpenCL podobne do tych nVidii, ale często są to narzędzia jedynie na jeden system i odstające jednak od narzędzi nVidii, która poza tym, sterownikami, przykładami, robi masę innego oprogramowania, jak PhysX, Gelato, OptiX, SceniX, Cg, CompleX, Texture Tools, pluginy do PS, 3ds max, Maya... to wszystko nie bierze się z tego, że są mniej leniwi, a dlatego, że są większe fundusze na oprogramowanie (przez co większa kadra etc.) - w AMD po prostu jak jest coś do zrobienia z oszczędności pracuje nad tym mniej osób, a deadline mają podobny jakby to była np. 2x większa grupa (przez co nie wszystko uda się zrobić na czas, nie wszystko tak sprawnie i bezbłędnie będzie działać).
Ale to co piszesz jest tylko i wyłacznie pochodną tego, że najlepszym czynnikiem motywującym (chyba w każdej pracy, nie tylko programisty) są pieniążki