Aktualności:

Nowy polski projekt BOINC - Universe@Home

Menu główne

Błąd w GPU radeonów (GCN)

Zaczęty przez matszpk, 13 Listopad 2015, 17:28

matszpk

cześć. ostatnio znalazłem (na 99%) błąd sprzętowy w GPU radeona (Radeon HD 7850). zobaczcie wątek:
https://community.amd.com/thread/191288

W poście zamiesciłem kody programu, który wykrywa ten błąd i binaria w Linuksie. chcę, żebyście spróbowali odpalić program i pokazali wyniki.
Testowałem tylko na Pitcairn. Niestety nie wiem jak będzie działać na prockach Fiji i Tonga (całkiem inna arch). Program testuje czy instrukcja S_SUB_I32 dobrze
liczy nadmiar (overflow) dla różnicy liczb. mój Pitcairn, niestety źle liczy. chciałbym wiedzieć czy inne GPU mają ten problem.
Niestety nie mam dostępu do Windows, więc nie mam binariów dla Windows. sprobuje skompilować dla Windows w następnym tygodniu.

RAD-Poland

dla HD7770

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

Device: Capeverde, Driver version: 1800.5
Loading program binary: bugcheck-Capeverde-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

   
WCG:
PG:         YOYO:

     

matszpk

dzięki RAD-Poland  :p_arr:. CapeVerde to GCN1.0. czekam na wyniki dla GCN1.1 (Bonaire, Hawaii, Spectre...).

kva.pl


matszpk

Po napisaniu assemblera dla GPU postanowiłem nauczyć się i sprawdzić wszystkie instrukcje GPU :book:. no i wyszedł błąd...

PoznanskaPyra

Mam R9-290 i 390, szkoda że nie napisałeś wcześniej jak fury miałem. Powiedz mi tylko czy przez virtualną maszynę zadziała? Albo jak na windowsie to odpalić?
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

jeśli masz jakikolwiej kompilator (zalecam VS Express 2012)  to po prostu skompiluj plik bugcheck.cpp. musisz mieć zainstalowany AMDAPP, lub przynajmniej nagłówki OpenCL. może w weekend skompiluję pod windows.

PoznanskaPyra

Mam visuala 2015, tego darmowego.

Jak się uda skompilować to strzele o tym artykuł i dorzucę aplikacje żeby ludzie mogli sobie na swoich kartach odpalić, oczywiście jak się zgodzisz 8)
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

Dzięki. oczywiście zgadzam się.  8). Nie wiem jak program zachowa się dla Tonga lub Fiji (to GCN 1.2, niekompatybilne ze starszymi i jeszcze nie rozgryzłem binariów OpenCL dla tej arch).

PoznanskaPyra

Właśnie z openCL mam problem przy kompilowaniu. Zainstalowałem AMD SDK i Visual dalej nie rozpoznaje co to jest.
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

w opcjach kompilatora trzeba podać ścieżki do inkludów. np.: "/I..\OpenCL1.1\include"
w AMDAPP powinna być biblioteka OpenCL.lib. dodaj ją na końcu listy plików wejściowych. spróbuj skompilować z poziomu linii komend.
ponieważ MSVC nie jest do końca kompatybilny C++11 to prawdopodobnie trzeba będzie trochę zmienić program

matszpk

Juz jest wersja dla Windows. mam nadzieję, że zadziała.

PoznanskaPyra

dodaj linijkę system("pause") albo żeby program zaczekał na komendę :D
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

odpal z poziomu linii poleceń. Wybierz z programów 'Wiersz linii poleceń' (lub Uruchom... z 'cmd.exe') i przejdź do katalogu z programem (cd SCIEZKA) i uruchom. Jeszcze nie odpalałeś żadnego programu z linii poleceń?

PoznanskaPyra

Odpalałem jakieś aplikacje monitorujące obciążenie CPU dedykowane dla Xeonów E5, jakiś dłuższy czas temu  %)
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

jest nowy plik. już będzie czekać na reakcję użytkownika. Mozesz odpalić z poziomu GUI.

PoznanskaPyra

#16
Sorki ale czasu brakowało

Karta to Asus Radeon R9-390 STRIX (chyba)

    Usage: bugcheck GPUDEVICEINDEX
Using GPU Device #0
List of devices:
Device #0, name: Hawaii, AddressBits: 64
Device #1, name: Hawaii, AddressBits: 64

Device: Hawaii, Driver version: 1800.8
Loading program binary: bugcheck-Hawaii-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


Przy okazji widać, że R9-290 i R9-390 to identyczne układy, tylko w 390 dopchali ramu. Przynajmniej wszystko na to wskazuje, chyba że panowie z AMD wiedzą o większej ilości takich bugów, wtedy rzeczywiście może coś poprawiono przy okazji premiery.

Jutro dodam wyniki z R9-280x. Gdzie błąd ten powinien wystąpić.
WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

matszpk

Dzięki za testy. okazuje się, że nie ma błędu w nowszych układach (GCN 1.1/1.2). Z linii poleceń możesz wybrać kartę do testów (podaj po prostu jej numer).

PoznanskaPyra

Radeon R9-280x zgodnie z oczekiwaniami.

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

Press ENTER





WIZYTÓWKA
Kompy:
AMD Ryzen 9-3900X + GTX980Ti
Intel i5 4570 + HD7970

Szopler

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

Device: Tahiti, Driver version: 1642.5
Loading program binary: bugcheck-Tahiti-32-1700.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


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

Device: Capeverde, Driver version: 1800.11
Loading program binary: bugcheck-Capeverde-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