Skocz do zawartości
matszpk

Błąd sprzętowy w GPU radeonów (GCN)

Rekomendowane odpowiedzi

cześć. znalazłem błąd w GPU radeonów w obsłudzie pewnej instrukcji: S_SUB_I32. Szczegóły są podane w https://community.amd.com/thread/191288. Tam wsadziłem program, który sprawdza czy występuje taki błąd (jest wersja pod Windows, działa z poziomu linii poleceń).

Błąd został wykryty w Radeon HD 7850 (Pitcairn) i CapeVerde. Jestem ciekaw czy występuje w innych GPU (np.: Bonaire, Hawaii, Fiji, Tonga). Prosiłbym, żebyście uruchomili ten program i sprawdzili czy ten błąd występuje.

Plik z programem też jest w tym wątku

EDIT: Poprawione binaria dla windows. powinno już działać.

EDIT2: Program już czeka na reakcji użytkownika (dla użytkowników Windows).

radeonbug0_5.zip

Edytowane przez matszpk

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

a skąd pewność, że ten błąd wykonania instrukcji wynika z hardware ?

Działanie tej instrukcji nie wynika z ustawień. To instrukcja samego GPU (nie żaden AMDIL, inny IL, LLVMIR) w kodzie maszynowym, poza tym operuje na liczbach całkowitych. czy to shader czy OpenCL ma działać tak samo. GPU takie operacje wykonuje i on powinien wykonać instrukcję poprawnie. prosiłbym, żebyście spróbowali odpalic ten program, źródła są w tym samym pliku.

Edytowane przez matszpk

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

u mnie na radku 7870 "error code=0" zarówno na 64 jak i 32 bit ;)

hmm. pewnie jakiś błąd w programie... podaj co wypluwa program.

chyba, źle wykrywa OpenCL i urządzenia, ten cholerny AMDAPP, pod windows...

EDIT: Poprawione binarki. powinno już działać.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Odpal z linii poleceń. W programach 'Wiersz linii poleceń' lub Uruchom 'cmd.exe'. Za pomocą komendy 'cd' przejdź do katalogu z programem i odpal.


EDIT: Ok. teraz możesz odpalić z poziomu GUI. spróbuj.

Edytowane przez matszpk

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

cześć. znalazłem błąd w GPU radeonów w obsłudzie pewnej instrukcji: S_SUB_I32. Szczegóły są podane w https://community.amd.com/thread/191288. Tam wsadziłem program, który sprawdza czy występuje taki błąd (jest wersja pod Windows, działa z poziomu linii poleceń).

Błąd został wykryty w Radeon HD 7850 (Pitcairn) i CapeVerde. Jestem ciekaw czy występuje w innych GPU (np.: Bonaire, Hawaii, Fiji, Tonga). Prosiłbym, żebyście uruchomili ten program i sprawdzili czy ten błąd występuje.

Plik z programem też jest w tym wątku

EDIT: Poprawione binaria dla windows. powinno już działać.

EDIT2: Program już czeka na reakcji użytkownika (dla użytkowników Windows).

 

Na Fiji problem nie wystepuje.

 

Usage: bugcheck GPUDEVICEINDEX
Using GPU Device #0
List of devices:
Device #0, name: Fiji, AddressBits: 64
 
Device: Fiji, Driver version: 1800.11
Loading program binary: bugcheck-Fiji-64-1800.clo
Calling kernel:
 
sub_i32 #0: 10213 - 1256: value=8957, scc=0
    Expected value=8957, 64bit: 8957, expected scc=0
SUCCESS
 
sub_i32 #1: 13234 - 42221: value=-28987, scc=0
    Expected value=-28987, 64bit: -28987, expected scc=0
SUCCESS
 
sub_i32 #2: 6321 - -5343: value=11664, scc=0
    Expected value=11664, 64bit: 11664, expected scc=0
SUCCESS
 
sub_i32 #3: 2114067115 - -63823599: value=-2117076582, scc=1
    Expected value=-2117076582, 64bit: 2177890714, expected scc=1
SUCCESS
 
sub_i32 #4: -5343 - 6321: value=-11664, scc=0
    Expected value=-11664, 64bit: -11664, expected scc=0
SUCCESS
 
sub_i32 #5: -63823599 - 2114067115: value=2117076582, scc=1
    Expected value=2117076582, 64bit: -2177890714, expected scc=1
SUCCESS
 
sub_i32 #6: -10213 - -1256: value=-8957, scc=0
    Expected value=-8957, 64bit: -8957, expected scc=0
SUCCESS
 
sub_i32 #7: -13234 - -42221: value=28987, scc=0
    Expected value=28987, 64bit: 28987, expected scc=0
SUCCESS
 
Press ENTER

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

wielkie dzięki :). chciałem się tylko tego dowiedzieć, czy ten błąd występuje w następnych generacjach. czyli tylko GCN 1.0 spartaczone. dzięki.

