Khronosi kontsern, mis vastutab OpenGL, Vulkan ja OpenCL spetsifikatsioonide arendamise eest, avaldas lĂ”plikud spetsifikatsioonid , mis mÀÀratlevad API ja C keele laiendused, et korraldada platvormidevahelisi paralleelseid arvutusi, kasutades mitme sĂŒdamikuga CPU-sid, GPU-sid, FPGA-sid, DSP-sid ja muid spetsialiseeritud kiipe, alates neist, mida kasutatakse superarvutites ja pilveserverites, kuni kiipide, mida leidub mobiilseadmetes ja sisseehitatud tehnoloogias. OpenCLi standard on tĂ€ielikult avatud ja ei nĂ”ua litsentsitasusid.
Samas avatud OpenCL SDK tööriistade, nĂ€idete, dokumentatsiooni, pealkirjafailide, C++ ja C-köidikute jaoks, et arendada OpenCL 3.0-ga ĂŒhilduvaid rakendusi. Samuti OpenCL 3.0 algne rakendus, mis pĂ”hineb Clang'i kompilaatoril, mis on hetkel ĂŒlevaates, et lisada patĆĄeid LLVM-i pĂ”hikoosseisu. Standardi arendamisel osalesid sellised ettevĂ”tted nagu IBM, NVIDIA, Intel, AMD, Apple, ARM, Electronic Arts, Qualcomm, Texas Instruments ja Toshiba.
KÔige mÀrgatavamad :
- OpenCL 3.0 API katab nĂŒĂŒd kĂ”ik OpenCL versioonid (1.2, 2.x) ilma iga versiooniga eraldi spetsifikatsioonide pakkumiseta. OpenCL 3.0 vĂ”imaldab pĂ”hifunktsionaalsuse laiendamist tĂ€iendavate spetsifikatsioonide integreerimise kaudu, mis lisanduvad valikutena, mitte takistades OpenCL 1.2/2.X monoliitsust.
- Kohustuslikuks on nimelt mÀÀratud ainult funktsionaalsus, mis vastab OpenCL 1.2-le, samas kui kĂ”ik OpenCL 2.x spetsifikatsioonides pakutavad vĂ”imalused on klassifitseeritud valikulisteks. Selline lĂ€henemine lihtsustab spetsialiseeritud rakenduste loomist, mis on ĂŒhilduvad OpenCL 3.0-ga, ja laiendab seadetega valikut, kus OpenCL 3.0-d saab kasutada. NĂ€iteks vĂ”ivad tootjad rakendada OpenCL 3.0 toetust, ilma et nad peaksid rakendama eraldi OpenCL 2.x vĂ”imalusi. OpenCL 3.0-s on lisatud kontrollipĂ€ringute sĂŒsteem, mis vĂ”imaldab hinnata individuaalsete API elementide toetust ning samuti spetsiaalsed makrod.
- A varemine varasemate spetsifikatsioonide lihtsustab rakenduste tĂ”lkimist OpenCL 3.0-le. OpenCL 1.2 rakendused saavad töötada seadmetes, mis toetavad OpenCL 3.0, ilma muudatusteta. OpenCL 2.x rakendused ei vaja samuti koodi muutmist, kuid kui OpenCL 3.0 keskkond pakub vajalikku funktsionaalsust (et tagada tulevaste OpenCL 2.x rakenduste ĂŒhilduvus, on soovitatav lisada kontrollpĂ€ringud kasutatavate OpenCL 2.x vĂ”imaluste toetuse hindamiseks). Draiverite arendajad, kellel on OpenCL teostused, saavad oma tooteid hĂ”lpsasti ajakohastada OpenCL 3.0-le, lisades vaid API kutsungite olemasolu kontrollimise ning ajaga jĂ€rk-jĂ€rgult suurendades funktsionaalsust.
- OpenCL 3.0 spetsifikatsioon on kooskÔlas SPIR-V universaalse vaheformatiga, mis on samuti rakendatav Vulkan API-s. SPIR-V 1.3 spetsifikatsiooni toetamine on lisatud OpenCL 3.0 pÔhikoostisele valikulisena. Vaheformaadi kasutamise kaudu on lisatud toetamine alagruppidega teostamiseks.
- On lisatud laienduse tugi asĂŒnkroonsete DMA-operatsioonide (Asynchronous DMA) teostamiseks, mida toetatakse DSP-sarnastes kiipides, millel on otsepÀÀs mĂ€lu juurde. Asynchronous DMA vĂ”imaldab kasutada DMA tehinguid andmete edastamiseks globaalsete ja kohalike mĂ€lude vahel asĂŒnkroonses reĆŸiimis, paralleelselt arvutuste vĂ”i muude andmeedastusoperatsioonidega.
- C keele paralleelse programmeerimise laienduse spetsifikatsioon on uuendatud , samas kui OpenCL keelelaiendite arendamine C++ jaoks on lĂ”petatud projekti "C++ for OpenCL" kasuks. C++ for OpenCL on Clang/LLVM baasil loodud kompilaator ja tuumade tĂ”lkimine C++ ja OpenCL C vaheformaat SPIR-V vĂ”i madala taseme masinkoodiks. SPIR-V-sse tĂ”lkimise kaudu on ka suuremate C++ rakenduste, mis kasutavad SYCL malliraamatukogu, koostamine ĂŒles ehitatud, muutes paralleelsete rakenduste loomise lihtsamaks.
- OpenCL tÔlkimiseks Vulkan API kaudu on pakutud kompilaatorit , mis muundab OpenCL tuumad Vulkan SPIR-V esitusse, ja kihi , et tagada OpenCL API toimimine Vulkan'i kohal.
Allikas: opennet.ru
