Jeden z najbardziej ukryte funkcje, w ostatniej aktualizacji systemu Windows 10, to możliwość sprawdzenia, które aplikacje używają procesora graficznego (GPU). Jeśli kiedykolwiek otwierałeś Menedżera zadań, prawdopodobnie sprawdziłeś wykorzystanie procesora, aby zobaczyć, które aplikacje najbardziej obciążają procesor. Najnowsze aktualizacje dodały podobną funkcję, ale dla GPU GPU. Pomoże Ci to zrozumieć, jak intensywna jest Twoja oprogramowanie i gry na procesorze graficznym bez pobierania oprogramowania innych firm. Jest jeszcze jedna interesująca funkcja, która pomaga odciążyć procesor na GPU. Polecam poczytać jak wybrać.

Dlaczego nie mam GPU w Menedżerze zadań?

Niestety nie wszystkie karty graficzne będą w stanie dostarczyć systemowi Windows statystyki potrzebne do odczytu GPU. Dla pewności możesz szybko użyć narzędzia diagnostycznego DirectX do przetestowania tej technologii.

  1. Kliknij " Początek"a w wyszukiwaniu napisz dxdiag aby uruchomić narzędzie diagnostyczne DirectX.
  2. Przejdź do zakładki „ Ekran", bezpośrednio w kolumnie kierowcy"powinieneś mieć Model WDDM wersja większa niż 2.0, aby korzystać z wykresów GPU w menedżerze zadań.

Włącz wykres GPU w Menedżerze zadań

Aby zobaczyć użycie GPU dla każdej aplikacji, musisz otworzyć Menedżera zadań.

  • Naciśnij kombinację przycisków Ctrl + Shift + Esc aby otworzyć Menedżera zadań.
  • Kliknij kliknij prawym przyciskiem myszy kliknij w menedżerze zadań na puste pole " Nazwa" i sprawdź z menu rozwijanego GPU. Możesz również zauważyć Rdzeń GPU aby zobaczyć, które programy go używają.
  • Teraz w menedżerze zadań wykres GPU i rdzeń GPU są widoczne po prawej stronie.


Zobacz ogólną wydajność GPU

Możesz monitorować ogólne użycie GPU, aby monitorować i analizować pod dużym obciążeniem. W takim przypadku wszystko, czego potrzebujesz, możesz zobaczyć w „ Wydajność"Wybierając procesor graficzny.


Każdy element GPU jest podzielony na indywidualne wykresy, aby zapewnić jeszcze lepszy wgląd w sposób wykorzystania GPU. Jeśli chcesz zmienić wyświetlane wykresy, możesz kliknąć małą strzałkę obok tytułu każdego zadania. Ten ekran pokazuje również wersję i datę sterownika, co jest dobrą alternatywą dla korzystania z DXDiag lub Menedżera urządzeń.


Deweloper powinien nauczyć się efektywnie korzystać z procesora graficznego (GPU) urządzenia, aby aplikacja nie zwalniała i nie wykonywała niepotrzebnej pracy.

Dostosuj ustawienia renderowania GPU

Jeśli Twoja aplikacja działa wolno, aktualizacja niektórych lub wszystkich ramek odświeżania ekranu trwa dłużej niż 16 milisekund. Aby wizualnie zobaczyć aktualizacje ramek na ekranie, możesz włączyć specjalną opcję na urządzeniu (Renderowanie profili GPU).

Będziesz mógł szybko sprawdzić, ile czasu zajmuje renderowanie klatek. Przypomnę, że musisz zmieścić się w ciągu 16 milisekund.

Opcja jest dostępna na urządzeniach począwszy od Androida 4.1. Na urządzeniu musi być włączony tryb programisty. Na urządzeniach z wersją 4.2 i nowszą tryb jest domyślnie ukryty. Aby aktywować przejdź do Ustawienia | O telefonie i siedem razy kliknij linię Numer kompilacji.

Po aktywacji przejdź do Opcje programistyczne i znajdź punkt Dostosuj ustawienia renderowania GPU(Renderowanie profilu GPU), które powinno być włączone. W wyskakującym okienku wybierz opcję Na ekranie w kolumnach(Na ekranie w postaci pasków). W takim przypadku wykres zostanie wyświetlony nad uruchomioną aplikacją.

Możesz przetestować nie tylko swoją aplikację, ale także inne. Uruchom dowolną aplikację i zacznij z nią pracować. Podczas pracy na dole ekranu zobaczysz zaktualizowany wykres. Oś pozioma przedstawia upływ czasu. Oś pionowa pokazuje czas każdej klatki w milisekundach. Podczas interakcji z aplikacją na ekranie rysowane są pionowe paski od lewej do prawej, pokazujące wydajność klatek w czasie. Każda taka kolumna reprezentuje jedną ramkę do narysowania ekranu. Im wyższa wysokość paska, tym więcej czasu zajmuje renderowanie. Cienka zielona linia jest przewodnikiem i odpowiada 16 milisekundom na klatkę. Dlatego musisz dążyć do tego, aby podczas badania aplikacji wykres nie wyłamywał się z tej linii.

Rozważ powiększoną wersję wykresu.

Zielona linia odpowiada za 16 milisekund. Aby utrzymać się w zakresie 60 klatek na sekundę, każdy słupek wykresu musi być narysowany poniżej tej linii. W pewnym momencie pasek będzie za duży i będzie znacznie wyższy niż zielona linia. Oznacza to, że program jest zablokowany. Każdy pasek ma kolory niebieski, fioletowy (Lollipop i wyżej), czerwony i pomarańczowy.

Kolor niebieski odpowiada za czas poświęcony na tworzenie i aktualizację pogląd.

Fioletowa część reprezentuje czas potrzebny na przesłanie zasobów renderowania strumienia.

Kolor czerwony reprezentuje czas renderowania.

Kolor pomarańczowy pokazuje, jak długo procesor czekał na zakończenie pracy GPU. Jest źródłem problemów przy dużych wartościach.

Istnieją specjalne techniki zmniejszające obciążenie GPU.

Debuguj przerysowanie GPU

Inne ustawienie pozwala wiedzieć, jak często ten sam obszar ekranu jest przerysowywany (tj. wykonywana jest dodatkowa praca). Znowu idziemy do Opcje programistyczne i znajdź punkt Debuguj przerysowanie GPU(Debuguj GPU Overdraw), który powinien być włączony. W wyskakującym okienku wybierz opcję Pokaż strefy nakładania się(Pokaż obszary przerysowania). Nie bój się! Niektóre elementy na ekranie zmienią kolor.

Wróć do dowolnej aplikacji i obserwuj, jak działa. Kolor wskaże ci problematyczne obszary twojej aplikacji.

Jeśli kolor w aplikacji się nie zmienił, wszystko jest w porządku. Brak nakładania jednego koloru na drugi.

Kolor niebieski oznacza, że ​​jedna warstwa jest rysowana na wierzchu warstwy dolnej. Dobrze.

Kolor zielony - przerysowuje się dwukrotnie. Musimy pomyśleć o optymalizacji.

Kolor różowy - trzykrotnie przerysowany. Wszystko jest bardzo złe.

Kolor czerwony - wielokrotnie przerysowywany. Coś poszło nie tak.

Możesz samodzielnie przetestować swoją aplikację, aby znaleźć problematyczne obszary. Utwórz aktywność i umieść na niej komponent widok tekstu. Daj elementowi głównemu i etykiecie tekstowej trochę tła w atrybucie android:tło. Kończysz z następującym: najpierw zamalowałeś dolną warstwę ćwiczenia jednym kolorem. Następnie rysowana jest na nim nowa warstwa z widok tekstu. Przy okazji, właściwie widok tekstu tekst jest również rysowany.

W pewnym momencie nie da się uniknąć nałożenia kolorów. Ale wyobraź sobie, że ustawiasz tło listy w ten sam sposób widok listy, który zajmuje cały obszar działania. System wykona podwójną pracę, chociaż użytkownik nigdy nie zobaczy dolnej warstwy aktywności. A jeśli dodatkowo utworzysz własny znacznik dla każdego elementu listy z własnym tłem, skończysz z wyszukiwaniem.

Mała rada. Miejsce po metodzie setContentView() wywołanie metody, która usunie przerysowanie ekranu z kolorem motywu. Pomoże to usunąć jedną dodatkową kolorową nakładkę:

GetWindow().setBackgroundDrawable(null);

Dziś jest to szczególnie aktywnie dyskutowane i wielu użytkowników jest zainteresowanych tym, od czego zacząć wydobywać monety i jak to wszystko się dzieje. Popularność tej branży wywarła już wymierny wpływ na rynek GPU, a wielu od dawna kojarzy potężną kartę graficzną nie z wymagającymi grami, ale z farmami kryptograficznymi. W tym artykule porozmawiamy o tym, jak zorganizować cały ten proces od podstaw i rozpocząć wydobycie we własnym gospodarstwie, czego do tego użyć i dlaczego jest to niemożliwe.

Co to jest wydobywanie na karcie graficznej

Kopanie na karcie graficznej to proces wydobywania kryptowaluty za pomocą procesorów graficznych (GPU). Aby to zrobić, użyj potężnej karty graficznej w komputer domowy lub specjalnie zmontowana farma kilku urządzeń w jednym systemie. Jeśli zastanawiasz się, dlaczego w tym procesie wykorzystywane są procesory graficzne, odpowiedź jest dość prosta. Chodzi o to, że karty wideo są początkowo zaprojektowane do przetwarzania dużej ilości danych poprzez wykonywanie tego samego rodzaju operacji, jak w przypadku przetwarzania wideo. Ten sam obraz obserwujemy w kopaniu kryptowalut, ponieważ tutaj proces haszowania jest taki sam.

Do wydobycia używane są pełnoprawne dyskretne karty wideo. Notebooki lub chipy zintegrowane z procesorem nie są używane. W sieci pojawiają się również artykuły na temat kopania na zewnętrznej karcie graficznej, ale to również nie działa we wszystkich przypadkach i nie jest najlepszym rozwiązaniem.

Jakie karty wideo nadają się do wydobycia

