Hirdetés

2024. április 19., péntek

Gyorskeresés

Hozzászólások

(#1) Enton


Enton
addikt

ÖÖÖ. Aham. Na majd ha lesz egy kis időm, akkor értelmezem, valahogy korán van még ehhez.
Végülis ez a példaprogi mit is akar csinálni, vagyis mit csinálna?

"mert gyakorlatilag megszámolhatatlan mennyiségű papucsállatka használ gazdatestként internetezésre humanoidokat és ez követhetetlen."

(#2) sghc_toma válasza Enton (#1) üzenetére


sghc_toma
senior tag

ezt csinalja a peldaprogi:

"... a BLAS csomag SAXPY függvényét fogjuk megvalósítani. A SAXPY fog két vektort, az elsőt megszorozza egy skalárral, majd az eredményt hozzáadja a második vektorhoz (y = a * x + y)."

konkretan veletlenszeruen general ket float vektort (x, y), meg egy float skalart (a), ezeket feltolti a VGA memoba, majd a GPU elvegzi rajtuk a SAXPY-t.. vegul visszaolvassa az eredmenyt a rendszermemoba, es osszehasonlitja egy CPU-s szamolas eredmenyevel..

in asm we trust

(#3) DarkByte


DarkByte
addikt

Huh, csak érjek haza és elolvasom. Épp foglalkoztat a téma :K :R

(#4) tobal


tobal
tag

Köszi szépen az írást, fasza lett. Bár per pill nekem nincs rá szükségem, ha majd egyszer vmi számításigényes projectem lesz, biztos hasznát veszem.
Kérdés: nVidia kártyákkal is megy? Mert ugye nekik ott a CUDA, és nem tom, h adnak-e OpenCL támogatást. Köszi

(#5) pmheros


pmheros
senior tag

Mély víz csak úszóknak ! :K

nem vagyok tökéletes

(#6) DarkByte


DarkByte
addikt

Az angol doksiba már bele futottam, de megint sikerült rájönnöm arra hogy ha valamit meg akarok csinálni, nem árt alaposan átgondolni hogyan is illeszthető rá az API -ra. Semmit sem ér a lineáris kód portolása egy az egyben, jól meg kell tudni fogni hol párhuzamosítható a feladat. Azt hiszem inkább ne akarjak nekifogni egyelőre a Vorbis kodeket portolni OpenCL -be. :D Egyébként Windows alatt lehet már használni OpenCL -t úgy hogy ki is használja a GPU -t? :F Laposban a GPU CUDA képes szóval talán van hozzá OpenCL illesztés, max. nem Windows -on.

[ Szerkesztve ]

(#7) Sanyix


Sanyix
őstag

Elvileg az ati és nvidia driver is tudja az opencl-t.

Én még asszem várok az opencl api-nak a mondjuk java-s apijára :D

szövegértelmezés, az ÉRTELMEZÉS a fontos, mert az olvasás mindenkinek megy, de az ÉRTELMEZÉS már komoly probléma a magyaroknál. Gondold ezt át mielőtt marhaságot írsz...

(#8) sghc_toma


sghc_toma
senior tag

tobal (#4): persze, megy nVidia-val, Macbook (Pro) -kban is nV kartyak vannak..
DarkByte (#6): Windows-os OpenCL tamogatasrol nem tudok semmit, mikor utoljara neztem, csak valami kiszivargott beta dolgok voltak..
Sanyix (#7): keszulget Java binding OCL-hez: [link].. btw, van .NET, es C++ wrapper is..

in asm we trust

(#9) Elijah Baley


Elijah Baley
tag

Egészen értelmesnek hangzik" a dolog :D . Klassz cikk, még a végén hasznát is veszem :C

"Anizotropikus szűrés? - ez az a ritka trópusi betegséget kimutató szűrő-vizsgálat??? - úgy hallottam nagyon veszélyes azaz anizo-tropik, de állítólag már van ellene védőoltás is..."

(#10) janos666


janos666
nagyúr
LOGOUT blog

Nem akarod a kis tesztprogidat exeként is belökni? Viccből szívesen megnézném lefut-e, de ennyiért nincs kedvem felrakni egy fordítót, és legyártani...
Vagy windowson futót még nem tudsz csinálni az eddigi cuccokkal?

[ Szerkesztve ]

TV/monitor kalibrálást vállalok. ||| "All right , Thom. But understand this: I do care for you. I care for all the lost souls than end up up here."

(#11) sghc_toma válasza janos666 (#10) üzenetére


sghc_toma
senior tag

feltennem en, csak nem tudom foditani.. Windows-ra legjobb tudomasom szerint csak beta SDK-k vannak mind ATI, mind nVidia reszrol.. regisztralni kene, de nincs kedvem fel kilometeres regisztracios lapokat kitoltogetni :) ja, meg jelenleg csak virtualis gepen van Win-em, azt is telepiteni kene.. azert hetvegen lehet, hogy raszanom magam..

in asm we trust

(#12) janos666 válasza sghc_toma (#11) üzenetére


janos666
nagyúr
LOGOUT blog

Hát ja, ezért nem akarom magamnak lefordítani (kivéve, hogy nekem dualbootban van win7 és ubuntu, semmi virtualizálás, és persze nincs semmi Mac még véletlen se)
Ha valaki megtette már, az linkelhetné. :D

[ Szerkesztve ]

TV/monitor kalibrálást vállalok. ||| "All right , Thom. But understand this: I do care for you. I care for all the lost souls than end up up here."

(#13) viszta99 válasza pmheros (#5) üzenetére


viszta99
tag

HÁT VALAMI HASONLÓ !

(#14) JanR


JanR
addikt

Kegyetlen jo iras. Masodjara mar valamit meg is ertettem belole :D
De ha hazaerek, meg parszor alaposabban atolvasom!
Koszi :R

(#15) tlac


tlac
nagyúr

ez kedvcsinálónak tényleg nagyon jó, kár, hogy most nincs rá szükségem :)

részletesen nem olvastam át, de nem láttam, hogy írtál volna róla, hogy vannak ezek a compute unit-ok, ezek milyen műveletekre képesek vagy mennyit lehet belőlük elérni?
úgy tudom, hogy az nvidia-nál és ati-nál különbözőek a felépítésük, az ati-nál sokkal több van, de egyszerűbbek, ezek a különbségek hogyan vannak kezelve opencl-ben?

(#16) sghc_toma válasza tlac (#15) üzenetére


sghc_toma
senior tag

JanR (#14): kosz szepen!

tlac (#15):
jo, hogy kerdezted ezt a dolgot, mert egy kicsit elcsesztem a cikkben.. mentsegemre legyen szolva, hogy az Apple doksiban is el van rontva, illetve az OpenCL eszkoz infokat lekerdezve is rossz adatokat kapok..

a cikkben ezt irtam a Compute Unit-okrol:
Az OpenCL eszköz (device) az a hardver, amin a párhuzamos feldolgozás történik. Ezekben a hardverekben több, úgynevezett számolási egység (compute unit) van - tulajdonképpen ezek hajtják végre az utasításokat. Például egy videokártya minden stream processzora, és egy CPU minden magja is egy számolási egység.

nos, ez igy nem igaz, itt a Compute Unit-ot ki kell cserelni Processing Element-re.. a Compute Unit a Processing Element-ek egy csoportja (az nVidia multiprocessor-nak hivja, es egy multiprocesszor 8 darab procit tartalmaz).. nagyjabol az a helyzet, hogy egy work-group work-item-jeit futtatja egy compute unit.. az, hogy ez konkretan hogyan van megoldva, implementacio-fuggo, nVidia kartyakra a CUDA doksiban szepen le van irva, hogy is tortenik ez.. gondolom ATI-eknak is van valami dokumentaciojuk, nekem csak nVidiam van, igy csak azzal foglalkoztam..

tehat OCL-ben te be tudod allitani a work-group meretet, illetve a work-item-ek szamat; az, hogy ez konkretan hogyan kerul kiosztasra a CU-k/PE-k kozt, az OpenCL runtime dolga..

// cikk atirasa folyamatban...

[ Szerkesztve ]

in asm we trust

(#17) tlac válasza sghc_toma (#16) üzenetére


tlac
nagyúr

kösz
tehát a Compute Unit-okkal már le van kezelve a hardverből adódó shaderes különbségek

(#18) sghc_toma válasza tlac (#17) üzenetére


sghc_toma
senior tag

igen, a hardverek kozotti kulonbseg eltuntetese az OpenCL feladata.. ez benne a szep, neki tulajdonkeppen mindegy, milyen hardver van alatta.. elvileg.. persze ahhoz, hogy optimalis kodot tudjal irni, ismerned kell az adott architekturat.. pl. nVidia-nal figyelni kell a bank conflict-okra, coalescing-re, ATI-nal nem tudom, hogy van ez.. szoval siman lehet, hogy egy alkalmazasban minden tamogatott architekturara kulon kernelt kell irni, kulon work-group/work-item kiosztast kell hasznalni..

in asm we trust

(#19) tocsa


tocsa
senior tag

Elütés: "már írtam az előző bekezsésben"

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#20) tocsa


tocsa
senior tag

Egyébként nagyon szép munka, köszönet érte.
Azt hiszem megpróbálok majd portolni egy project-et OpenCL-re, ha lesz már megfelelő hardver és driver rá. Nagyon bíztató!

Kérdések, amik felmerülnek bennem:
- milyen pontosságot támogat? Végülis float is jó lenne, de a portolandó program double (lévén a double ma már a koprocesszor "alap" formátuma, amire legjobban optimalizált (ok, most itt az MMX és SSE-ről nem beszélek))
- hogy tűri ez az architektúra, hogyha egyes vektorok 5-10 megabájtnyi méretűek?

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#21) sghc_toma válasza tocsa (#20) üzenetére


sghc_toma
senior tag

koszonom szepen, a hibat javitottam..
maga a szabvany a float-ot koveteli meg, de az OpenCL-ben is (mint OpenGL-ben) vannak extension-ok, es letezik double preciosion extension.. tehat igazabol hardverfuggo a dolog, nekem pl. a videokartyam (FX570m) nem tamogatja ezt a kiegeszitot, a procim meg igen (meg jo :) )..

masik kerdesedre is az a valaszom, hogy implementacio-fuggo.. OCL csak egy szabvany, az, hogy ezt hogyan valositjak meg a hardvergyartok a sajat architekturajukra, teljesen rajtuk mulik.. eddig csak nVidia kartyara programoztam, ott nem lehet gond az 5-10 megabajt meretu buffer.. pl a saxpy-s peldaprogi 25165824-es vektormerettel is tok jol mukodik.. ez ugye ket darab 96 megas vektort jelent (egy olyan kartyaval, amin csak 256 mega memo van)..

in asm we trust

(#22) tocsa válasza sghc_toma (#21) üzenetére


tocsa
senior tag

Kösz a választ.
Legszívesebben már most átportolnám a project-et. A float végülis nem nagy érvágás, szerintem még mindig elég pontosságú lenne a number crunching. Ez biztató, hogy 96 megás vektort is vitt a cucc. Mondjuk elvégre is ha ilyen tudományos számításokra gondolunk (márpedig a GPGPU megoldások erre jók), akkor értelemszerűen felmerül a nagy mennyiségű adatok kérdése. Látom, hogy mi a veszélye annak, hogy a nagy vektorok lekezelése hardver/driver függő, de elvárom, hogy működjön. Ugye az API mögött nekik kell megoldani transzparens módon az adatok kisebb méretre darabolását, ha túl nagyok.

Mostmár csak várni kell 1-2 évet, hogy kijöjjön az ATI és az nVidia is driverekkel meg kiforrjon kicsit a cucc, meg kell egy olyan Quadro-s laptop, ami neked van, aztán prezentálni tudnék a megrendelőnek egy OpenCL-es verziót.

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#23) sghc_toma válasza tocsa (#22) üzenetére


sghc_toma
senior tag

lehet, hogy felreerthetoen fogalmaztan.. azt, hogy nagy vektorok kezelese hardverfuggo, nem ugy ertettem, hogy a driver feladata egy nagy buffert szetbontani kezelheto darabokra.. annyit akartam vele mondani, hogy minden hardver kulonbozo mennyisegu memoriaval rendelkezik, es hogy egy adott architektura akar lehet olyan is, hogy nem tud nagy bufferekkel optimalisan dolgozni (nem tudom, hogy van-e ilyen, de ki tudja)..

gyakorlatilag ez ugy nez ki, hogy az eszkozon elerheto valamilyen mennyisegu globalis, konstans, lokalis, es privat memoria.. ezeket az adatokat az OCL runtime-tol le lehet kerdezni.. ezek, es az alkalmazas memoriaigenyenek tudataban neked kell beosztanod, hogy hogyan gazdalkodsz a memoval.. nagyon nagy adatok eseten mondjuk egy kezelheto darabra lefuttatod a kernelt, visszaolvasod az eredmenyt, aztan futtatod megint a kernelt egy masik adatdarabon, es igy tovabb..

1-2 evet talan nem kell varni, beta driverek mar most is vannak.. ATI vonalon nem tudom, mi a helyzet, de nVidia-ek ugye a CUDA architekturara epitettek az OpenCL implementaciojukat, az meg mar eleg kiforrott..
ja, es ebben a Quadro-ban az a 256 mega/32 stream proci kombo keves tud lenni neha, akkor mar inkabb valami 512MB-os FX770m/HD3650, vagy hasonlo :)

in asm we trust

(#24) tocsa válasza sghc_toma (#23) üzenetére


tocsa
senior tag

Köszi a választ.
Akkor a te általad említett 96MB-os vektoros példában te magad gondoskodtál valami kóddal ennek a feldarabolásáról? Lehetőleg én nem szeretnék ezzel foglalkozni, mert hw függő. Persze írható hw független kód a darabolásra, de elvárnám, hogy a drvier/OpenCL architektúra ezt megtegye.

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#25) tocsa válasza sghc_toma (#23) üzenetére


tocsa
senior tag

Még egy kérdés. Ugyan követtem a CUDA és egyéb technológiák megjelenését, de mély ismereteim nincsenek még. Talán te kapásból tudod a választ.
Az általam portolandó tudományos számítás extenzíven használ exponenciális függvényeket. Az architektúra támogat exponenciális vagy logaritmikus lebegőpontos műveleteket is? Igazából itt most egy kicsit elkezdtem félni is, mert valószínűleg a GPU-ban levő floating-point egységek nem erre vannak kihegyezve/optimalizálva.

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#26) sghc_toma válasza tocsa (#24) üzenetére


sghc_toma
senior tag

nincs mit..
az FX570m 256 megajanak nagy resze felhasznalhato globalis memoriakent (nem az egesz, mert ugye ott van meg a kepernyobuffer, konstans memoria, stb. is), igy felfert egyben a ket darab 96 megas vektor a kartyara.. azert ha vesz az ember ilyen 1-2 giga memoval rendelkezo kartyakat, azokon mar jol el lehet ferni..

exp-et, log-ot megkoveteli a szabvany, tehat az OCL-t tudo hardverek tudjak..

[ Szerkesztve ]

in asm we trust

(#27) karicska


karicska
tag

2 napja letölthető NVidia driver OpenCL-hez: [link]

Nagyon jó a cikk, már egyébként is foglalkoztatott a dolog, valamint a diplomamunkámhoz is kelleni fog. Amint lesz időm meló és suli mellett rögtön alkotok valamit :D

Feldobta ez a cikk a napom. :DD

[ Szerkesztve ]

"Welcome to the real world"

(#28) tocsa válasza karicska (#27) üzenetére


tocsa
senior tag

Nekem is feldobta anno a napom. Egyre izgatottabb vagyok, nem birok varni, hogy ne probaljam ki. Kene egy jo hardver (oke, elvileg csak CPU-t is kezel az OpenCL).

Mirol szol a diplomamunkad?

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#29) tocsa válasza sghc_toma (#23) üzenetére


tocsa
senior tag

Huhuu, megneztem laptop arakat FX770m-el. Haaat...
Asszem FX570m-el nezelodok, vagy ilyesmi.

[ Szerkesztve ]

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#30) tocsa válasza tocsa (#29) üzenetére


tocsa
senior tag

Inkabb desktop :) Milyen desktop Quadro-t erdemes venni?

Acer Predator Helios 500 Ryzen, Samsung 960 Pro NVMe + GeChic 15.6" kulso monitor a mobil irodahoz

(#31) karicska válasza tocsa (#28) üzenetére


karicska
tag

Ha asztalid van akkor egy 9600GT-t belehet szerezni 20Ft környékén már simán. Nekem is az van. 9600GT-t használom koprocesszornak :D 3DMark Vantage-ban így a procim 10000 helyett 21000 pontot kapott! :D

Törések szimulálásáról a grafikában és ezt gpu-n akarom számoltatni, dióhéjban erről szól a diploma munkám.

Egyébként érdekes lesz ez az openCL-s dolog, ugyanis ma szórakoztam a dologgal egy kicsit.

Feltettem Ati Stream sdk-t és az NVidia-s NBody projektet nem sikerült az Ati -s opencl.dll -l műküödésre bírni (újra fordítottam a projektet és az Ati-s headereket valamint librarykat használtam, majd az Ati-s opencl.dll -t ette meg). Valami felszabadító függvény még nem került bele az AMD-s opencl dll-be. Mellesleg a Stream SDK 2.0 beta-ban jelenleg még csak CPU támogatás van.

"Welcome to the real world"

(#32) karicska


karicska
tag

Egy kis javítás a cikkhez:
a parameter cannot be allocated in a named address space -t dob a clBuildProgram ha az "a" paramétert nem __private címtérbe kerül ( ATI Stream SDK-ban, NVidia sdk alatt megy a dolog )

Utána olvastam az OpenCL doksiban (Khronos_OpenCL_Specification.pdf 149 oldal ) és azt írják, hogy a __kernel függvények bemenő paramétereinek mindnek __private address space-ben kell lennie, viszont ha pointer a bemenő paraméter az lehet __global, __constant, __local és a címterek közti castolás nem lehetséges.

Tehát a példa progi jól megy NVidia sdk-val viszont Ati sdk-val nem.

Kérdés: tud valaki valami olyan eszközt amivel jól lehet profilozni a futó kódot?

"Welcome to the real world"

(#33) sghc_toma válasza karicska (#32) üzenetére


sghc_toma
senior tag

jogos, koszonom :R rogton javitom...
meg ha mar szoba jottek az address space-ek, talan erdemes megemliteni, hogy az x lehetne __constant, mert ugysem valtozik az erteke, es a konstans memo cache-elve van (legalabbis CUDA architekturan)..

nVidia-nak Win-re es Linux-ra van egy OpenCL Visual Profiler nevu cucca, bar meg csak beta..

in asm we trust

(#34) sghc_toma válasza sghc_toma (#33) üzenetére


sghc_toma
senior tag

javitottam.. meg a peldaprogiban volt egy masik csunya bug is: az eredmeny ellenorzesekor abs-ot hasznaltam fabs helyett, igy egy esetleges hibas szamolas utan is azt kaptuk volna, hogy 1000-bol 1000 sikerult :B

karicska: esetleg megprobalnad a peldaprogit forditani/futtatni ugy, hogy a 147. sornal kezdodo kommentezett blokkot is beleforditod? OSX-en nem akar mukodni, nem tudom miert.

// es meg valami, ami nagyon off: ismeros volt a nick-ed, rakerestem az e-mail cimedre, latom ELTE-s vagy.. veletlenul nem a nagytetenyi uti koliban laksz? van itt a halon egy gep karics-pc, vagy valami hasonlo nevvel, ez elegge hasonlit a karicska-hoz :)..

in asm we trust

(#35) karicska válasza sghc_toma (#34) üzenetére


karicska
tag

Most megyek el, de amikor vissza jöttem lefordítom és megnézem.

[OFF]de-de az az én gépem lesz :)

Amikor még csináltam ide az accot akkor még karicska voltam, azóta felnőtem és karics lettem :DD [/OFF]

"Welcome to the real world"

(#36) karicska


karicska
tag

Piszkálta a fantáziám a dolog, úgyhog megnéztem, de nem nyert, röpke 102 error + 45 warninggal fordult :S

Az első hiba: error C2275: 'cl_platform_id' : illegal use of this type as an expression

Visszaérek este valamikor aztán megnézem pontosan.

Az én kódom eddig tök ugyanez (van egy két kiiratás de az nem zavar be ) és nekem lefordul. Ugyanabba a környezetbe raktam be, amiben az enyém van. Még dolgozom este rajta.

"Welcome to the real world"

(#37) karicska


karicska
tag

Már lefordul és fut is:D

NVidia SDK: ha a bináris fájl betöltést kikommentezem akkor semmi gond.

ATI Stream SDK 2.0 beta3: ha kikommentezem a bináris fájl betöltést akkor problémázik a program végén, hogy a binary változó nem ment át a run-time checken. Nem láttam még életemben ezt a hibaüzenetet.

Este ha visszaértem utána járok. Már így is 1 órával többet foglalkoztam vele, mint kellett volna:D

"Welcome to the real world"

(#38) sghc_toma válasza karicska (#37) üzenetére


sghc_toma
senior tag

sry, hogy csak most valaszolok, kicsit el voltam havazva..

kosz, hogy kiprobaltad a progit!
otthon en is ki akartam probalni win alatt.. 64 bites Win7-re nem ment az OpenCL SDK (azt mondja, legalabb XP kell neki.. fura, mert OpenCL driver meg van Win7-re).. az Ati SDK-val meg meg nem volt idom foglalkozni.. talan a heten..

"de-de az az én gépem lesz"
na, akkor jol sejtettem :)

in asm we trust

(#39) sghc_toma


sghc_toma
senior tag

kijott az Ati Stream SDK 2.0-beta4, mukodik vele a GPU gyorsitas.. meg tamogatja a 64 bites Windows-okat, koztuk a Win7-et is.. [link]

[ Szerkesztve ]

in asm we trust

(#40) karicska válasza sghc_toma (#39) üzenetére


karicska
tag

Tök jó! :D:D

Akkor mostmár ezt teszem fel nem a régit. (Most telepítettem új windows-t (Win 7 64bit ).

Egyébként nekem előtte is win7-m volt csak beta, és azon minden ment.

"Welcome to the real world"

(#41) romero28


romero28
senior tag

üdv !

ismerősömnél a következő probléma jelentkezett : egy 2 nyákos 295-ről váltott egy 1 nyákosra és a gpu-z -ben az open cl nincs kipipálva . (a két nyákosnál ki volt) win7 és legújabb nv driver van fenn a gépen . mitől lehet ez :F

(#42) charlie_hu


charlie_hu
aktív tag

Van (stabil, elérheőt) program ami átlag célra (pl. videó konvertálás) is fel tudja használni ezt?

Tárhely, domain, webszolgáltatások - https://www.awh.hu

Copyright © 2000-2024 PROHARDVER Informatikai Kft.