GPGPU - CUDA i OpenCL - jakie są typowe zastosowania?

0

Chciałem zapytać jakie są typowe zastosowania dla obliczeń GPGPU? W jakich problemach, specjalizacjach, w jakich zastosowaniach głównie korzysta się z obliczeń na kartach graficznych?

Jakie problemy można łatwo zrównoleglić i wykorzystać karty do obliczeń GPGPU? Jakiej klasy problemy można obliczać na kartach grafiki?

Czytałem, że robi się sporo obliczeń w temacie "images manipulation", trochę też jest przykładów z analizą różnych multimediów (grafika, pliki dźwiękowe, video). Trochę też znalazłem info o "machine learning" na GPGPU.

Co jeszcze?

Przejrzałem stronę NVIDIA, wiki, gpgpu.org i podobne, trochę Googlowałem, ale nie znalazłem za bardzo takiego przeglądu zastosowań dla GPGPU.

Interesowałyby mnie teksty po polsku, ew. po angielsku.

0

Podstawowy warunek - zagadnienie musi być podzielne na niezależne "podproblemy". Świetnym przykładem są symulacje z mechaniki płynów czy kosmologii oparte o modele dyskretne (zbiór cząsteczek), można zajrzeć np. do Fluidix. Ruch cząsteczek zależy tylko od najbliższych sąsiadów, więc w dowolnej chwili czasu można całość podzielić na większe bloki i przypisać do rdzeni/wątków obliczanych równolegle.
Z tego samego powodu CUDA niezbyt się nadaje do algebry liniowej, gdzie trzeba rozwiązać N sprzężonych równań.
Przepraszam za być może niefachową terminologię, ale jestem z wątku "przebranżowieni" :D
Generalnie wszystko co nie jest continuum można od razu rozważać jako kandydata do zrównoleglenia.
Temat jest dość stary efekty można wykorzystać np. w animacji

0

Dzięki, to co napisałeś jest mi już znane (poza przykładem Fluidix-a).

GeForce-Radeon

0

Różne symulacje cząstek poruszających się w różnych "materiałach" np. promienie RTG przechodzące przez ludzkie ciało (MCML, MC-GPU). Sam też niedawno robiłem projekt na uczelni z optymalizacją pętli dzięki wykonywaniu różnych ścieżek równolegle na GPU.

0

Podstawowy warunek - zagadnienie musi być podzielne na niezależne "podproblemy".

Nie muszą być całkowicie niezależne. Wystarczy, że narzut na synchronizację między wątkami jest na tyle mały, żeby cały proces miał sens. Dobrym przykładem jest sortowanie liczb - można wyguglać nawet takie rzeczy jak "cuda quicksort", ale zwykle sortowanie na GPGPU to sortowanie pozycyjne.

Z tego samego powodu CUDA niezbyt się nadaje do algebry liniowej, gdzie trzeba rozwiązać N sprzężonych równań.

Guglanie "cuda blas" albo "opencl blas" daje jakieś wyniki, więc chyba się jednak da.

0
demoo napisał(a):

Różne symulacje cząstek poruszających się w różnych "materiałach" np. promienie RTG przechodzące przez ludzkie ciało (MCML, MC-GPU). Sam też niedawno robiłem projekt na uczelni z optymalizacją pętli dzięki wykonywaniu różnych ścieżek równolegle na GPU.

No tak, ale to są tematy nieco "kosmiczne", a szukam czegoś prostszego dla siebie co jednocześnie może się komuś przydać (w sensie pracy, nie wiem co w Polsce się liczy na kartach?).

Zastanawiałem się czy sortowanie ogromnych (tysiące liczb i więcej) liczb (większość metod opiera się na "dziel i zwyciężaj") dałoby się i jest sens przeprowadzić na kartach grafiki?

Jak wiadomo, jest to liczenie wieloetapowe i dochodzi się do wielu bardzo małych tablic, więc wysyłanie ich do pamięci na kartę i z powrotem pewnie zjadłoby wcześniej zaoszczędzony czas.

GeForce-Radeon

0
Wibowit napisał(a):

Podstawowy warunek - zagadnienie musi być podzielne na niezależne "podproblemy".

Nie muszą być całkowicie niezależne. Wystarczy, że narzut na synchronizację między wątkami jest na tyle mały, żeby cały proces miał sens. Dobrym przykładem jest sortowanie liczb - można wyguglać nawet takie rzeczy jak "cuda quicksort", ale zwykle sortowanie na GPGPU to sortowanie pozycyjne.

I jest odpowiedź na moje pytanie z przed minuty, nie doczytałem do końca.

GeForce-Radeon

1 użytkowników online, w tym zalogowanych: 0, gości: 1