Wykonywanie obliczeń na GPU
Ostatnio zmodyfikowano 2017-11-20 07:32
Rashmistrz Temat założony przez niniejszego użytkownika |
Wykonywanie obliczeń na GPU » 2014-09-29 19:51:31 |
|
DejaVu |
» 2014-09-29 21:41:50 Analizowałem jakiś czas temu tematykę związaną z wykorzystaniem karty graficznej do wykonywania obliczeń. Wniosek był ostatecznie jeden: szkoda na to prądu. Znacznie lepiej wykorzystać efektywnie wielordzeniowość CPU i zainwestować później w płytę główną i CPU, które będzie dawało dużą moc obliczeniową. Chociażby w taki procesor: http://www.komputronik.pl/product/197878/AMD_X8_FX_9590_4_7GHz_BOX.html4.7GHz*8 = 37,6GHz masz wówczas do dyspozycji i nie bawisz się w klepanie dodatkowego kodu dedykowanego specjalnie pod potrzeby karty graficznej, z której takiej mocy raczej nie wyciśniesz i jeszcze będziesz musiał się męczyć przy adaptacji wymyślanych algorytmów aby były one portowalne na GPU. |
|
1aam2am1 |
» 2014-09-29 23:29:43 GPU jest dobre do obliczeń rozproszonych (nie liniowych) wtedy jest najlepszym rozwiązaniem, nawet najlepsze procesory nie dorównują wtedy kartom graficznym np: NVIDIA GeForce GTX 680 posiada 1536 rdzeni CUDA. A jej częstotliwość bazowa to 1006 MHz. Jak pomnożymy to mamy jakieś 1546 GHz. To dużo więcej jednakże musielibyśmy wykorzystać je wszystkie dlatego najlepiej nadają się do obliczeń rozproszonych. |
|
DejaVu |
» 2014-09-30 01:23:29 Tworzenie złożonych algorytmów i tak jest upierdliwe na GPU. Pierwszy lepszy przykład to np. chęć użycia własnego vectora na każdym wątku (bądź innej struktury danych). Efekt: http://stackoverflow.com/questions/10375680/using-stdvector-in-cuda-device-code. Rozwiązania jakieś zaczynają się oczywiście pojawiać, które ułatwiają uzyskanie oczekiwanych efektów ale i tak na chwilę obecną moc obliczeniowa GPU nie jest równoważnym rozwiązaniem do CPU i nie opłaca się w domowym zaciszu walczyć z obliczeniami na GPU w przypadku skomplikowanych algorytmów. To jest oczywiście tylko moje zdanie, ale aplikacji wielowątkowych na swoim koncie mam co najmniej kilkanaście. Co więcej sam chciałem w pewnym momencie wykorzystać CUDA do zwiększenia wydajności aplikacji, ale okazało się, że: 1) kod trzeba by było pisać niemalże od zera; 2) struktury danych nie byłyby tak elastyczne jak te, z których korzysta się swobodnie na wątku uruchomionym na CPU; 3) te struktury danych trzeba by było oczywiście sobie naklepać; 4) kod istotnie utraciłby na czytelności; 5) dużo trudniej namierzałoby się błędy w kodzie i tym samym czas wytwarzania aplikacji znacznie by się wydłużył; 6) modyfikacje/rozbudowy algorytmu również wiązałyby się ze znacznie większym kombinowaniem. Gdyby ktoś miał potrzebę wykonywania stosunkowo prostych ale powtarzalnych obliczeń matematycznych, to wówczas jak najbardziej CUDA jest warte zachodu. Jeżeli musisz dodatkowo manipulować pamięcią w ramach jednego wątku, przesyłać nieregularne dane wejściowe i otrzymywać nieregularne dane wyjściowe (czytaj: dynamiczna struktura danych na wejściu i wyjściu), to CUDA niestety już nie jest taka fajna. |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2014-09-30 17:11:59 |
|
DejaVu |
» 2014-10-01 18:16:24 |
|
DejaVu |
» 2014-10-01 22:11:06 |
|
Rashmistrz Temat założony przez niniejszego użytkownika |
» 2014-10-03 07:44:29 |
|
« 1 » 2 3 |