Tak więc, jeśli chodzi o wybór karty graficznej, tutaj zwykłą praktyką jest zakup AMD rx 470, rx 480, rx 570, rx 580 lub Nvidia 1060, 1070, 1080 ti. Karty graficzne takie jak r9 280x, r9 290, 1050, 1060 są również odpowiednie, ale nie przyniosą dużych zysków.Wydobywanie na słabej karcie graficznej jak geforce gtx 460, gts 450, gtx 550ti na pewno nie przyniesie zysku. Jeśli mówimy o pamięci, lepiej wziąć z 2 GB. Nawet 1 GB może nie wystarczyć, nie mówiąc już o 512 MB. Jeśli mówimy o wydobywaniu na profesjonalnej karcie graficznej, to daje to to samo, co zwykłe, a nawet mniej. Biorąc pod uwagę koszt takiego VC jest to nieopłacalne, ale możesz kopać z ich pomocą, jeśli już je masz.

Warto również zauważyć, że wszystkie karty graficzne mogą uzyskać wzrost wydajności poprzez odblokowanie wartości, które ustalił producent. Ten proces nazywa się podkręcaniem. Nie jest to jednak bezpieczne, prowadzi do utraty gwarancji i karta może ulec uszkodzeniu, np. zaczynając pokazywać artefakty. Możesz podkręcać karty graficzne, ale musisz zapoznać się z materiałami na ten temat i postępować ostrożnie. Nie powinieneś próbować od razu ustawiać wszystkich wartości na maksimum, ale jeszcze lepiej jest znaleźć przykłady udanych ustawień podkręcania karty graficznej w Internecie.

Najpopularniejsze karty graficzne do wydobycia 2020

Poniżej znajduje się porównanie kart wideo. Tabela zawiera najpopularniejsze urządzenia i ich maksymalny pobór mocy. Muszę powiedzieć, że liczby te mogą się różnić w zależności od konkretnego modelu karty graficznej, jej producenta, używanej pamięci i niektórych innych cech. Nie ma sensu pisać o przestarzałych wskaźnikach, takich jak wydobywanie litecoin na karcie wideo, dlatego brane są pod uwagę tylko trzy najpopularniejsze algorytmy dla farm na kartach wideo.

karta graficzna Etasz ekwihasz Kryptowa noc Zużycie energii
AMD Radeon R9 280x 11 MH/s 290 godz./s 490 godz./s 230W
AMD Radeon RX 470 26 MH/s 260 godz./s 660 godz./s 120W
AMD Radeon RX 480 29,5 MH/s 290 godz./s 730 godz./s 135W
AMD Radeon RX 570 27,9 MH/s 260 godz./s 700 godz./s 120W
AMD Radeon RX 580 30,2 MH/s 290 godz./s 690 godz./s 135W
Nvidia GeForce GTX 750TI 0,5 MH/s 75 godz./s 250 godz./s 55W
Nvidia GeForce GTX 1050TI 13,9 MHz/s 180 godz./s 300 godz./s 75W
Nvidia GeForce GTX 1060 22,5 MH/s 270 godz./s 430 godz./s 90W
Nvidia GeForce GTX 1070 30 MH/s 430 godz./s 630 godz./s 120W
Nvidia GeForce GTX 1070TI 30,5 MH/s 470 godz./s 630 godz./s 135W
Nvidia GeForce GTX 1080 23,3 MH/s 550 godz./s 580 godz./s 140W
Nvidia GeForce GTX 1080TI 35 MH/s 685 godz./s 830 godz./s 190W

Czy można kopać na jednej karcie graficznej?

Jeśli nie masz ochoty budować pełnoprawnej farmy z wielu procesorów graficznych lub po prostu chcesz wypróbować ten proces na swoim komputerze domowym, możesz kopać za pomocą jednej karty graficznej. Nie ma różnic i generalnie ilość urządzeń w systemie nie jest istotna. Co więcej, możesz instalować urządzenia z różnymi chipami, a nawet z różni producenci. Wystarczy uruchomić równolegle dwa programy dla chipów różne firmy. Przypomnijmy raz jeszcze, że wydobycie na zintegrowanej karcie graficznej nie jest wykonywane.

Jakie kryptowaluty można wydobywać na kartach wideo

Możesz kopać dowolną kryptowalutę na GPU, ale należy rozumieć, że wydajność na różnych będzie się różnić na tej samej karcie. Starsze algorytmy są już słabo przystosowane do procesorów wideo i nie przyniosą żadnego zysku. Dzieje się tak za sprawą pojawiania się na rynku nowych urządzeń – tzw. Są znacznie bardziej wydajne i znacznie zwiększają złożoność sieci, ale ich koszt jest wysoki, sięgający tysięcy dolarów. Dlatego kopanie monet dla SHA-256 (Bitcoin) lub Scrypt (Litecoin, Dogecoin) w domu to zły pomysł w 2018 roku.

Oprócz LTC i DOGE, ASIC uniemożliwiły wydobywanie Bitcoin (BTC), Dash i innych walut. Gdzie najlepszy wybór staną się kryptowaluty korzystające z algorytmów chronionych przez ASIC. Na przykład za pomocą GPU będzie można wydobywać monety za pomocą algorytmów CryptoNight (Karbovanets, Monero, Electroneum, Bytecoin), Equihash (ZCash, Hush, Bitcoin Gold) i Ethash (Ethereum, Ethereum Classic). Lista jest daleka od kompletnej i ciągle pojawiają się nowe projekty oparte na tych algorytmach. Wśród nich znajdują się zarówno widelce popularniejszych monet, jak i zupełnie nowe rozwiązania. Od czasu do czasu pojawiają się nawet nowe algorytmy, które mają na celu rozwiązywanie określonych problemów i mogą korzystać z innego sprzętu. Poniżej porozmawiamy o tym, jak sprawdzić hashrate karty graficznej.

Czego potrzebujesz do wydobywania na karcie graficznej

Poniżej znajduje się lista tego, czego będziesz potrzebować, aby stworzyć farmę:

  • Same karty graficzne. Wybór konkretne modele zależy od Twojego budżetu lub tego, co już jest dostępne. Oczywiście stare urządzenia na AGP nie będą działać, ale możesz użyć dowolnej karty średniej lub najwyższej klasy z ostatnich lat. Powyżej możesz wrócić do tabeli wydajności karty graficznej, która pozwoli Ci dokonać odpowiedniego wyboru.
  • komputer, aby je zainstalować. Nie jest konieczne używanie topowego sprzętu i tworzenie farmy opartej na wysokowydajnych komponentach. Wystarczy jakiś stary AMD Athlon, kilka gigabajtów RAM-u i twardy dysk zainstalować system operacyjny i niezbędne programy. Również ważne płyta główna. Powinno wystarczyć na twoją farmę. Gniazda PCI. Istnieć wersje specjalne dla górników, które zawierają 6-8 slotów i w niektórych przypadkach bardziej opłaca się z nich korzystać niż zbierać kilka komputerów. Szczególną uwagę należy zwrócić tylko na zasilanie, ponieważ system będzie pracował pod dużym obciążeniem przez całą dobę. Konieczne jest zabranie zasilacza z rezerwą mocy i pożądane jest posiadanie certyfikatów 80 Plus. Możliwe jest również połączenie dwóch bloków w jeden za pomocą specjalnych przejściówek, ale takie rozwiązanie budzi kontrowersje w Internecie. Lepiej w ogóle nie używać etui. Do lepsze chłodzenie zaleca się wykonanie lub zakup specjalnego stojaka. Karty graficzne w tym przypadku są wyjmowane za pomocą specjalnych adapterów zwanych pionami. Możesz je kupić w wyspecjalizowanych sklepach lub na aliexpress.
  • Dobrze wentylowany, suchy obszar. Gospodarstwo warto umieścić w pomieszczeniu niemieszkalnym, a jeszcze lepiej w osobnym pomieszczeniu. Pozwoli to pozbyć się dyskomfortu, który pojawia się z powodu głośnej pracy systemów chłodzenia i odprowadzania ciepła. Jeśli nie jest to możliwe, powinieneś wybrać karty graficzne z możliwie najcichszym systemem chłodzenia. Możesz dowiedzieć się więcej na ten temat z recenzji w Internecie, na przykład na YouTube. Powinieneś także pomyśleć o cyrkulacji powietrza i wentylacji, aby utrzymać temperaturę na jak najniższym poziomie.
  • Program górniczy. Wydobywanie GPU odbywa się za pomocą specjalnego, który można znaleźć w Internecie. Dla producentów ATI Radeon a Nvidia używa innego oprogramowania. To samo dotyczy różnych algorytmów.
  • Serwis sprzętu. To bardzo ważny punkt, ponieważ nie wszyscy rozumieją, że farma górnicza wymaga stałej opieki. Użytkownik musi monitorować temperaturę, zmieniać pastę termiczną i oczyszczać CO z kurzu. Należy również pamiętać o środkach ostrożności i regularnie sprawdzać stan systemu.

Jak skonfigurować wydobycie na karcie graficznej od podstaw

W ta sekcja rozważymy cały proces wydobycia od wyboru waluty do wypłaty środków. Należy zauważyć, że cały ten proces może się nieco różnić dla różnych pul, programów i chipów.

Jak wybrać kartę graficzną do wydobycia

Zalecamy zapoznanie się z powyższą tabelą oraz sekcją dotyczącą obliczania potencjalnych zarobków. Pozwoli ci to obliczyć przybliżony dochód i zdecydować, na który sprzęt możesz sobie pozwolić więcej, a także poradzić sobie z okresem zwrotu inwestycji. Nie zapomnij o kompatybilności złączy zasilania karty graficznej i zasilacza. W przypadku zastosowania różnych, należy wcześniej zaopatrzyć się w odpowiednie adaptery. Wszystko to można łatwo kupić w chińskich sklepach internetowych za grosze lub u lokalnych sprzedawców za dodatkową opłatą.

Wybór kryptowaluty

Teraz ważne jest, aby zdecydować, jaka moneta Cię interesuje i jakie cele chcesz osiągnąć. Jeśli interesują Cię zarobki w czasie rzeczywistym, powinieneś wybrać waluty z największym zyskiem na ten moment i sprzedaj je natychmiast po otrzymaniu. Możesz także wydobywać najpopularniejsze monety i trzymać je, aż cena wzrośnie. Jest też rodzaj strategicznego podejścia, kiedy wybierasz mało znaną, ale obiecującą walutę w Twoim przekonaniu i inwestujesz w nią moc, mając nadzieję, że jej wartość w przyszłości znacząco wzrośnie.

Wybór puli wydobywczej

