Szukam przykładów algorytmów ogólnego zastosowania (czyli niezwiązanych z grafiką), dla których udowodniono, że działają o rząd wielkości szybciej na GPU niż na CPU. Wykorzystam te przykłady do kreatywnego myślenia o innych algorytmach, które mógłbym zaimplementować na GPU.
algorithms
performance
gpu
David
źródło
źródło
Odpowiedzi:
Od razu przychodzi mi na myśl kilka rzeczy:
Specjalny klient Bitcoin został napisany do korzystania z GPU do wykonywania skrótów kryptograficznych. Klient GPU zazwyczaj działa ponad 10 razy lepiej niż klient SMP CPU w typowym systemie 4-rdzeniowym. Bitcoin zależy od obliczenia dużej liczby niepowiązanych skrótów kryptograficznych, które można obliczać równolegle.
Projekt Folding @ Home oferuje klienta GPU do symulacji dynamiki molekularnej. Obliczenia te są wykonywane dla poszczególnych wiązań między atomami w różnych środowiskach i warunkach. Matematyka jest stosunkowo prosta, ale musi zostać obliczona miliardy razy dla każdej wiązań, aby zasymulować zaledwie nanosekundy aktywności.
Popularnym przykładem „zabawki” stosowanym przez zwolenników obliczeń na GPU jest problem n-body .
Wspólne dla tych rzeczy jest to, że są krępująco równoległe . Oznacza to, że problem można rozłożyć na niewielką liczbę dyskretnych obliczeń, które są wykonywane wiele razy na dużym zestawie danych. Jest to rodzaj obliczeń, w których GPU jest dobra.
Złożone obliczenia zależne od wyników poprzednich obliczeń nie są dobrze dostosowane do GPU.
źródło
Transkodowanie wideo i audio jest doskonałym przykładem. Jest to konwersja z jednego formatu pliku na inny. Przykładem jest MPEG-2 do H.264.
Uwaga Transkodowanie wideo nie jest związane z grafiką 3D. Nie można kodować wideo przy użyciu modułu do cieniowania wierzchołków i pikseli.
źródło
Wydobywanie bitcoinów za pomocą GPU stało się bardzo popularne.
Inna aplikacja dotyczy rynków finansowych do handlu w czasie rzeczywistym przy użyciu modeli takich jak Black-Scholes .
źródło
Dobra gra Conwaya jest dobrym przykładem akademickim.
źródło
Problemy wymagające dużej matematyki, które można wykonać równolegle. Tam, gdzie kiedyś pracowałem, chcieliśmy grać z procesorami graficznymi, aby dodawać / odejmować / mnożać 2 macierze w celu opracowania korelacji genetycznej. Po raz pierwszy usłyszałem o procesorach graficznych o tym, że były one wykorzystywane przez finansową firmę programistyczną do wykonania niektórych czynności związanych z modelowaniem (monte carlo i tak dalej). Przydałoby się to w łamaniu kodu.
Procesory graficzne prawdopodobnie nie pomogą w bardziej regularnych problemach programistycznych, w których wystarczy kilka rdzeni procesora, ponieważ większość zwykłych programów wymaga tylko kilku równoległych procesów. (może się różnić w przypadku pamięci / dysku, który jest znacznie szybszy niż obecnie)
źródło
Może jestem bardzo specyficzny dla matematyki / nauk ścisłych / inżynierii, ale przychodzi mi na myśl algorytm FFT.
Widziałem już ten test porównawczy FFT i chociaż ma on kilka lat, myślę, że był dobrze zrobiony takim, jakim jest: http://www.sharcnet.ca/~merz/CUDA_benchFFT
źródło