Zajmujesz się ISA GCN z ciekawości, czy jest to część jakiegoś projektu? (:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Usage: bugcheck GPUDEVICEINDEX
Using GPU Device #0
List of devices:
Device #0, name: Pitcairn, AddressBits: 32

Device: Pitcairn, Driver version: 1800.11
Loading program binary: bugcheck-Pitcairn-32-1800.clo
Calling kernel:

sub_i32 #0: 10213 - 1256: value=8957, scc=0
    Expected value=8957, 64bit: 8957, expected scc=0
SUCCESS

sub_i32 #1: 13234 - 42221: value=-28987, scc=1
    Expected value=-28987, 64bit: -28987, expected scc=0
FAILED!! for sub_i32 scc #1: expected=0, result=1

sub_i32 #2: 6321 - -5343: value=11664, scc=0
    Expected value=11664, 64bit: 11664, expected scc=0
SUCCESS

sub_i32 #3: 2114067115 - -63823599: value=-2117076582, scc=0
    Expected value=-2117076582, 64bit: 2177890714, expected scc=1
FAILED!! for sub_i32 scc #3: expected=1, result=0

sub_i32 #4: -5343 - 6321: value=-11664, scc=0
    Expected value=-11664, 64bit: -11664, expected scc=0
SUCCESS

sub_i32 #5: -63823599 - 2114067115: value=2117076582, scc=0
    Expected value=2117076582, 64bit: -2177890714, expected scc=1
FAILED!! for sub_i32 scc #5: expected=1, result=0

sub_i32 #6: -10213 - -1256: value=-8957, scc=0
    Expected value=-8957, 64bit: -8957, expected scc=0
SUCCESS

sub_i32 #7: -13234 - -42221: value=28987, scc=1
    Expected value=28987, 64bit: 28987, expected scc=0
FAILED!! for sub_i32 scc #7: expected=0, result=1

Press ENTER

Aktualnie testowane R7 265.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Usage: bugcheck GPUDEVICEINDEX
Using GPU Device #0
List of devices:
Device #0, name: Tahiti, AddressBits: 32

Device: Tahiti, Driver version: 1800.11
Loading program binary: bugcheck-Tahiti-32-1800.clo
Calling kernel:

sub_i32 #0: 10213 - 1256: value=8957, scc=0
    Expected value=8957, 64bit: 8957, expected scc=0
SUCCESS

sub_i32 #1: 13234 - 42221: value=-28987, scc=1
    Expected value=-28987, 64bit: -28987, expected scc=0
FAILED!! for sub_i32 scc #1: expected=0, result=1

sub_i32 #2: 6321 - -5343: value=11664, scc=0
    Expected value=11664, 64bit: 11664, expected scc=0
SUCCESS

sub_i32 #3: 2114067115 - -63823599: value=-2117076582, scc=0
    Expected value=-2117076582, 64bit: 2177890714, expected scc=1
FAILED!! for sub_i32 scc #3: expected=1, result=0

sub_i32 #4: -5343 - 6321: value=-11664, scc=0
    Expected value=-11664, 64bit: -11664, expected scc=0
SUCCESS

sub_i32 #5: -63823599 - 2114067115: value=2117076582, scc=0
    Expected value=2117076582, 64bit: -2177890714, expected scc=1
FAILED!! for sub_i32 scc #5: expected=1, result=0

sub_i32 #6: -10213 - -1256: value=-8957, scc=0
    Expected value=-8957, 64bit: -8957, expected scc=0
SUCCESS

sub_i32 #7: -13234 - -42221: value=28987, scc=1
    Expected value=28987, 64bit: 28987, expected scc=0
FAILED!! for sub_i32 scc #7: expected=0, result=1

7950

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

HD 7950 rev.1

Device: Tahiti, Driver version: 1800.8
Loading program binary: bugcheck-Tahiti-32-1800.clo
Calling kernel:

sub_i32 #0: 10213 - 1256: value=8957, scc=0
    Expected value=8957, 64bit: 8957, expected scc=0
SUCCESS

sub_i32 #1: 13234 - 42221: value=-28987, scc=1
    Expected value=-28987, 64bit: -28987, expected scc=0
FAILED!! for sub_i32 scc #1: expected=0, result=1

sub_i32 #2: 6321 - -5343: value=11664, scc=0
    Expected value=11664, 64bit: 11664, expected scc=0
SUCCESS

sub_i32 #3: 2114067115 - -63823599: value=-2117076582, scc=0
    Expected value=-2117076582, 64bit: 2177890714, expected scc=1
FAILED!! for sub_i32 scc #3: expected=1, result=0

sub_i32 #4: -5343 - 6321: value=-11664, scc=0
    Expected value=-11664, 64bit: -11664, expected scc=0
SUCCESS

sub_i32 #5: -63823599 - 2114067115: value=2117076582, scc=0
    Expected value=2117076582, 64bit: -2177890714, expected scc=1
FAILED!! for sub_i32 scc #5: expected=1, result=0

sub_i32 #6: -10213 - -1256: value=-8957, scc=0
    Expected value=-8957, 64bit: -8957, expected scc=0
SUCCESS

sub_i32 #7: -13234 - -42221: value=28987, scc=1
    Expected value=28987, 64bit: 28987, expected scc=0
FAILED!! for sub_i32 scc #7: expected=0, result=1

Ok, wiemy już, że jest błąd - teraz pytanie, co to oznacza dla końcowego użytkownika...

Edytowane przez Dammeron

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

w grach może to nie mieć żadnego znaczenia. gorzej dla aplikacji OpenCL tam taki błąd może przekreślić obliczenia. jednak błąd dotyczy specyficznej funkcji: ustalania nadmiaru liczb ze znakiem (to może nie być wykorzystane w typowych aplikacjach OpenCL), więc duże znaczenie to może mieć tylko dla programistów zapaleńców, którzy będą chcieli pisać programy dla GPU na poziomie assemblera... Jeszcze nie wiem czy ta funkcja (overflow) jest wykorzystana przez kompilator OpenCL (jeśli tak to jest problem).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...