Mają też pewne różnice. Niektóre z nich wymagają rejestracji, podczas gdy inne potrzebują tylko Twojego adresu portfela, aby rozpocząć. Te pierwsze zwykle zatrzymują środki, które zarabiasz, aż osiągniesz minimalną kwotę wypłaty lub w oczekiwaniu na wypłatę w trybie ręcznym. Dobrym przykładem takiej puli jest Suprnova.cc. Oferuje wiele kryptowalut i do pracy w każdej z pul wystarczy zarejestrować się w serwisie tylko raz. Usługa jest łatwa w konfiguracji i jest odpowiednia dla początkujących.

Podobny uproszczony system oferuje strona internetowa Minergate. Cóż, jeśli nie chcesz się rejestrować na jakiejś stronie i przechowywać tam zarobione środki, to powinieneś wybrać jakąś pulę w oficjalnym temacie interesującej Cię monety na forum BitcoinTalk. Proste pule wymagają tylko podania adresu do gromadzenia kryptowalut, a w przyszłości, korzystając z adresu, możesz uzyskać statystyki wydobycia.

Utwórz portfel kryptowalut

Nie potrzebujesz tego przedmiotu, jeśli korzystasz z puli, która wymaga rejestracji i ma wbudowany portfel. Jeśli chcesz automatycznie otrzymywać płatności do swojego portfela, spróbuj poczytać o tworzeniu portfela w artykule o odpowiedniej monecie. Ten proces mogą się znacznie różnić dla różnych projektów.

Możesz też po prostu wskazać swój adres portfela na jednej z giełd, ale należy zauważyć, że nie wszystkie platformy giełdowe akceptują transakcje z pul. Najlepszą opcją byłoby utworzenie portfela bezpośrednio na komputerze, ale jeśli pracujesz z dużą liczbą walut, przechowywanie wszystkich łańcuchów bloków będzie niewygodne. W takim przypadku powinieneś poszukać niezawodnych portfeli online lub lekkich wersji, które nie wymagają pobierania całego łańcucha bloków.

Wybór i instalacja programu wydobywczego

Wybór programu do wydobycia krypty zależy od wybranej monety i jej algorytmu. Prawdopodobnie wszyscy twórcy takiego oprogramowania mają tematy na BitcoinTalks, gdzie można znaleźć linki do pobrania i informacje o tym, jak przebiega konfiguracja i uruchomienie. Prawie wszystkie te programy mają wersje zarówno dla systemu Windows, jak i Linux. Większość z tych górników jest bezpłatna, ale wykorzystują pewien procent czasu na połączenie z pulą programistów. Jest to rodzaj prowizji za korzystanie z oprogramowania. W niektórych przypadkach można go wyłączyć, ale prowadzi to do ograniczonej funkcjonalności.

Konfiguracja programu polega na określeniu puli wydobycia, adresu portfela lub loginu, hasła (jeśli istnieje) i innych opcji. Zaleca się np. ustawienie maksymalnego limitu temperatury, po osiągnięciu którego farma się wyłączy, aby nie uszkodzić kart graficznych. Regulowana prędkość wentylatora chłodzącego i nie tylko strojenie które raczej nie będą używane przez początkujących.

Jeśli nie wiesz, jakie oprogramowanie wybrać, zapoznaj się z naszym materiałem na ten temat lub przeczytaj instrukcje na stronie internetowej puli. Zwykle zawsze jest sekcja poświęcona na początek. Zawiera listę programów, których można używać i konfiguracje dla .nietoperz akta. Dzięki niemu możesz szybko określić ustawienia i rozpocząć kopanie na oddzielnej karcie graficznej. Możesz natychmiast utworzyć pliki wsadowe dla wszystkich walut, z którymi chcesz pracować, aby później wygodniej było przełączać się między nimi.

Rozpoczynamy kopanie i monitorujemy statystyki

Po odpaleniu .nietoperz pliku z ustawieniami, zobaczysz okno konsoli, w którym zostanie wyświetlony dziennik tego, co się dzieje. Można go również znaleźć w folderze z plikiem wykonywalnym. W konsoli możesz zobaczyć aktualny hashrate i temperaturę karty. Skróty klawiszowe zwykle pozwalają na wywołanie rzeczywistych danych.

Będziesz także mógł sprawdzić, czy urządzenie nie znajduje skrótów. W takim przypadku zostanie wyświetlone ostrzeżenie. Dzieje się tak, gdy coś jest nieprawidłowo skonfigurowane, wybrane jest niewłaściwe oprogramowanie do monety lub GPU nie działa poprawnie. Wielu górników wykorzystuje również fundusze na: zdalny dostęp do komputera PC w celu monitorowania pracy farmy, gdy nie ma ich tam, gdzie jest zainstalowana.

Wypłacamy kryptowalutę

Jeśli korzystasz z puli takich jak Suprnova, wszystkie środki są po prostu gromadzone na Twoim koncie i możesz je wypłacić w dowolnym momencie. Pozostałe pule najczęściej korzystają z systemu, gdy środki są automatycznie dopisywane do określonego portfela po otrzymaniu minimalnej kwoty wypłaty. Zwykle możesz dowiedzieć się, ile zarobiłeś na stronie internetowej puli. Wystarczy podać adres swojego portfela lub zalogować się na swoje konto osobiste.

Ile możesz zarobić?

Kwota, jaką możesz zarobić, zależy od sytuacji rynkowej i oczywiście całkowitego hashrate'u Twojej farmy. Ważne jest również, jaką strategię wybierzesz. Nie trzeba od razu sprzedawać wszystkiego, co wydobyto. Możesz na przykład poczekać na skok kursu wykopanej monety i uzyskać wielokrotnie większy zysk. Jednak wszystko nie jest takie jasne i po prostu nierealne jest przewidywanie dalszego rozwoju wydarzeń.

Zwrot kart wideo

Obliczenie zwrotu pomoże specjalne kalkulator online. W Internecie jest ich wiele, ale rozważymy ten proces na przykładzie usługi WhatToMine. Pozwala uzyskać aktualne dane o zyskach na podstawie danych z Twojego gospodarstwa. Wszystko, co musisz zrobić, to wybrać dostępne karty graficzne, a następnie dodać koszt energii elektrycznej w Twojej okolicy. Strona obliczy, ile możesz zarobić dziennie.

Należy rozumieć, że brany jest pod uwagę tylko aktualny stan rzeczy na rynku i sytuacja może się w każdej chwili zmienić. Stawka może spaść lub wzrosnąć, zmieni się trudność wydobycia lub pojawią się nowe projekty. Na przykład produkcja eteru może zostać zatrzymana z powodu możliwego przejścia sieci do . Jeśli wydobycie Ethereum ustanie, to farmy będą musiały gdzieś wysłać darmową energię, na przykład do wydobycia ZCash na GPU, co wpłynie na kurs tej monety. Na rynku istnieje wiele podobnych scenariuszy i ważne jest, aby zrozumieć, że obecny obraz może nie zostać zachowany przez cały okres zwrotu sprzętu.

Kiedyś miałem okazję porozmawiać na rynku komputerowym z dyrektorem technicznym jednej z wielu firm sprzedających laptopy. Ten „specjalista” próbował się spienić z ust, żeby dokładnie wyjaśnić, jakiej konfiguracji laptopa potrzebuję. Głównym przesłaniem jego monologu było to, że czasy jednostek centralnych (CPU) się skończyły, a teraz wszystkie aplikacje aktywnie wykorzystują obliczenia na procesorze graficznym (GPU), a zatem wydajność laptopa jest całkowicie zależna od grafiki procesor i nie można zwracać uwagi na procesor. Zdając sobie sprawę, że kłótnia i próba rozumowania z tym dyrektorem technicznym jest absolutnie bezcelowa, nie traciłem czasu na próżno i kupiłem laptopa, którego potrzebowałem w innym pawilonie. Uderzył mnie jednak sam fakt tak rażącej niekompetencji sprzedawcy. Byłoby zrozumiałe, gdyby próbował mnie oszukać jako kupującego. Zupełnie nie. Szczerze wierzył w to, co powiedział. Tak, najwyraźniej marketerzy z NVIDIA i AMD nie jedzą chleba na próżno, a mimo to udało im się zainspirować niektórych użytkowników ideą dominującej roli procesora graficznego we współczesnym komputerze.

Nie ulega wątpliwości, że w dzisiejszych czasach coraz popularniejsze stają się procesory graficzne (GPU). Nie umniejsza to jednak roli procesora centralnego. Co więcej, jeśli mówimy o zdecydowanej większości aplikacji użytkownika, to dziś ich wydajność zależy wyłącznie od wydajności procesora. Oznacza to, że zdecydowana większość aplikacji użytkownika nie korzysta z obliczeń GPU.

Ogólnie rzecz biorąc, obliczenia GPU są wykonywane głównie na wyspecjalizowanych systemach HPC do obliczeń naukowych. Ale aplikacje użytkownika korzystające z obliczeń GPU można policzyć na palcach. Jednocześnie należy od razu zauważyć, że określenie „obliczanie na GPU” w tym przypadku nie jest do końca poprawne i może wprowadzać w błąd. Faktem jest, że jeśli aplikacja korzysta z obliczeń GPU, wcale nie oznacza to, że procesor centralny jest bezczynny. Obliczanie na GPU nie wiąże się z przenoszeniem obciążenia z CPU na GPU. Z reguły procesor centralny pozostaje zajęty, a użycie procesora graficznego wraz z procesorem centralnym pozwala zwiększyć wydajność, czyli skrócić czas wykonania zadania. Co więcej, sam GPU działa tutaj jako rodzaj koprocesora dla procesora, ale w żadnym wypadku nie zastępuje go całkowicie.

Aby zrozumieć, dlaczego obliczenia na GPU nie są takim panaceum i dlaczego niesłuszne jest twierdzenie, że ich możliwości obliczeniowe przewyższają możliwości procesora, konieczne jest zrozumienie różnicy między procesorem centralnym a procesorem graficznym.

Różnice w architekturach GPU i CPU

Rdzenie procesora są zaprojektowane do wykonywania pojedynczego strumienia sekwencyjnych instrukcji z maksymalną wydajnością, podczas gdy procesor graficzny jest zaprojektowany do bardzo szybkiego wykonywania. duża liczba równoległe wątki instrukcji. To podstawowa różnica między procesorami graficznymi a centralnymi. Procesor to procesor ogólnego lub ogólnego przeznaczenia zoptymalizowany pod kątem wysokiej wydajności jednostrumieniowej, który przetwarza zarówno liczby całkowite, jak i liczby zmiennoprzecinkowe. W takim przypadku dostęp do pamięci z danymi i instrukcjami następuje głównie losowo.

