2012-08-24 20 views
6

Niedawno inżynier elektryk ostrzegł mnie przed używaniem procesorów graficznych do obliczeń naukowych (na przykład, gdy dokładność ma znaczenie), ponieważ nie ma żadnych zabezpieczeń sprzętowych, takich jak procesor. Czy to prawda, a jeśli tak, jak powszechny/istotny jest problem w typowym sprzęcie?Dokładność GPU do obliczeń naukowych

+0

tak ... to prawda ... wszystkie te masywne klastry obliczeniowe zbudowane z Procesory graficzne są zupełnie bezużytecznymi i generalnie tylko generatorami liczb losowych. Cały sprzęt podlega przypadkowym błędom - pojedynczy foton o wysokiej energii emitowany przez zdarzenie rozpadu radioaktywnego w pakiecie ceramicznym może odwracać bity gdzieś wewnątrz procesora i całkowicie zabijać system ... lub może nie. –

+0

@MarcB Nie jestem teoretykiem spisku! Zobacz linki w mojej odpowiedzi poniżej dla zilustrowania przeszłych problemów. Zasadniczo chcę wiedzieć, czy zostały one odpowiednio poprawione na nowszym sprzęcie. –

Odpowiedz

9

W rzeczywistości, nowoczesne procesory graficzne doskonale nadają się do obliczeń naukowych, a wiele aplikacji HPC jest co najmniej częściowo przenoszonych na procesory graficzne, ze względu na wydajność i efektywność energetyczną. W przeciwieństwie do starszych procesorów graficznych, nowoczesne (na przykład architektury NVIDIA Fermi lub Kepler) zapewniają w pełni wystandaryzowane formaty IEEE-754, zarówno z pojedynczą, jak i podwójną precyzją, więc powinieneś być w stanie używać ich tak samo, jak w nowoczesnych procesorach .

3

Znalazłem kilka (starszych) artykułów na ten temat, ale wygląda na to, że problem został naprawiony w kartach o pojemności obliczeniowej> = 2,0.

Obecne procesory graficzne nie obsługują podwójnej precyzji obliczeń i ich pojedynczej precyzji wsparcie pomija istotnych aspektach zmiennoprzecinkowej standardzie IEEE-754 [1], tak jako poprawnie zaokrąglone wyniki i prawidłowe zamknięcie systemu liczbowego. ... ... Nasze wyniki pokazują, że istnieją poważne błędy w wynikach procesorów graficznych w niektórych przypadkach brzegowych, w dodatku do niewłaściwej obsługi zdenormalizowanych liczb .

  • Karl E. Hillesland Anselmo Lastra "graficzny zmiennoprzecinkową Paranoia". In Proc. GP2, sierpień 2004.

  • GPUBench Test: Precision.

  • Guillaume Da Graca i David Defour, "Implementacja operatorów pływak obrocie na grafice sprzętowych." In Proc. 7. Konferencja na liczbach rzeczywistych i komputery, lipiec 2006.

  • Wikipedia's CUDA limitations section

podwójnej precyzji (zdolność obliczeniowa CUDA 1.3 i wyżej) [14] odbiegają ze standardem IEEE 754: round-do -nearest-even jest jedynym obsługiwanym trybem zaokrąglania dla odwrotności, podziału i pierwiastka kwadratowego na . W jednostkach pojedyncza precyzja, denormały i sygnalizacyjne węzły NaN nie są obsługiwane; obsługiwane są tylko dwa tryby zaokrąglania IEEE (równe i od zera do nawet ), a są one określane według instrukcji, a nie w słowie kontrolnym; a dokładność podziału/pierwiastka kwadratowego jest nieznacznie niższa niż pojedyncza precyzja.

1

kalkulacja Właściwie najbardziej naukowe na ogół nie muszą być tak dokładne, ponieważ błędy pomiarowe i takie w dużej mierze przytłacza błędy wprowadzone przez zmiennoprzecinkowej zaokrąglenia (z wyjątkiem, być może w zdegenerowanych przypadkach, jak zsumowanie tablicę pływaków w zamówienie vs w odwrotnej kolejności, ale dostaniesz tego rodzaju problemy nawet w CPU i nic nie będzie ostrzegać, jak również, ponieważ działa tak, jak zostało to zaprojektowane).W informatyce ogólnej wystarczające jest przedstawienie wyniku w granicach określonego marginesu błędu i wykazanie, że margines błędu nie spowoduje problemów praktycznych.

Pływające punkty są szybkie, niekoniecznie dokładne, nawet w procesorze, dlatego uczono nas zawsze porównywania zmiennoprzecinkowych z epsilonem.

OTOH, obliczenia, które rzeczywiście wymagają precyzyjnych reguł zaokrąglania do ostatnich cyfr, takich jak teorie rachunkowe lub liczbowe, powinny uwzględniać arytmetykę ze stałym punktem (np. Moduł dziesiętny), która pozwala dokładnie określić zasady zaokrąglania.