6

Potrzebuję pomocy w zrozumieniu pojęcia rdzeni na GPU w porównaniu do rdzeni procesora w celu wykonywania równoległych obliczeń.GPU a procesor? Liczba rdzeni/wątków w GPU dla przyspieszenia obliczeń programu?

Jeśli chodzi o rdzenie w CPU, wydaje się dość prosta. Mam super-intensywną pętlę "for", która wykonuje cztery iteracje. Mam cztery rdzenie w moim procesorze Intel i5 2,26 GHz. Daję jedną pętlę do każdego rdzenia. Każda z czterech pętli jest niezależna od drugiej. Boom - Mam teraz cztery wątki utworzone i 100% użycia procesora (zamiast 25% użycia procesora z tylko jednym rdzeniem). Moja pętla "for" działa teraz prawie cztery razy szybciej niż byłaby, gdyby jej nie zrównoważyć. Przy okazji, dla pętli "for" korzystałem z automatycznej równoległości dostępnej w Microsoft Visual Studio 2012, jak w tym przykładzie online :(http://msdn.microsoft.com/en-us/library/hh872235.aspx).

W przeciwieństwie do tego, nie znam nawet liczby rdzeni w procesorze graficznym mojego laptopa (Intel Graphics Media Accelerator HD lub Intel HD Graphics, z 1696 MB pamięci współdzielonej), których mogę używać do obliczeń równoległych. Nie znam nawet prawidłowego sposobu porównywania GPU z procesorem. Kiedy widzę "12 @ 500MHz" obok opisu mojej karty graficznej, zastanawiam się, czy to oznacza, że ​​karta graficzna ma 12 rdzeni do równoległości, która może działać trochę jak 4 rdzenie w CPU, z wyjątkiem tego, że rdzenie GPU pracują z częstotliwością 500 MHz [powolne ] zamiast 2,26 GHz [szybko]? Czy użycie GPU jest porównywalne do użycia procesora w Menedżerze zadań Windows? Jestem zupełnym nowicjuszem próbującym używać biblioteki C++ w visual studio 2012, jeśli to robi jakąkolwiek różnicę. Kiedy piszę aktualne oprogramowanie GPU, kod równoległości wygląda tak :(http://msdn.microsoft.com/en-us/library/hh265137.aspx).

Tak, to proszę wypełnić niektóre luki lub błędy w mojej wiedzy lub pomóc mi porównać dwa? Nie potrzebuję super skomplikowanej odpowiedzi, coś tak prostego, jak "Nie można porównać jądra procesora z rdzeniem GPU z powodu pustki" lub "rdzeń GPU nie jest tak naprawdę rdzeniem jak rdzeń procesora" być bardzo docenionym.

+1

Jeśli masz zamiar podjąć wysiłek, aby downvote moje pytanie, przynajmniej zostawić zdanie wyjaśniające, dlaczego uważasz, że jest zły. To pytanie jest raczej otwarte, a Ty możesz zająć się nim z różnych stron. –

+1

Mam również świadomość, że moja karta graficzna, która była standardem w laptopie, jest kawałkiem gówna. Nie jest to "oddzielna karta graficzna", która może pracować z . W celu uzyskania tego pytania, udawaj, że jest to karta "legit", która działa dobrze przy wykonywaniu obliczeń programu. –

Odpowiedz

4

pierwsze, OS inicjować kolejne rdzenie tylko jeśli poprosić o nich w kodzie. Spróbuj użyć wątków OpenMP lub Win32, aby uzyskać równoległość w systemie i5.

drugie, taktowanie procesora jest więcej niż taktowanie GPU. Jeśli taktowanie procesora graficznego jest takie samo jak procesora, możesz go użyć jako kuchenki do gotowania. Rdzenie w GPU to coś więcej niż procesor. Istnieje różnica między nicią a rdzeniem.

trzecie, polecam Ci przeczytać specyfikacje i instrukcje odniesienia dla CPU i GPU. Ponadto nie zapomnij o PCI-e. Jest to wąskie gardło w implementacji Parallel Programming.

Mam nadzieję, że to wyjaśnia wątpliwości. Wszelkie dodatkowe pytania, proszę zapytać.

+0

Uwielbiam twoje referencje dla tego pytania – Harrisson