Aby poprawić wydajność procesora, są one zaprojektowane tak, aby wykonywać równolegle jak najwięcej instrukcji. Na przykład w tym celu rdzenie procesorów wykorzystują blok wykonywania instrukcji poza kolejnością, co pozwala na zmianę kolejności instrukcji w kolejności, w jakiej są odbierane, co pozwala podnieść poziom równoległości w realizacji instrukcji na poziomie pojedynczego wątku. Niemniej jednak nadal nie pozwala to na równoległe wykonywanie dużej liczby instrukcji, a obciążenie związane z równoległymi instrukcjami wewnątrz rdzenia procesora okazuje się bardzo znaczące. Dlatego procesory ogólnego przeznaczenia nie mają bardzo dużej liczby jednostek wykonawczych.

GPU jest zaprojektowany zupełnie inaczej. Został pierwotnie zaprojektowany do wykonywania ogromne ilości równoległe strumienie poleceń. Co więcej, te strumienie poleceń są zrównoleglone od samego początku i po prostu nie ma narzutu na instrukcje równoległe w GPU. GPU jest przeznaczony do renderowania obrazu. Mówiąc prościej, na wejściu pobiera grupę wielokątów, wykonuje wszystkie niezbędne operacje, a na wyjściu wyprowadza piksele. Przetwarzanie wielokątów i pikseli jest niezależne, mogą być przetwarzane równolegle, niezależnie od siebie. Dlatego też, ze względu na z natury równoległą organizację pracy w GPU, stosuje się dużą liczbę jednostek wykonawczych, które są łatwe do załadowania, w przeciwieństwie do sekwencyjnego przepływu instrukcji dla CPU.

GPU i procesory różnią się również sposobem dostępu do pamięci. W GPU dostęp do pamięci jest łatwy do przewidzenia: jeśli z pamięci zostanie odczytany teksel tekstury, to po chwili przyjdzie czas na sąsiednie teksele. Podczas pisania dzieje się to samo: jeśli piksel zostanie zapisany do bufora ramki, to po kilku cyklach zostanie zapisany piksel znajdujący się obok niego. Dlatego GPU, w przeciwieństwie do CPU, po prostu nie potrzebuje dużej pamięci podręcznej, a tekstury wymagają zaledwie kilku kilobajtów. Inna jest też zasada pracy z pamięcią w GPU i CPU. Tak więc wszystkie nowoczesne procesory graficzne mają kilka kontrolerów pamięci, a sama pamięć graficzna jest szybsza, więc procesory graficzne mają znacznie więcej o większa przepustowość pamięci w porównaniu z procesorami ogólnego przeznaczenia, co jest również bardzo ważne w przypadku obliczeń równoległych, które działają z ogromnymi strumieniami danych.

W procesorach uniwersalnych b o Większość obszaru matrycy jest zajęta przez różne bufory poleceń i danych, bloki dekodujące, bloki przewidywania rozgałęzień sprzętowych, bloki zmiany kolejności poleceń i pamięć podręczną pierwszego, drugiego i trzeciego poziomu. Wszystkie te bloki sprzętowe są potrzebne do przyspieszenia wykonywania kilku strumieni instrukcji ze względu na ich równoległość na poziomie rdzenia procesora.

Same jednostki wykonawcze zajmują stosunkowo mało miejsca w uniwersalnym procesorze.

W GPU natomiast główny obszar zajmują liczne jednostki wykonawcze, co pozwala na jednoczesne przetwarzanie kilku tysięcy strumieni poleceń.

Można powiedzieć, że w przeciwieństwie do nowoczesnych procesorów procesory GPU są przeznaczone do obliczeń równoległych z dużą liczbą operacji arytmetycznych.

Możliwe jest wykorzystanie mocy obliczeniowej GPU do zadań niegraficznych, ale tylko wtedy, gdy rozwiązywany problem dopuszcza możliwość zrównoleglenia algorytmów do setek jednostek wykonawczych dostępnych w GPU. W szczególności obliczenia GPU pokazują doskonałe wyniki, gdy ta sama sekwencja operacje matematyczne stosowane do dużych ilości danych. W takim przypadku najlepsze wyniki uzyskuje się, gdy stosunek liczby instrukcji arytmetycznych do liczby dostępów do pamięci jest wystarczająco duży. Ta operacja nakłada mniejsze wymagania na kontrolę wykonywania i nie wymaga dużej pamięci podręcznej.

Istnieje wiele przykładów obliczeń naukowych, w których przewaga GPU nad CPU pod względem wydajności obliczeniowej jest niezaprzeczalna. Tak więc wiele aplikacji naukowych dotyczących modelowania molekularnego, dynamiki gazów, dynamiki płynów i innych rzeczy jest doskonale przystosowanych do obliczeń GPU.

Tak więc, jeśli algorytm rozwiązywania problemu można zrównoleglać na tysiące oddzielnych wątków, to wydajność rozwiązania takiego problemu za pomocą GPU może być wyższa niż rozwiązania go za pomocą tylko procesora ogólnego przeznaczenia. Jednak przejęcie i przeniesienie rozwiązania jakiegoś zadania z CPU na GPU nie jest takie proste, choćby dlatego, że CPU i GPU używają różnych poleceń. Oznacza to, że gdy program jest pisany dla rozwiązania na CPU, używany jest zestaw instrukcji x86 (lub zestaw instrukcji zgodny z konkretną architekturą procesora), ale dla GPU używane są zupełnie inne zestawy instrukcji, które ponownie biorą pod uwagę uwzględnić jego architekturę i możliwości. Współczesne tworzenie gier 3D wykorzystuje interfejsy API DirectX i OrenGL, aby umożliwić programistom pracę z shaderami i teksturami. Jednak używanie interfejsów API DirectX i OrenGL do obliczeń innych niż graficzne na GPU nie jest najlepszą opcją.

Aplikacje NVIDIA CUDA i AMD

Dlatego, gdy zaczęto podejmować pierwsze próby implementacji obliczeń niegraficznych na GPU (GPU General Purpose, GPGPU), powstał kompilator BrookGPU. Przed jego stworzeniem programiści musieli uzyskiwać dostęp do zasobów karty graficznej za pośrednictwem interfejsów graficznych OpenGL lub Direct3D, co znacznie komplikowało proces programowania, ponieważ wymagało określonej wiedzy – musieli poznać zasady pracy z obiektami 3D (shadery, tekstury itp.). ). Był to powód bardzo ograniczonego wykorzystania GPGPU w produktach programowych. BrookGPU stał się swego rodzaju „tłumaczem”. Te rozszerzenia strumieniowe do języka C ukryły API 3D przed programistami, a podczas korzystania z niego praktycznie zniknęła potrzeba znajomości programowania 3D. Moc obliczeniowa kart graficznych stała się dostępna dla programistów w postaci dodatkowego koprocesora do obliczeń równoległych. Kompilator BrookGPU przetworzył plik z kodem C i rozszerzeniami, budując kod połączony z biblioteką z obsługą DirectX lub OpenGL.

W dużej mierze dzięki BrookGPU, NVIDIA i ATI (obecnie AMD) zwróciły uwagę na pojawiające się technologie obliczeniowe ogólnego przeznaczenia na procesorach graficznych i zaczęły opracowywać własne implementacje, które zapewniają bezpośredni i bardziej przejrzysty dostęp do jednostek obliczeniowych akceleratorów 3D.

W rezultacie firma NVIDIA opracowała architekturę obliczeń równoległych CUDA (Compute Unified Device Architecture). Architektura CUDA umożliwia implementację obliczeń niegraficznych na procesorach graficznych NVIDIA.

Publiczna wersja beta pakietu CUDA SDK została wydana w lutym 2007 roku. API CUDA opiera się na uproszczonym dialekcie języka C. Architektura CUDA SDK pozwala programistom implementować algorytmy działające na procesorach graficznych NVIDIA i zawierać specjalne funkcje w kodzie C. Aby pomyślnie przetłumaczyć kod w tym języku, CUDA SDK zawiera własny kompilator wiersza poleceń nvcc firmy NVIDIA.

CUDA to wieloplatformowe oprogramowanie do takich system operacyjny jak Linux, Mac OS X i Windows.

Firma AMD (ATI) opracowała również własną wersję technologii GPGPU, wcześniej nazywanej ATI Stream, a obecnie AMD Accelerated Parallel Processing (APP). Aplikacja AMD jest oparta na otwartym standardzie branżowym OpenCL (Open Computing Language). Standard OpenCL zapewnia równoległość na poziomie instrukcji oraz na poziomie danych i jest implementacją techniki GPGPU. Jest to całkowicie otwarty standard i korzystanie z niego jest bezpłatne. Należy pamiętać, że AMD APP i NVIDIA CUDA nie są ze sobą kompatybilne, jednak Ostatnia wersja NVIDIA CUDA obsługuje również OpenCL.

Testowanie GPGPU w konwerterach wideo

Tak więc dowiedzieliśmy się, że technologia CUDA została zaprojektowana do implementacji GPGPU na procesorach graficznych NVIDIA i APP API na procesorach graficznych AMD. Jak już wspomniano, wykorzystanie obliczeń niegraficznych na GPU jest wskazane tylko wtedy, gdy rozwiązywane zadanie można zrównoleglać na wiele wątków. Jednak większość aplikacji użytkownika nie spełnia tego kryterium. Jednakże, jest kilka wyjątków. Na przykład większość nowoczesnych konwerterów wideo obsługuje możliwość korzystania z obliczeń na procesorach graficznych NVIDIA i AMD.

Aby dowiedzieć się, jak efektywnie obliczenia GPU są wykorzystywane w niestandardowych konwerterach wideo, wybraliśmy trzy popularne rozwiązania: Xilisoft Konwerter wideo Ultimate 7.7.2, Wondershare Video Converter Ultimate 6.0.3.2 i Movavi wideo Konwerter 10.2.1. Te konwertery obsługują użycie procesorów graficznych NVIDIA i AMD, a tę funkcję można wyłączyć w ustawieniach konwertera wideo, co pozwala ocenić wydajność korzystania z GPU.

