Keresés

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

  • Meteorhead

    aktív tag

    válasz petXYZW #22 üzenetére

    A programozóknak az OpenCL-lel nem az a bajok, hogy programozni kell benne (bár igen, sajnos létezik az a 70%-os programozói réteg, aki egy mezei host oldali párhuzamos kóddal sem bánik el, sem task, sem data parallel esetben), hanem az a baja, hogy isszonyatosan verbose és macera az interface-e.

    Egy olyan egyszerű problémát megoldani, hogy egy GPU képes-e double-ben számolni, vagy csak floatot lehet használni kernelben olyan trágya módon lehet megoldani, hogy az ember csinál egy #define REAL float/double sort a kernel kódba, amit runtime kell a kódba beleírni, mert akkor derül ki, hogy az adott hardver amin fut képes-e rá. Igen, C++-an léteznek template-k. Ilyenekre találták ki őket. (Igen, AMD-nek van már static C++ OpenCL compilere, de az a kód nem lesz hordozható)

    OpenCL-ben nincs dinamikus memóriaallokáció (ami állatira megnehezíti a legegyszerűbb hatékony reduction kódok írását, mert egy csomó méretet host oldalról kell beleinjektálni a kódba, hogy compile-time konstans legyen.

    Tisztában vagyok vele, hogy a rengeteg feature amit korábban felsoroltam az egy magasabb szintű absztarkciót szolgál, de el nem tudom mondani, hogy mennyivel egyszerűbb lenne az életem, ha STL tárolókat használhatnék egészen az utolsó függvényig, ami feldogolgozza az adatokat, és nem kéne közbeékelnem egy cl::Buffert, és a köré épített egész masinériát. Fejlesztési idő ÓRIÁSI mértékben lerövidülne.

    Egyébként értem amit mondasz, hogy van egy fajta programozói lustaság, (bár nekem azért van munkám, mert kevesen értenek ehhez) de tényleg macera. Olyan programot írni, ami minden user gépén fut állati macera írni, és OpenCL C99 kernel nyelve ehhez csak hozzárak. Csak a template-ek már megváltásként hatnának.

  • Meteorhead

    aktív tag

    Az Intel már előre megmondta, hogy nem a GPU-kkal akarnak versenyezni, mert nyers erőben meg sem közelíti azokat. Intel célja egy olyan masszívan párhuzamos platform építése volt, aminek a belépési költsége 0.

    A GPUk állati erősek, de még mindig nem váltották meg a világot. Egyszerűen túl nehéz programozni őket (én is ebből élek, úgyhogy tudom). Ezt meg az ember bedugja a gépbe, és MPI-al eléri mint egy új node-ot a clusterben.

    Amit pedig elfelejtenek az emberek, hogy bár OpenCL-t tud futtatni, és nem is kellene ennyire véresen gynegének lennie, a legnagyobb előnye, hogy ezen bármilyen C++ kódot le lehet fordítani, mivel C++ feature complete (x86 lévén). Azt, hogy virtuális függvényeket , függvénypointereket, polymorphizmust orrvérzésig használhat az ember számokban nem kifejezhető, és a GPUk azt nagyon soká fogják csak tudni. A HW hiába tudná már, nincs API amin keresztül rendesen ki is lehetne használni (portable módon meg aztán végképp).

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