W ciągu ostatnich kilku tygodni jeden z naszych czytelników napotkał znanego termita w Directx 9 Profiler. Istnieje rzeczywista liczba czynników, które mogą powodować ten koszmar. Porozmawiajmy o tym teraz.
Zatwierdzono: Fortect
- 47 minut z przeczytaniem.
- Dokładne profilowanie jest trudne dla Direct3D
- Jak ciąg renderowania Direct3D tworzy dokładny profil
- Profilowanie zmian stanu Direct3D
- Podsumowanie
- Aplikacja
(API) odnosi się do. Jeśli zrobiłeś to, ale zostały przedstawione wyniki różniące się od sekwencji renderowania do sekwencji wyświetlania lub jeśli podejrzewasz, że eksperyment powinien nie pasować do rzeczywistych rozwiązań eksperymentalnych, poniższe wskazówki mogą pomóc Ci zrozumieć, dlaczego.
Podane informacje opierają się wyłącznie na założeniu, że posiadasz wiedzę i doświadczenie w następujących obszarach:
- Programowanie C / C++
- Programowanie API Direct3D
- Interfejs API pomiaru czasu
- Karta z pozdrowieniami wideo, a następnie oprogramowanie sterownika.
- Możliwe niewyjaśnione wyniki na zewnątrz doświadczenia związanego z profilowaniem.
Dokładne profilowanie Direct3D jest trudne
Profiler zgłasza czas potrzebny na każde wywołanie interfejsu API. Ostatecznie powinno to poważnie poprawić wydajność poprzez wykrywanie i usuwanie hotspotów. Istnieje kilka możliwych rodzajów profilowania, a także metod profilowania.
- Profiler selektywny jest bezczynny przez większość czasu i działa w regularnych odstępach czasu, aby próbkować (lub rejestrować pozytywnie) to, co zrobi. Pokazuje procent czasu spędzonego do mniej więcej każdego połączenia. Ogólnie rzecz biorąc, pobieranie próbek z profilera jest z pewnością bardzo inwazyjne dla usługi i ma minimalny wpływ na całe leczenie.
- Profiler narzędzi mierzy rzeczywistą funkcję wymaganą do wywołania completeia. Wymaga to zestawienia najważniejszych ograniczników start-stop w aplikacji. Toolkit jest zasadniczo profilerem, który jest stosunkowo bardziej inwazyjny, dzięki czemu aplikacja niż przykładowy profiler.
- Można również użyć niestandardowej techniki profilowania, która wykorzystuje czasomierz o wysokiej wydajności. Ten wynik jest prawdopodobnie bardzo podobny do wyniku narzędzia do profilowania witalności.
Typ poza profilerem alternatywnie używana metoda profilowania jest po prostu funkcją dyżurną, która generuje określone metryki.
Dzięki profilowaniu uzyskasz odpowiedzi, które pomogą Ci zaplanować pracę ulubionych klientów. Załóżmy na przykład, że wiesz, że wykonanie wywołania API wymaga średnio tysiąca cykli ściennego zegarka. Prawdopodobnie będziesz potrzebować pewnego poziomu wnioskowania o wydajności, na potrzeby studium przypadku:
- Istnieje ograniczenie dotyczące kilku procesorów GHz (który wydaje 50% czasu renderowania), które mogą wywołać ten interfejs API jeden konkretny milion razy na sekundę.
- Aby uzyskać 24 klatki na sekundę, nie można wielokrotnie wywoływać tego interfejsu API, aby uzyskać 33 000 razy na klatkę.
- Możesz przechowywać maksymalnie 3.3000 towarów na (zakładając, że odtworzenie ramki 10 tego interfejsu API wywołuje sekwencję wyświetlania dla każdego obiektu).
Innymi słowy, jeśli masz wystarczająco dużo minut, aby pomóc wywołać API, możesz zapytać sytuację o budżet na parametry, takie jak ta konkretna liczba prymitywów, które można zademonstrować interaktywnie. Jednak surowe liczby zwrócone przez modny profiler narzędzi nie mogą dokładnie odpowiedzieć na pytania dotyczące zarządzania opłatami. Dzieje się tak, ponieważ kierunek graficzny dostarcza złożonych problemów projektowych, takich jak liczba komponentów, które muszą zostać uruchomione, liczba procesorów, które dominują w przepływie pracy między komponentami, dodatkowo oprócz strategii optymalizacji zaimplementowanych w najważniejszym programie pilotażowym w czasie wykonywania, a zatem może sprawić, że rurociąg będzie bardziej wydajny w czasie projektowania.
Każde wywołanie interfejsu API przez wiele składników
Każde wywołanie musi pochodzić z wielu komponentów, aby możliwe było zastosowanie karty graficznej. Na przykład, racesLet’s spojrzenie na następującą sekwencję renderowania, która zawiera 2 wywołania do narysowania jednego trójkąta:
ekspresowa tekstura (...);DrawPrimitive (D3DPT_TRIANGLELIST, 0, 1);
Poniższy diagram koncepcyjny pokazuje różne ludzkie komponenty, przez które z kolei zawsze muszą przejść wywołania.
Formularz wniosku nazywa What Direct3d, manipuluje ludzką sceną, specjalizuje się w interakcji z użytkownikiem i uczy się, jak działa renderowanie. Cała ta praca jest określona w głównej sekwencji renderowania, która według ekspertów jest uruchamiana za pomocą wywołań API Direct3D. Kolekcje renderowania są po prostu niezależne od sprzętu (tj. wywołania interfejsu API telefonu są niezależne od sprzętu, ale znają główne funkcje obsługiwane przez główną kartę graficzną).
Środowisko wykonawcze konwertuje te wywołania na format danych niezależny od urządzenia. Środowisko wykonawcze obsługuje całą tę specjalną komunikację, która obejmuje aplikację i ten sterownik, więc zwykle aplikacja będzie działać na wielu kompatybilnych domowych korzyściach (w zależności od tego, które funkcje wymagają Xia). Gdy mierzone jest jedno wywołanie funkcji, profiler oprzyrządowania śledzi, ile czasu spędził nad zadaniem i jak długo funkcja wróciła. Ograniczeniem zastrzeżonego narzędzia do profilowania będzie to, że nie bierze on pod uwagę czasu potrzebnego kijowi golfowemu na wysłanie danych wyjściowych do karty graficznej, w porównaniu z czasem potrzebnym na usiąść wygodnie i obejrzeć karta graficzna. Innymi słowy, profiler oprzyrządowania zgodny ze standardami branżowymi, który pomoże Ci przypisać całą połączoną pracę do każdego wywołania funkcji.
Systemy sterowników pozwalają na wykorzystanie specyficznej, praktycznej wiedzy sprzętowej na temat karty Video Tarot, aby przekonwertować jakąś sekwencję poleceń niezależną od urządzenia w zupełnie nową sekwencję poleceń karty wideo . Sterowniki mogą również zoptymalizować kolejność, w jakiej polecenia są wysyłane do jakiejś karty graficznej, dzięki czemu renderowanie do zasobów karty graficznej jest naprawdę wydajne. Te korekty mogą publikować problemy z profilowaniem, ponieważ ilość nauczonej pracy prawie na pewno nie jest taka, na jaką wygląda (być może będziesz musiał w końcu znaleźć wszelkie poprawki, aby sobie z tym poradzić). Sterownik zwykle przejmuje kontrolę nad ich wykonaniem, zanim jego karta graficzna przetworzy jakiekolwiek ważne i ważne polecenia.
Karta graficzna zajmuje się najbardziej powiązaną resztą renderowania, łącząc dane z bazowego wierzchołka i buforów indeksów, tekstury, oferując informacje i elementy sterujące grafiką.
Każde wywołanie API Direct3D musi być wykonane przez obsługiwany element (środowisko wykonawcze, sterownik i większość kart graficznych), aby coś wyrenderować.
Komponenty są kontrolowane przez wiele procesorów
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Relacja między tymi komponentami jest jeszcze bardziej złożona, ponieważ ta aplikacja, środowisko wykonawcze i sterownik są prawie zawsze nadzorowane przez pojedynczy procesor, a konto karty graficznej jest kontrolowane przez pojedynczy procesor. Poniższy diagram przedstawia dwa typy procesorów: jednostkę centralną (CPU) i jednostkę przetwarzania grafiki (GPU).
Gadżety na komputery PC zawierają co najmniej jeden procesor, ale także jeden procesor graficzny, ale mogą również zawierać kilka, a nawet oba. Procesory zwykle znajdują się na płycie systemowej, podczas gdy procesory graficzne to albo płyta główna, albo całkiem karta graficzna. Szybkość procesora jest obliczana przez układ zegara ściennego na płycie głównej, podczas gdy wzmocnienie GPU jest określane przez mój indywidualny zegar rzeczywisty.
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.