Do konwersji wideo użyliśmy trzech różnych filmów.

Pierwszy film miał 3 minuty 35 sekund i rozmiar 1,05 GB. Został nagrany w formacie przechowywania danych (kontener) mkv i miał następujące cechy:

  • wideo:
    • format - wideo MPEG4 (H264),
    • rozdzielczość - 1920*um*1080,
    • tryb bitrate - Zmienny,
    • średni bitrate wideo - 42,1 Mb/s,
    • maksymalny bitrate wideo - 59,1 Mb/s,
    • liczba klatek na sekundę - 25 kl./s;
  • audio:
    • format - MPEG-1 Audio,
    • bitrate audio - 128 Kbps,
    • ilość kanałów - 2,

Drugi film trwał 4 minuty i 25 sekund i miał rozmiar 1,98 GB. Został nagrany w formacie przechowywania danych MPG (kontener) i miał następujące cechy:

  • wideo:
    • format - MPEG-PS (wideo MPEG2),
    • rozdzielczość - 1920*um*1080,
    • tryb bitrate — zmienna.
    • średni bitrate wideo - 62,5 Mb/s,
    • maksymalny bitrate wideo - 100 Mb/s,
    • liczba klatek na sekundę - 25 kl./s;
  • audio:
    • format - MPEG-1 Audio,
    • bitrate audio - 384 Kbps,
    • ilość kanałów - 2,

Trzeci film miał 3 minuty 47 sekund i rozmiar 197 MB. Został nagrany w formacie przechowywania danych (kontener) MOV i miał następujące cechy:

  • wideo:
    • format - wideo MPEG4 (H264),
    • rozdzielczość - 1920*um*1080,
    • tryb bitrate - Zmienny,
    • bitrate wideo - 7024 Kbps,
    • liczba klatek na sekundę - 25 kl./s;
  • audio:
    • format - AAC,
    • bitrate audio - 256 Kbps,
    • ilość kanałów - 2,
    • częstotliwość próbkowania - 48 kHz.

Wszystkie trzy filmy testowe zostały przekonwertowane za pomocą konwerterów wideo do formatu przechowywania danych MP4 (kodek H.264) do oglądania na tablet iPad 2. Rozdzielczość wyjściowego pliku wideo wynosiła 1280*um*720.

Zauważ, że nie używaliśmy dokładnie tych samych ustawień konwersji we wszystkich trzech konwerterach. Dlatego niepoprawne jest porównywanie wydajności konwerterów wideo według czasu konwersji. Na przykład w konwerterze wideo Xilisoft Video Converter Ultimate 7.7.2 do konwersji użyto ustawienia wstępnego iPada 2 - H.264 HD Video. To ustawienie wykorzystuje następujące ustawienia kodowanie:

  • kodek - MPEG4 (H.264);
  • rozdzielczość - 1280*um*720;
  • liczba klatek na sekundę - 29,97 kl./s;
  • szybkość transmisji wideo - 5210 Kb/s;
  • kodek audio - AAC;
  • szybkość transmisji dźwięku — 128 kb/s;
  • liczba kanałów - 2;
  • częstotliwość próbkowania - 48 kHz.

Wondershare Video Converter Ultimate 6.0.3.2 używał ustawienia wstępnego iPada 2 z następującymi dodatkowymi ustawieniami:

  • kodek - MPEG4 (H.264);
  • rozdzielczość - 1280*um*720;
  • liczba klatek na sekundę - 30 kl./s;
  • szybkość transmisji wideo - 5000 Kb / s;
  • kodek audio - AAC;
  • szybkość transmisji dźwięku — 128 kb/s;
  • liczba kanałów - 2;
  • częstotliwość próbkowania - 48 kHz.

Movavi Video Converter 10.2.1 używał ustawienia iPada (1280*um*720, H.264) (*.mp4) z następującymi dodatkowymi ustawieniami:

  • format wideo - H.264;
  • rozdzielczość - 1280*um*720;
  • liczba klatek na sekundę - 30 kl./s;
  • szybkość transmisji wideo — 2500 Kb/s;
  • kodek audio - AAC;
  • szybkość transmisji dźwięku — 128 kb/s;
  • liczba kanałów - 2;
  • częstotliwość próbkowania - 44,1 kHz.

Konwersja każdego źródła wideo została przeprowadzona pięć razy na każdym z konwerterów wideo, przy użyciu zarówno GPU, jak i tylko CPU. Po każdej konwersji komputer uruchamiał się ponownie.

W rezultacie każde wideo zostało przekonwertowane dziesięć razy w każdym konwerterze wideo. Aby zautomatyzować tę rutynową pracę, napisano specjalne narzędzie Z GUI, co pozwala w pełni zautomatyzować proces testowania.

Konfiguracja stanowiska testowego

Stanowisko badawcze miało następującą konfigurację:

  • procesor - Intel Core i7-3770K;
  • płyta główna - Gigabyte GA-Z77X-UD5H;
  • chipset płyta główna- Intel Z77 Express;
  • pamięć - DDR3-1600;
  • wielkość pamięci - 8 GB (dwa moduły GEIL 4 GB);
  • tryb pracy pamięci - dwukanałowy;
  • karta graficzna - NVIDIA GeForce GTX 660Ti (sterownik wideo 314.07);
  • dysk - Intel SSD 520 (240 GB).

Na stoisku zainstalowano salę operacyjną System Windows 7 Ultimate (64-bitowy).

Początkowo testowaliśmy procesor i wszystkie inne elementy systemu w normalnym działaniu. W tym samym czasie procesor Intel Core i7-3770K pracował z nominalną częstotliwością 3,5 GHz c włączony tryb turbodoładowanie (maksymalna częstotliwość procesor w trybie Turbo Boost to 3,9 GHz).

Następnie powtórzyliśmy proces testowania, ale podczas podkręcania procesora do stałej częstotliwości 4,5 GHz (bez korzystania z trybu Turbo Boost). Umożliwiło to ujawnienie zależności szybkości konwersji od częstotliwości procesora (CPU).

W kolejnym etapie testów wróciliśmy do standardowych ustawień procesora i powtórzyliśmy testy z innymi kartami graficznymi:

  • NVIDIA GeForce GTX 280 (sterownik 314.07);
  • NVIDIA GeForce GTX 460 (sterownik 314.07);
  • AMD Radeon HD6850 (sterownik 13.1).

W ten sposób konwersja wideo została przeprowadzona na czterech kartach wideo o różnych architekturach.

Starsza karta graficzna NVIDIA GeForce 660Ti jest oparta na procesorze graficznym o tej samej nazwie o kodzie oznaczenia GK104 (architektura Keplera), wyprodukowanym w technologii 28-nm. Ten procesor graficzny zawiera 3,54 miliarda tranzystorów i powierzchnię matrycy 294 mm2.

Przypomnijmy, że procesor graficzny GK104 zawiera cztery klastry przetwarzania grafiki (klastry przetwarzania grafiki, GPC). Klastry GPC są niezależnymi urządzeniami w obrębie procesora i mogą pracować jako oddzielne urządzenia, ponieważ posiadają wszystkie niezbędne zasoby: rasteryzatory, silniki geometrii i moduły tekstur.

Każdy taki klaster ma dwa multiprocesory strumieniowe (SMX), ale w procesorze GK104 w jednym z klastrów jeden multiprocesor jest zablokowany, więc w sumie jest siedem multiprocesorów SMX.

Każdy multiprocesor strumieniowy SMX zawiera 192 rdzenie obliczeniowe (CUDA Cores), więc procesor GK104 ma łącznie 1344 rdzenie CUDA. Ponadto każdy multiprocesor SMX zawiera 16 jednostek TMU, 32 jednostki funkcji specjalnych (SFU), 32 jednostki ładowania magazynu (LSU), silnik PolyMorph i wiele innych.

Karta graficzna GeForce GTX 460 jest oparta na procesorze graficznym o nazwie kodowej GF104 opartym na architekturze Fermi. Ten procesor jest wytwarzany przy użyciu technologii procesu 40 nm i zawiera około 1,95 miliarda tranzystorów.

GPU GF104 zawiera dwa klastry przetwarzania grafiki GPC. Każda ma cztery strumieniowe wieloprocesorowe SM, ale w procesorze GF104 w jednym z klastrów jeden wieloprocesorowy jest zablokowany, więc jest tylko siedem SM.

Każdy multiprocesor strumieniowy SM zawiera 48 strumieniowych rdzeni obliczeniowych (rdzeni CUDA), więc procesor GK104 ma łącznie 336 rdzeni CUDA. Ponadto każdy multiprocesor SM zawiera osiem jednostek teksturujących (TMU), osiem jednostek specjalnych funkcji (SFU), 16 jednostek magazynujących obciążenie (LSU), silnik PolyMorph i wiele innych.

Procesor graficzny GeForce GTX 280 należy do drugiej generacji zunifikowanej architektury GPU NVIDIA i bardzo różni się architekturą od Fermi i Keplera.

Procesor graficzny GeForce GTX 280 składa się z klastrów przetwarzania tekstur (TPC), które choć podobne, bardzo różnią się od klastrów przetwarzania grafiki Fermi i Kepler GPC. W sumie w procesorze GeForce GTX 280 jest dziesięć takich klastrów. Każdy klaster TPC obejmuje trzy moduły SM i osiem TMU. Każdy multiprocesor składa się z ośmiu procesorów strumieniowych (SP). Multiprocesory zawierają również bloki do próbkowania i filtrowania danych tekstur, które są wykorzystywane zarówno w grafice, jak i w niektórych zadaniach obliczeniowych.

Tak więc w jednym klastrze TPC znajdują się 24 procesory strumieniowe, a w GPU GeForce GTX 280 jest ich już 240.

Podsumowanie charakterystyk kart graficznych opartych na procesorach graficznych NVIDIA wykorzystywanych w testach przedstawiono w tabeli.

W powyższej tabeli nie ma karty graficznej AMD Radeon HD6850, co jest całkiem naturalne, ponieważ według Specyfikacja techniczna trudno porównać z kartami graficznymi NVIDIA. Dlatego rozważymy to osobno.

Procesor graficzny AMD Radeon HD6850 o nazwie kodowej Barts jest produkowany w procesie 40 nm i zawiera 1,7 miliarda tranzystorów.

Architektura procesora AMD Radeon HD6850 to zunifikowana architektura z szeregiem popularnych procesorów do strumieniowego przesyłania wielu rodzajów danych.

