Ieviesta OpenCL 3.0 specifikācija

Koncerns Khronos, kas atbild par OpenGL, Vulkan un OpenCL saimes specifikāciju izstrādi, paziņoja par OpenCL 3.0 specifikāciju izstrādes pabeigšanu, kas definē API un C valodas paplašinājumus, lai organizētu starpplatformu paralēlo skaitļošanu, izmantojot daudzkodolu CPU, GPU, FPGA, DSP un citas specializētas mikroshēmas no tiem, ko izmanto superdatoros un mākoņserveros mikroshēmām, kuras var atrast mobilajās ierīcēs un iegultajās tehnoloģijās. OpenCL standarts ir pilnībā atvērts un neprasa licences maksu. Standarta izstrādē piedalījās tādi uzņēmumi kā IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments un Toshiba.

Pašreizējā posmā specifikācijai ir piešķirts provizoriskais statuss, kas paredz iespēju precizēt, pamatojoties uz atsauksmēm, kas nosūtītas pa GitHub. Kad komentāri tiks ņemti vērā, specifikācija tiks pabeigta un tiks publicēts galīgais testa komplekts, lai pārbaudītu esošo implementāciju saderību.

Ieviesta OpenCL 3.0 specifikācija

Ievērojamākais Features OpenCL 3.0:

  • OpenCL 3.0 API tagad aptver visas OpenCL versijas (1.2, 2.x), nesniedzot atsevišķas specifikācijas katrai versijai. OpenCL 3.0 nodrošina iespēju paplašināt pamata funkcionalitāti, integrējot papildu specifikācijas, kas tiks slāņotas opciju veidā, nebloķējot OpenCL 1.2/2.X monolīto raksturu.
  • Par obligātu tiek pasludināta tikai funkcionalitāte, kas atbilst OpenCL 1.2, un visas OpenCL 2.x specifikācijās piedāvātās funkcijas ir klasificētas kā izvēles. Šī pieeja atvieglos ar OpenCL 3.0 saderīgu pielāgotu implementāciju izveidi un paplašinās to ierīču klāstu, kurās var izmantot OpenCL 3.0. Piemēram, ražotāji var ieviest OpenCL 3.0 atbalstu, neieviešot īpašas OpenCL 2.x funkcijas. Lai piekļūtu izvēles valodas funkcijām, OpenCL 3.0 ir pievienota testa vaicājumu sistēma, kas ļauj novērtēt atsevišķu API elementu atbalstu, kā arī īpašus makro.
  • Apvienošana ar iepriekš izdotajām specifikācijām atvieglo lietojumprogrammu migrēšanu uz OpenCL 3.0. OpenCL 1.2 lietojumprogrammas bez izmaiņām varēs darboties ierīcēs, kas atbalsta OpenCL 3.0. OpenCL 2.x lietojumprogrammām arī nebūs nepieciešamas koda izmaiņas, ja vien OpenCL 3.0 vide nodrošina nepieciešamo funkcionalitāti (lai nodrošinātu turpmāku pārnesamību, OpenCL 2.x lietojumprogrammām ieteicams pievienot testa vaicājumus, lai novērtētu atbalstu OpenCL 2.x līdzekļiem tiek izmantots). Draiveru izstrādātāji ar OpenCL ieviešanu var viegli jaunināt savus produktus uz OpenCL 3.0, pievienojot tikai vaicājumu apstrādi noteiktiem API izsaukumiem, un laika gaitā pakāpeniski palielināt funkcionalitāti.
  • OpenCL 3.0 specifikācija ir saskaņota ar SPIR-V vispārējā starpposma attēlojuma vidi, paplašinājumiem un specifikācijām, ko izmanto arī Vulkan API. SPIR-V 1.3 specifikācijas atbalsts ir iekļauts OpenCL 3.0 pamatfunkcijā kā izvēles līdzeklis. Izmantojot starpposma attēlojumu SPIR-V skaitļošanas kodoliem ir pievienots atbalsts operācijām ar apakšgrupām.
    Ieviesta OpenCL 3.0 specifikācija

  • Pievienots atbalsts paplašinājumam asinhrono DMA darbību veikšanai (Asynchronous DMA), kas tiek atbalstīts DSP līdzīgās mikroshēmās ar tiešu piekļuvi atmiņai. Asinhronā DMA ļauj izmantot DMA transakcijas, lai asinhroni pārsūtītu datus starp globālo un lokālo atmiņu, paralēli aprēķiniem vai citām datu pārsūtīšanas darbībām.
  • C Parallel Programming Extensions specifikācija ir atjaunināta uz 3.0. versija, un OpenCL valodas paplašinājumu izstrāde priekš C++ tika pārtraukta par labu projektam “C++ for OpenCL”. C++ for OpenCL ir kompilators, kura pamatā ir Clang/LLVM un apraide C++ un OpenCL C kodoli SPIR-V starpposma attēlojumā vai zema līmeņa mašīnas kodā. Izmantojot apraidi, SPIR-V organizē arī C++ lietojumprogrammu montāžu, izmantojot SYCL veidņu bibliotēku, kas vienkāršo paralēlu lietojumprogrammu izveidi.

    Ieviesta OpenCL 3.0 specifikācija

  • Ir piedāvāts kompilators OpenCL apraidei, izmantojot Vulkan API clspv, kas pārvērš OpenCL kodolus par Vulkan SPIR-V attēlojumu un slāni clvk lai OpenCL API varētu darboties virs Vulkan.

    Ieviesta OpenCL 3.0 specifikācija

Avots: opennet.ru

Pievieno komentāru