Hirdetés

Keresés

Hirdetés

Új hozzászólás Aktív témák

  • attila9988

    őstag

    válasz sb #288 üzenetére

    A Java elvileg jönni fog.

    Hát igen... elvileg.... erről írtam fentebb. :) APU -val kapcsolatban szinte minden úgy van, hogy talán, elvileg, majd. Erre írtam én, hogy nem "majd" akarom használni a számítógépemet, hanem "most".

    "Nem párhuzamosítható számításokból azért viszonylag ritka az, ami iszonyú erőforrás-igényes"

    Ennek ellentmond a software piac nagy része. Programoztál már életedben? Próbáld ki. Leírod a folyamatot, amit meg akarsz oldani. Az, hogy ez párhuzamosan futó folyamatokra legyen szét bontva, egyáltalán nem olyan triviális dolog, mint amilyennek hangzik. Nagyon komoly problémák léphetnek fel közben, illetve lehetnek olyan szakaszok, amiket egyszerűen nem bonthatsz fel.

    Olyan ez, mint ha leültetnél egy kerek asztalhoz 4 embert, és megmondanád nekik, hogy mondjuk rakjanak sorba kártyákat szín szerint, és a rajta lévő számok szerint is. A négy ember a négy mag.
    Ők munka közben nem tudnak egymással kommunikálni, csak előre meghatározott módon, és ezt a módot neked kell kitalálni. Kb azt lehet csinálni, hogy az egyik ember kapja a „fő szálat”, ő fogja kiosztani a munkát a másik háromnak. Itt viszont felmerül millió kérdés. Hogyan osszuk szét? Mit csináljon a második ember? Mit csináljon a harmadik? Szükség van egyáltalán a harmadikra és a negyedikre? Lehet, hogy nem, mert kevés a kártya. Akkor meg kell mondani, hogy mi alapján legyen kiosztva a munka. Mennyit kapjon az egyik? Mennyit kapjon a második? Mikor kell szinkronizálni az eredményeket? (elmondani az elsőnek, hogy héj… kész vagyok, nézd mit csináltam, odaadom neked a paklit) Mi a leghasznosabb kiosztási mód? Hol tároljuk az eredményeket? Az egyik folyamat nem látja a másikat, hanem elvégzi a melót amit adsz neki, és visszaadja az eredményt. Akkor azt tárolni kell. De hol? A memóriában? Egy fájl -ban? Mekkora buffer méret a megfelelő?

    És ez egy egyszerű feladat, ami egyetlen szálon milliószor egyszerűbb, mert egyetlen függvénybe beleírod, hogy mi a munka, a cpu elvégzi, visszaadja, kész…

    Minél bonyolultabb a feladat, annál nehezebb kitalálni, miként lehet hatékonyan több szálon kezelni azt, és egyben tartani az eredményeket…

    Persze vannak kezdeményezések, amik megkönnyítik a dolgot, meg fordító logika ami megpróbál önhatalmúlag kitalálni dolgokat, szétbontani egyes folyamatokat, de teljesen automatikus nem lesz a dolog valószínűleg soha.

    Szóval van amit fel lehet bontani egyszerűen, és van amit nem. Van amit érdemes, és van amit nem. A java elvileg készülő megoldása "elvileg" majd jvm szintjén pakol ki egyes folyamatokat vga -ra, szóval szintén csak ELVILEG gyakran használt megoldásokra lesz írva olyan kiterjesztés, ami azt vga -n valósítja meg. A sort -al példálóztak amikor láttam róla egy bemutatót. És látod, még mindig nem hallunk róla, pedig nem tegnap volt hogy előálltak vele... hát ennyire nehéz ügy ez a téma.

    És ne gondold hogy ott is minden feladat ki lesz tolva vga -ra, mert mindent nem lehet.

    [ Szerkesztve ]

    „Csak az apró titkokat kell védeni. A nagy felfedezéseket a nyilvánosság hitetlensége védi.” (Marshall McLuhan)

  • Abu85

    HÁZIGAZDA

    válasz sb #288 üzenetére

    Igazából a Java már most itt van. Lambda és Stream használata kell hozzá Java 8-ból. Ha azokkal írod meg ma a programokat, akkor azok automatikusan GPGPU-val gyorsítottak lesznek a Java 9 és a HSA Runtime telepítésével. Ha nem bírod kivárni, akkor van HSA-s Aparapi.

    [ Szerkesztve ]

    Senki sem dől be a hivatalos szóvivőnek, de mindenki hisz egy meg nem nevezett forrásnak.

Új hozzászólás Aktív témák