2012-11-25 20 views
6

Gdy używamy CUDA profilera nvvp, istnieje kilka "napowietrzne" s skorelowane z instrukcją, na przykład:W CUDA profiler nvvp, co oznacza "Overhead współdzielonej pamięci globalnej"? Jak to oblicza?

  • Oddział Rozbieżność Overhead;
  • Współdzielenie pamięci/Współdzielenie pamięci współdzielonej; i
  • Lokalne/globalne zwielokrotnienie powtórzenia pamięci podręcznej.

Moje pytania są następujące:

  1. Co przyczyna (y) I te koszty
  2. jak są obliczane?
  3. Podobnie, w jaki sposób oblicza się globalną wydajność ładowania/składowania?

Załącznik: Znalazłem wszystkie formuły obliczające te koszty w "Podręczniku użytkownika Profesora CUDA" zapakowanym w zestaw narzędzi CUDA5.

Odpowiedz

2

Można znaleźć niektóre odpowiedzi na swoje pytanie tutaj:

Why does CUDA Profiler indicate replayed instructions: 82% != global replay + local replay + shared replay?

odtwarzane instrukcje (%) Daje to odsetek odtwarzane podczas wykonywania instrukcji jądra. Odtworzone instrukcje są różnicą między numerami instrukcji, które są faktycznie wydane przez sprzęt do liczby instrukcji, które są do wykonania przez jądro. Idealnie powinno być zero. To jest obliczony jako 100 * (instrukcje wydane - instrukcja wykonywana)/ instrukcji wydanej

powtórce Globalny pamięci (%) Procent odtwarzane instrukcje spowodowane zostały pamięć globalny dostęp. Jest ona obliczana jako 100 * (L1 Miss globalnego obciążenia)/instrukcje wydawane

Local powtórka pamięci (%) Odsetek odtwarzane instrukcje spowodowane ze względu na lokalny dostęp do pamięci. Jest ona obliczana jako 100 * (l1 lokalny obciążenie Panna + l1 lokalny Niewykorzystana szansa Store)/instrukcje wydane

wspólna bankowego konfliktu powtórka (%) Procent odtwarzane instrukcjami, które spowodowane wspólnymi konfliktów banku pamięci. To jest obliczony jako 100 * (l1 podzielił konflikt)/instrukcji wydanych

+1

Dzięki za odpowiedzi, Benc, mam zorientowali się „odtwarzane Instrukcje” i „Wspólna banku konflikt replay” procentów. Jednak biorąc pod uwagę formuły powtórzeń "Global/Local memory", nadal nie mogę zrozumieć, dlaczego globalne/lokalne pomyłki w pamięci podręcznej spowodują powtórzenia instrukcji. Gdy wydarzy się pamięć podręczna, wystarczy przejść do pamięci globalnej, aby pobrać potrzebne informacje, DLACZEGO POWTÓRZY? – troore

+1

Myślę, że możesz znaleźć odpowiedzi na swoje pytanie w [tych slajdach] (http://developer.download.nvidia.com/CUDA/training/bandwidthlimitedkernels_webinar.pdf).Operacje pamięci są wydawane na osnowy, tak jak każda inna instrukcja. Kiedy osnowa żąda następnych słów, słabe koalescumowanie pamięci doprowadzi do wielu błędów ładunku l1, powodując tym samym powtarzanie instrukcji. Zauważ, że nie jestem ekspertem od CUDA, więc moje zrozumienie może nie być poprawne :-) – BenC

+1

Ten [inny link] (http://www.freepatentsonline.com/8266383.html) może być tym, czego szukałeś, ale szczegóły techniczne wymagają prawdziwej motywacji. – BenC