Procesor AMD Radeon HD6850 składa się z 12 rdzeni SIMD, z których każdy zawiera 16 superskalarnych procesorów strumieniowych i cztery jednostki teksturujące. Każdy superskalarny procesor strumieniowy zawiera pięć uniwersalnych procesorów strumieniowych. W sumie w GPU AMD Radeon HD6850 jest 12*um*16*um*5=960 uniwersalnych procesorów strumieniowych.

Częstotliwość GPU karty graficznej AMD Radeon HD6850 wynosi 775 MHz, a efektywna częstotliwość pamięci GDDR5 to 4000 MHz. Ilość pamięci to 1024 MB.

Wyniki testu

Przejdźmy więc do wyników testu. Zacznijmy od pierwszego testu, kiedy używana jest karta graficzna NVIDIA GeForce GTX 660Ti, a procesor Intel Core i7-3770K jest w trybie normalnym.

Na ryc. Rysunki 1-3 pokazują wyniki konwersji trzech filmów testowych z trzema konwerterami w trybach z GPU i bez niego.

Jak widać z wyników testów, efekt zastosowania GPU jest oczywisty. W przypadku Xilisoft Video Converter Ultimate 7.7.2, podczas korzystania z GPU, czas konwersji jest skrócony o 14%, 9% i 19% odpowiednio dla pierwszego, drugiego i trzeciego filmu.

W przypadku Wondershare Video Converter Ultimate 6.0.32 użycie GPU może skrócić czas konwersji o 10%, 13% i 23% odpowiednio dla pierwszego, drugiego i trzeciego filmu.

Ale Movavi Video Converter 10.2.1 najbardziej korzysta z zastosowania GPU. W przypadku pierwszego, drugiego i trzeciego filmu skrócenie czasu konwersji wynosi odpowiednio 64%, 81% i 41%.

Oczywiste jest, że zysk z używania GPU zależy zarówno od oryginalnego wideo, jak i od ustawień konwersji wideo, co w rzeczywistości pokazują nasze wyniki.

Zobaczmy teraz, jaki będzie zysk w czasie konwersji po przetaktowaniu procesora Intel Core i7-3770K do częstotliwości 4,5 GHz. Jeśli przyjmiemy, że w trybie normalnym wszystkie rdzenie procesora są ładowane podczas konwersji i pracują z częstotliwością 3,7 GHz w trybie Turbo Boost, to wzrost częstotliwości do 4,5 GHz odpowiada przetaktowaniu o 22%.

Na ryc. Na rysunkach 4-6 przedstawiono wyniki konwersji trzech filmów testowych podczas przetaktowywania procesora w trybach z procesorem graficznym i bez niego. W takim przypadku zastosowanie procesora graficznego pozwala uzyskać zysk w czasie konwersji.

W przypadku Xilisoft Video Converter Ultimate 7.7.2, podczas korzystania z GPU, czas konwersji jest skrócony o 15%, 9% i 20% odpowiednio dla pierwszego, drugiego i trzeciego filmu.

W przypadku Wondershare Video Converter Ultimate 6.0.32 użycie GPU może skrócić czas konwersji o 10%, 10% i 20% odpowiednio dla pierwszego, drugiego i trzeciego filmu.

W przypadku Movavi Video Converter 10.2.1 użycie GPU może skrócić czas konwersji odpowiednio o 59%, 81% i 40%.

Oczywiście interesujące jest, jak podkręcanie procesora może skrócić czas konwersji z GPU i bez niego.

Na ryc. Rysunki 7-9 pokazują wyniki porównania czasu konwersji wideo bez użycia GPU w normalnym trybie procesora oraz w trybie podkręconym. Ponieważ w tym przypadku konwersja jest realizowana tylko za pomocą CPU bez obliczeń GPU, oczywiste jest, że zwiększenie szybkości zegara procesora prowadzi do skrócenia czasu konwersji (wzrost szybkości konwersji). Równie oczywiste jest, że zmniejszenie szybkości konwersji powinno być w przybliżeniu takie samo dla wszystkich filmów testowych. Tak więc w przypadku konwertera wideo Xilisoft Video Converter Ultimate 7.7.2, gdy procesor jest podkręcony, czas konwersji jest skrócony o 9, 11 i 9% odpowiednio dla pierwszego, drugiego i trzeciego wideo. W przypadku Wondershare Video Converter Ultimate 6.0.32 czas konwersji jest skrócony o 9%, 9% i 10% odpowiednio dla pierwszego, drugiego i trzeciego filmu. Cóż, w przypadku konwertera wideo Movavi Video Converter 10.2.1 czas konwersji jest skrócony odpowiednio o 13, 12 i 12%.

Tak więc, gdy procesor jest przetaktowany o 20%, czas konwersji zostaje skrócony o około 10%.

Porównajmy czas konwersji wideo za pomocą GPU w normalnym trybie procesora i w trybie podkręcania (ryc. 10-12).

W przypadku konwertera wideo Xilisoft Video Converter Ultimate 7.7.2, podczas podkręcania procesora czas konwersji jest skrócony o 10, 10 i 9% odpowiednio dla pierwszego, drugiego i trzeciego wideo. W przypadku Wondershare Video Converter Ultimate 6.0.32 czas konwersji jest skrócony o 9%, 6% i 5% odpowiednio dla pierwszego, drugiego i trzeciego filmu. Cóż, w przypadku konwertera wideo Movavi Video Converter 10.2.1 czas konwersji jest skrócony odpowiednio o 0,2, 10 i 10%.

Jak widać, w przypadku konwerterów Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 skrócenie czasu konwersji podczas przetaktowywania procesora jest w przybliżeniu takie samo zarówno z procesorem graficznym, jak i bez niego, co jest logiczne, ponieważ te konwertery nie używaj bardzo wydajnych obliczeń GPU. Ale w przypadku Movavi Video Converter 10.2.1, który sprawnie wykorzystuje obliczenia na GPU, podkręcanie procesora w trybie obliczeń GPU ma niewielki wpływ na skrócenie czasu konwersji, co również jest zrozumiałe, ponieważ w tym przypadku główne obciążenie spada na GPU.

Zobaczmy teraz wyniki testu z różnymi kartami wideo.

Wydawałoby się, że im mocniejsza karta graficzna i tym więcej w GPU Rdzenie CUDA(lub uniwersalne procesory strumieniowe dla kart graficznych AMD), bardziej wydajna konwersja wideo powinna być przy użyciu GPU. Ale w praktyce to tak nie działa.

Jeśli chodzi o karty graficzne oparte na procesorach graficznych NVIDIA, sytuacja wygląda następująco. W przypadku korzystania z Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 czas konwersji praktycznie nie zależy od rodzaju używanej karty graficznej. To znaczy dla Karty graficzne NVIDIA GeForce GTX 660Ti, NVIDIA GeForce GTX 460 i NVIDIA GeForce GTX 280 w trybie obliczeń GPU, czas konwersji jest taki sam (ryc. 13-15).

Ryż. 1. Wyniki konwersji pierwszego
test wideo w trybie normalnym
praca procesora

karty graficzne procesora w trybie użycia GPU

Ryż. 14. Wyniki porównania czasu konwersji drugiego filmu

Ryż. 15. Wyniki porównania czasu konwersji trzeciego filmu
na różnych kartach graficznych w trybie użycia GPU

Można to wytłumaczyć jedynie tym, że algorytm obliczania GPU zaimplementowany w Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 jest po prostu nieefektywny i nie pozwala aktywnie korzystać ze wszystkich rdzenie graficzne. Nawiasem mówiąc, wyjaśnia to fakt, że dla tych konwerterów różnica w czasie konwersji w trybach GPU i non-GPU jest niewielka.

W Movavi Video Converter 10.2.1 sytuacja jest nieco inna. Jak pamiętamy, ten konwerter potrafi bardzo wydajnie korzystać z obliczeń GPU, dlatego w trybie GPU czas konwersji zależy od rodzaju używanej karty graficznej.

Ale z Karta graficzna AMD Radeon HD 6850 wszystko jest jak zwykle. Albo sterownik karty graficznej „krzywej”, albo algorytmy zaimplementowane w konwerterach wymagają poważnej poprawy, ale w przypadku obliczeń GPU wyniki albo się nie poprawiają, albo pogarszają.

Dokładniej sytuacja wygląda następująco. W przypadku Xilisoft Video Converter Ultimate 7.7.2, przy użyciu GPU do konwersji pierwszego testowego wideo, czas konwersji wzrasta o 43%, podczas konwersji drugiego wideo - o 66%.

Co więcej, Xilisoft Video Converter Ultimate 7.7.2 charakteryzuje się również niestabilnymi wynikami. Rozpiętość w czasie konwersji może sięgać 40%! Dlatego powtórzyliśmy wszystkie testy dziesięć razy i obliczyliśmy średni wynik.

Ale w przypadku Wondershare Video Converter Ultimate 6.0.32 i Movavi Video Converter 10.2.1, przy użyciu GPU do konwersji wszystkich trzech filmów, czas konwersji w ogóle się nie zmienia! Prawdopodobnie Wondershare Video Converter Ultimate 6.0.32 i Movavi Video Converter 10.2.1 albo nie używają technologii AMD APP podczas konwersji, albo sterownik wideo AMD jest po prostu „przekrzywiony”, co powoduje, że technologia AMD APP nie działa.

wnioski

Na podstawie przeprowadzonych testów można wyciągnąć następujące ważne wnioski. Nowoczesne konwertery wideo mogą rzeczywiście wykorzystywać technologię obliczeń GPU, która może zwiększyć szybkość konwersji. Nie oznacza to jednak wcale, że wszystkie obliczenia są całkowicie przenoszone na GPU, a procesor pozostaje bezczynny. Jak pokazują testy, podczas korzystania z technologii GPGPU procesor centralny pozostaje obciążony, co oznacza, że ​​zastosowanie wydajnych, wielordzeniowych procesorów centralnych w systemach używanych do konwersji wideo pozostaje istotne. Wyjątkiem od tej reguły jest technologia AMD APP na procesorach graficznych AMD. Na przykład przy korzystaniu z Xilisoft Video Converter Ultimate 7.7.2 z włączoną technologią AMD APP obciążenie procesora jest rzeczywiście zmniejszone, ale prowadzi to do tego, że czas konwersji nie zmniejsza się, a wręcz przeciwnie, wzrasta.

Ogólnie rzecz biorąc, jeśli mówimy o konwersji wideo z dodatkowe zastosowanie procesor graficzny, w celu rozwiązania tego problemu zaleca się używanie kart graficznych z procesorami graficznymi NVIDIA. Jak pokazuje praktyka, tylko w tym przypadku możliwe jest osiągnięcie wzrostu szybkości konwersji. A trzeba pamiętać, że rzeczywisty wzrost szybkości konwersji zależy od wielu czynników. Są to wejściowe i wyjściowe formaty wideo oraz oczywiście sam konwerter wideo. Xilisoft Video Converter Ultimate 7.7.2 i Wondershare Video Converter Ultimate 6.0.32 nie nadają się do tego zadania, ale konwerter i Movavi Video Converter 10.2.1 są w stanie bardzo wydajnie korzystać z procesorów graficznych NVIDIA.

Jeśli chodzi o karty graficzne oparte na procesorach graficznych AMD, nie należy ich w ogóle używać do zadań konwersji wideo. W najlepszym przypadku nie spowoduje to wzrostu szybkości konwersji, a w najgorszym można ją zmniejszyć.

Obliczenia na GPU

Technologia CUDA (Compute Unified Device Architecture) to architektura oprogramowania i sprzętu, która umożliwia przetwarzanie przy użyciu procesorów graficznych NVIDIA obsługujących technologię GPGPU (arbitralne przetwarzanie na kartach graficznych). Architektura CUDA po raz pierwszy pojawiła się na rynku wraz z wydaniem układu NVIDIA ósmej generacji - G80 i jest obecna we wszystkich kolejnych seriach układów graficznych, które są używane w rodzinach akceleratorów GeForce, ION, Quadro i Tesla.

CUDA SDK umożliwia programistom implementację, w specjalnym uproszczonym dialekcie języka programowania C, algorytmów, które mogą być uruchamiane na procesorach graficznych NVIDIA i zawierają specjalne funkcje w tekście programu C. CUDA daje programiście możliwość, według własnego uznania, organizowania dostępu do zestawu instrukcji akceleratora graficznego i zarządzania jego pamięcią, organizowania na nim złożonych obliczeń równoległych.

Fabuła

W 2003 roku Intel i AMD ścigały się wspólnie o najmocniejszy procesor. Z biegiem lat, w wyniku tego wyścigu, częstotliwość taktowania znacznie wzrosła, zwłaszcza po wydaniu Intela Pentium 4.

Po wzroście częstotliwości taktowania (w latach 2001-2003 częstotliwość taktowania Pentium 4 podwoiła się z 1,5 do 3 GHz), a użytkownicy musieli zadowolić się dziesiątymi częściami gigaherca, które producenci wprowadzali na rynek (od 2003 do 2005 częstotliwości wzrosły z 3 do 3,8 GHz).

Architektury zoptymalizowane pod kątem wysokich częstotliwości taktowania, takie jak Prescott, również zaczęły doświadczać trudności, nie tylko w produkcji. Producenci chipów stanęli przed wyzwaniami związanymi z pokonaniem praw fizyki. Niektórzy analitycy przewidywali nawet, że prawo Moore'a przestanie działać. Ale tak się nie stało. Pierwotne znaczenie prawa jest często błędnie przedstawiane, ale odnosi się ono do liczby tranzystorów na powierzchni rdzenia krzemowego. Przez długi czas wzrostowi liczby tranzystorów w CPU towarzyszył odpowiedni wzrost wydajności - co prowadziło do zniekształcenia znaczenia. Ale potem sytuacja się skomplikowała. Projektanci architektury procesora zbliżyli się do prawa redukcji wzmocnienia: liczba tranzystorów, które trzeba było dodać, aby uzyskać pożądany wzrost wydajności, stawała się coraz większa, prowadząc do ślepego zaułka.

Powód, dla którego producenci procesorów graficznych nie napotkali tego problemu, jest bardzo prosty: procesory są zaprojektowane tak, aby uzyskać najlepszą wydajność w strumieniu instrukcji, które przetwarzają różne dane (zarówno liczby całkowite, jak i liczby zmiennoprzecinkowe), wykonują losowy dostęp do pamięci itp. d. Do tej pory programiści starali się zapewnić większą równoległość instrukcji - to znaczy wykonywać równolegle jak najwięcej instrukcji. Tak więc na przykład w Pentium pojawiło się wykonywanie superskalarne, gdy w określonych warunkach możliwe było wykonanie dwóch instrukcji na zegar. Pentium Pro otrzymał wykonanie instrukcji poza kolejnością, co pozwoliło zoptymalizować wydajność jednostek obliczeniowych. Problem polega na tym, że równoległe wykonywanie sekwencyjnego strumienia instrukcji ma oczywiste ograniczenia, więc ślepe zwiększanie liczby jednostek obliczeniowych nie daje zysku, ponieważ przez większość czasu będą one nadal bezczynne.

Działanie GPU jest stosunkowo proste. Polega na wzięciu grupy wielokątów z jednej strony i wygenerowaniu grupy pikseli z drugiej. Wielokąty i piksele są od siebie niezależne, dzięki czemu można je przetwarzać równolegle. Tym samym w GPU można przeznaczyć dużą część kryształu na jednostki obliczeniowe, które w przeciwieństwie do CPU będą faktycznie wykorzystywane.

GPU różni się od CPU nie tylko tym. Dostęp do pamięci w GPU jest mocno sprzężony - jeśli odczytany zostanie teksel, to po kilku cyklach odczytany zostanie teksel sąsiedni; gdy piksel zostanie zapisany, sąsiedni zostanie zapisany po kilku cyklach. Inteligentnie organizując pamięć, możesz uzyskać wydajność zbliżoną do teoretycznej pasmo. Oznacza to, że GPU, w przeciwieństwie do CPU, nie wymaga ogromnej pamięci podręcznej, ponieważ jego rolą jest przyspieszenie operacji teksturowania. Wystarczy kilka kilobajtów zawierających kilka tekseli używanych w filtrach dwu- i trójliniowych.

Pierwsze obliczenia na GPU

Pierwsze próby takiej aplikacji ograniczały się do wykorzystania niektórych funkcji sprzętowych, takich jak rasteryzacja i buforowanie Z. Ale w obecnym stuleciu, wraz z pojawieniem się shaderów, zaczęli przyspieszać obliczanie macierzy. W 2003 roku SIGGRAPHowi przydzielono osobną sekcję do obliczeń na GPU i nazwano ją GPGPU (General-Purpose Computation na GPU) - uniwersalne przetwarzanie GPU.

Najbardziej znanym BrookGPU jest kompilator języka programowania Brook, zaprojektowany do wykonywania niegraficznych obliczeń na GPU. Przed jego pojawieniem się programiści wykorzystujący do obliczeń możliwości chipów wideo wybrali jeden z dwóch popularnych API: Direct3D lub OpenGL. To poważnie ograniczyło użycie GPU, ponieważ grafika 3D wykorzystuje shadery i tekstury, o których programiści równolegli nie muszą wiedzieć, używają wątków i rdzeni. Brook był w stanie ułatwić im zadanie. Te rozszerzenia przesyłania strumieniowego do języka C, opracowane na Uniwersytecie Stanforda, ukryły interfejs API 3D przed programistami i zaprezentowały układ wideo jako równoległy koprocesor. Kompilator przeanalizował plik .br z kodem C++ i rozszerzeniami, tworząc kod połączony z biblioteką obsługującą DirectX, OpenGL lub x86.

Pojawienie się Brooka wzbudziło zainteresowanie NVIDII i ATI, a dodatkowo otworzyło zupełnie nowy sektor - komputery równoległe oparte na chipach wideo.

Co więcej, niektórzy badacze z projektu Brook przenieśli się do zespołu programistów NVIDIA, aby wprowadzić strategię obliczeń równoległych sprzętowo-programowych, otwierając nowy udział w rynku. Główną zaletą tej inicjatywy NVIDIA było to, że programiści doskonale znają wszystkie możliwości swoich procesorów graficznych w najdrobniejszych szczegółach i nie ma potrzeby korzystania z graficznego API, a ze sprzętem można pracować bezpośrednio za pomocą sterownika. Efektem wysiłków tego zespołu jest NVIDIA CUDA.

Obszary zastosowania obliczeń równoległych na GPU

Gdy obliczenia są przenoszone na GPU, w wielu zadaniach przyspieszenie osiąga się 5-30 razy w porównaniu z szybkimi procesorami ogólnego przeznaczenia. Największe liczby (rzędu przyspieszenia 100x, a nawet więcej!) są osiągane na kodzie, który nie jest zbyt dobrze przystosowany do obliczeń z użyciem bloków SSE, ale jest całkiem wygodny dla GPU.

To tylko kilka przykładów przyspieszenia kodu syntetycznego na GPU w porównaniu z kodem wektorowym SSE na CPU (według NVIDIA):

Mikroskopia fluorescencyjna: 12x.

Dynamika molekularna (obliczona siła niezwiązana): 8-16x;

Elektrostatyka (bezpośrednie i wielopoziomowe sumowanie kulombowskie): 40-120x i 7x.

Tabela, którą NVIDIA pokazuje we wszystkich prezentacjach, która pokazuje szybkość procesorów graficznych w stosunku do procesorów.

Lista głównych zastosowań, w których wykorzystywane są obliczenia GPU: analiza i przetwarzanie obrazów i sygnałów, symulacja fizyki, matematyka obliczeniowa, biologia obliczeniowa, obliczenia finansowe, bazy danych, dynamika gazów i cieczy, kryptografia, radioterapia adaptacyjna, astronomia, przetwarzanie dźwięku, bioinformatyka, symulacje biologiczne, widzenie komputerowe, eksploracja danych, cyfrowe kino i telewizja, symulacje elektromagnetyczne, systemy geoinformacyjne zastosowania wojskowe, planowanie górnicze, dynamika molekularna, rezonans magnetyczny (MRI), sieci neuronowe, badania oceanograficzne, fizyka cząstek elementarnych, symulacja fałdowania białek, chemia kwantowa, ray tracing, wizualizacja, radar, symulacja zbiorników, sztuczna inteligencja, analiza danych satelitarnych, badania sejsmiczne, chirurgia, ultradźwięki, wideokonferencje.

Korzyści i ograniczenia CUDA

Z punktu widzenia programisty potok graficzny to zestaw etapów przetwarzania. Blok geometrii generuje trójkąty, a blok rasteryzacji generuje piksele wyświetlane na monitorze. Tradycyjny model programowania GPGPU wygląda następująco:

Aby przenieść obliczenia na GPU w ramach takiego modelu, potrzebne jest specjalne podejście. Nawet dodanie dwóch wektorów element po elemencie będzie wymagało narysowania kształtu na ekranie lub w buforze poza ekranem. Rysunek jest rasteryzowany, kolor każdego piksela jest obliczany zgodnie z danym programem (pixel shader). Program odczytuje dane wejściowe z tekstur dla każdego piksela, dodaje je i zapisuje w buforze wyjściowym. A wszystkie te liczne operacje są potrzebne do tego, co jest napisane w jednym operatorze w konwencjonalnym języku programowania!

Dlatego wykorzystanie GPGPU do obliczeń ogólnego przeznaczenia ma ograniczenie w postaci zbyt dużej złożoności, której mogą się nauczyć programiści. I jest wystarczająco dużo innych ograniczeń, ponieważ pixel shader to po prostu formuła zależności ostatecznego koloru piksela od jego współrzędnych, a pixel shader to język do pisania tych formuł ze składnią podobną do C. Wczesne metody GPGPU to sprytna sztuczka, która pozwala wykorzystać moc GPU, ale bez żadnej wygody. Tam dane są reprezentowane przez obrazy (tekstury), a algorytm jest reprezentowany przez proces rasteryzacji. W szczególności należy zwrócić uwagę na bardzo specyficzny model pamięci i wykonania.

Architektura sprzętowa i programowa NVIDIA do obliczeń na procesorach graficznych firmy NVIDIA różni się od poprzednich modeli GPGPU tym, że umożliwia pisanie programów dla procesorów graficznych w prawdziwym C ze standardową składnią, wskaźnikami i koniecznością posiadania minimum rozszerzeń, aby uzyskać dostęp do zasobów obliczeniowych układów wideo. CUDA nie zależy od graficznych interfejsów API i ma pewne funkcje zaprojektowane specjalnie do przetwarzania ogólnego przeznaczenia.

Przewaga CUDA nad tradycyjnym podejściem do obliczeń GPGPU

CUDA zapewnia dostęp do 16 KB pamięci współdzielonej na wieloprocesor, co może być wykorzystane do zorganizowania pamięci podręcznej o większej przepustowości niż pobieranie tekstur;

Wydajniejszy transfer danych między systemem a pamięcią wideo;

Nie ma potrzeby korzystania z graficznych interfejsów API z nadmiarowością i narzutem;

Liniowe adresowanie pamięci oraz gromadzenie i rozpraszanie, możliwość pisania na dowolne adresy;

Wsparcie sprzętowe dla operacji na liczbach całkowitych i bitach.

Główne ograniczenia CUDA:

Brak obsługi rekurencji dla funkcji wykonywalnych;

Minimalna szerokość bloku to 32 wątki;

Zamknięta architektura CUDA należąca do firmy NVIDIA.

Słabości programowania z poprzednimi metodami GPGPU polegają na tym, że metody te nie używają jednostek wykonawczych Vertex Shader w poprzednich architekturach niezunifikowanych, dane są przechowywane w teksturach i wyprowadzane do bufora poza ekranem, a algorytmy wieloprzebiegowe używają jednostek cieniowania pikseli. Ograniczenia GPGPU obejmują: niewystarczająco wydajne wykorzystanie możliwości sprzętowych, ograniczenia przepustowości pamięci, brak operacji rozproszonych (tylko gromadzenie), obowiązkowe użycie graficznego API.

Główne zalety CUDA nad poprzednimi metodami GPGPU wynikają z faktu, że architektura ta jest zaprojektowana tak, aby efektywnie wykorzystywać obliczenia nie graficzne na GPU i wykorzystuje język programowania C bez konieczności przenoszenia algorytmów do postaci wygodnej dla koncepcji grafiki rurociąg. Oferty CUDA nowy sposób Obliczenia na GPU, które nie wykorzystują graficznych interfejsów API i oferują losowy dostęp do pamięci (scatter lub collect). Taka architektura jest wolna od wad GPGPU i wykorzystuje wszystkie jednostki wykonawcze, a także rozszerza możliwości o matematykę liczb całkowitych i operacje przesunięcia bitowego.

CUDA otwiera niektóre funkcje sprzętowe niedostępne w graficznych interfejsach API, takie jak pamięć współdzielona. Jest to niewielka ilość pamięci (16 kilobajtów na wieloprocesor), do której mają dostęp bloki wątków. Umożliwia buforowanie najczęściej używanych danych i może zapewnić więcej wysoka prędkość, w porównaniu do korzystania z pobierania tekstur w tym zadaniu. To z kolei zmniejsza czułość przepustowości algorytmów równoległych w wielu aplikacjach. Na przykład jest przydatny do algebry liniowej, szybkiej transformacji Fouriera i filtrów przetwarzania obrazu.

Wygodniejszy dostęp do CUDA i pamięci. Kod programu w graficznym API wyprowadza dane w postaci 32 wartości zmiennoprzecinkowych o pojedynczej precyzji (wartości RGBA jednocześnie w ośmiu celach renderowania) w predefiniowanych obszarach, a CUDA obsługuje zapis rozproszony - nieograniczona liczba rekordów pod dowolnym adresem . Takie zalety umożliwiają wykonanie niektórych algorytmów na GPU, których nie można efektywnie zaimplementować metodami GPGPU opartymi na graficznym API.

Ponadto graficzne interfejsy API z konieczności przechowują dane w teksturach, co wymaga wcześniejszego upakowania dużych tablic w tekstury, co komplikuje algorytm i wymusza zastosowanie specjalnego adresowania. A CUDA umożliwia odczyt danych pod dowolnym adresem. jeszcze jeden przewaga CUDA to zoptymalizowana wymiana danych między CPU i GPU. A dla programistów, którzy chcą uzyskać dostęp do niskiego poziomu (na przykład podczas pisania innego języka programowania), CUDA oferuje możliwość programowania w języku asemblera niskiego poziomu.

Wady CUDA

Jedną z niewielu wad CUDA jest jej słaba przenośność. Ta architektura działa tylko na układach wideo tej firmy, a nie na wszystkich, ale począwszy od serii GeForce 8 i 9 oraz odpowiadających im Quadro, ION i Tesla. NVIDIA podaje liczbę 90 milionów chipów wideo zgodnych z CUDA.

Alternatywy dla CUDA

Ramy do pisania programy komputerowe związane z przetwarzaniem równoległym na różnych procesorach graficznych i centralnych. Framework OpenCL zawiera język programowania oparty na standardzie C99 oraz interfejs programowania aplikacji (API). OpenCL zapewnia równoległość na poziomie instrukcji i danych oraz jest implementacją techniki GPGPU. OpenCL to całkowicie otwarty standard i nie ma żadnych opłat licencyjnych za korzystanie z niego.

Celem OpenCL jest uzupełnienie OpenGL i OpenAL, które są otwartymi standardami branżowymi dla 3D Grafika komputerowa i dźwięk, wykorzystując możliwości GPU. OpenCL jest rozwijany i utrzymywany przez Khronos Group, konsorcjum non-profit, które obejmuje wiele dużych firm, w tym Apple, AMD, Intel, nVidia, Sun Microsystems, Sony Computer Entertainment i inne.

CAL/IL (warstwa abstrakcji obliczeniowej/język pośredni)

Technologia ATI Stream to zestaw sprzętu i technologie oprogramowania, które pozwalają na wykorzystanie grafiki Procesory AMD, razem z jednostka centralna, aby przyspieszyć wiele aplikacji (nie tylko grafiki).

Aplikacje dla ATI Stream to aplikacje wymagające obliczeniowo, takie jak analiza finansowa lub przetwarzanie danych sejsmicznych. Stosowanie procesor strumieniowy umożliwiło 55-krotne zwiększenie szybkości niektórych obliczeń finansowych w porównaniu do rozwiązania tego samego problemu przy użyciu tylko centralnego procesora.

NVIDIA nie uważa technologii ATI Stream za bardzo silnego konkurenta. CUDA i Stream to dwie różne technologie, które są na różnych poziomach rozwoju. Programowanie produktów ATI jest znacznie trudniejsze - ich język przypomina bardziej asembler. Z drugiej strony CUDA C jest językiem znacznie wyższym. Pisanie na nim jest wygodniejsze i łatwiejsze. Dla dużych firm deweloperskich jest to bardzo ważne. Jeśli mówimy o wydajności, to widzimy, że jej szczytowa wartość w produktach ATI jest wyższa niż w rozwiązaniach NVIDIA. Ale znowu wszystko sprowadza się do tego, jak uzyskać tę moc.

DirectX11 (DirectCompute)

Interfejs programowania aplikacji, który jest częścią DirectX, zestawu interfejsów API firmy Microsoft, który został zaprojektowany do działania na komputerach zgodnych z IBM PC z systemami operacyjnymi z rodziny Microsoft Windows. DirectCompute jest przeznaczony do wykonywania obliczeń ogólnego przeznaczenia na procesorach graficznych, będąc implementacją koncepcji GPGPU. DirectCompute został pierwotnie opublikowany jako część DirectX 11, ale później został również udostępniony dla DirectX 10 i DirectX 10.1.

NVDIA CUDA w rosyjskim środowisku naukowym.

Od grudnia 2009 r. model programowania CUDA jest wykładana na 269 uniwersytetach na całym świecie. W Rosji kursy szkoleniowe na temat CUDA prowadzone są na uniwersytetach państwowych w Moskwie, Sankt Petersburgu, Kazaniu, Nowosybirsku i Permie, Międzynarodowym Uniwersytecie Natury Społeczeństwa i Człowieka „Dubna”, Połączonym Instytucie Badań Jądrowych, Moskiewskim Instytucie Elektroniki Technologia, Państwowy Uniwersytet Energetyczny w Iwanowie, BSTU. V.G. Shukhova, MSTU im. Bauman, RKhTU im. Mendelejew, Rosyjskie Centrum Badawcze „Instytut Kurczatowa”, Międzyregionalne Centrum Superkomputerowe Rosyjskiej Akademii Nauk, Instytut Technologiczny Taganrog (TTI SFedU).