OpenCL
OpenCL | |
---|---|
![]() | |
Grundläggande information | |
utvecklare | Khronos Group |
Utgivningsår | 28 augusti 2009 |
Nuvarande version | 3.0[1] ( 30 september 2020 ) |
Aktuell preliminär version | 3.0 provisorisk (27 april 2020) |
operativ system | plattformsoberoende |
programmeringsspråk | C , C ++ |
kategori | Programmeringsgränssnitt |
Licens | annorlunda |
www.khronos.org/opencl |
OpenCL ( engelska Open C omputing anguage L) är ett gränssnitt för ojämn parallell dator , z. B. är utrustade med huvud- , grafik- eller digitala signalprocessorer . Detta inkluderar programmeringsspråket "OpenCL C". OpenCL utvecklades ursprungligen av Apple för att göra prestanda för nuvarande grafikprocessorer användbara för icke-grafiska applikationer.
I samarbete med företagen AMD, IBM, Intel och Nvidia utarbetades det första utkastet och slutligen lämnade Apple in det till Khronos Group för standardisering. [2] Specifikationen för OpenCL 1.0 publicerades den 8 december 2008. [3] [4] 1.1 följde i juni 2010. [5] [6] Specifikation 1.2 följde den 16 november 2011 med förbättringar som förblir bakåtkompatibla med 1.0. [7] [8] Två år senare, den 18 november 2013, introducerades OpenCL 2.0 -specifikationen. [9] [10]
OpenCL 1.0 släpptes först på marknaden av Apple den 28 augusti 2009 med Mac OS X Snow Leopard 10.6- operativsystemet; de tillhörande programmen ("kärnan") kan distribueras till olika befintliga OpenCL-kompatibla enheter vid körning. För närvarande, beroende på hårdvara, stöds endast OpenCL 1.0 till 1.2 av Apple. [11] [12] En annan viktig supporter är AMD med tidigare AtiStream i konkurrens med NVidia med CUDA . [13] Trots sitt primära stöd för CUDA stöder Nvidia också OpenCL 1.2 på grund av användarnas efterfrågan, senare med vissa element från 2.0 och nu också 3.0 år 2021. [14]
Hårdvara som är kompatibel med OpenCL 2.0 stöder också de högre versionerna 2.1 och 2.2 med uppdaterade drivrutiner, enligt Khronos Group. [15]
OpenCL 2.1 släpptes officiellt i november 2015. [16] En avgörande innovation i OpenCL 2.1 är integrationen av SPIR-V, efterföljaren till SPIR (Standard Portable Intermediate Representation). SPIR-V är ett mellanliggande språk med inbyggt stöd för grafikskuggare och processorkärnor. Det gör det möjligt att dela kompilatorkedjan mellan de olika behandlingsenheterna. Detta innebär att språk på hög nivå kan hantera den heterogena arkitekturen via SPIR-V utan att behöva oroa sig för översättningen till de olika maskinvarukomponenterna. Förutom OpenCL används SPIR-V också i Vulkan Graphics API . [17] [18]
OpenCL 2.2 släpptes officiellt i maj 2017. [19] [20] Som den viktigaste förändringen heter meddelandet integrationen av OpenCL C ++ Kernel Language i OpenCL, vilket bland annat ska hjälpa till när du skriver program som fungerar parallellt. Kärnspråket, definierat som en statisk delmängd av C ++ 14 -standarden inom ramen för Open Computing Language, innehåller klasser, mallar, lambdauttryck och andra konstruktioner. I maj 2018 släpptes en "underhållsuppdatering" med buggfixar och uppdateringar i rubrikerna på Spir-V. [21] [22] [23]
I framtiden bör OpenCL gå samman med Vulkan så mycket som möjligt och därmed få ännu bredare stöd. [24] [25] Detta demonstrerades med Apples Premiere Rush, som använder open source -kompilatorn clspv [26] för att sammanställa en stor del av OpenCL C -kärnkoden för en Vulkan -miljö på Android -enheter. [27] Senast tillkännagavs OpenCL Next för 2019 med ny information och betonades också att OpenCL: s "färdplan" är oberoende av Vulkan, så de två projekten kommer inte att gå ihop helt. [28]
OpenCL 3.0 (provisoriskt) släpptes den 27 april 2020. [29] Statusfinal nåddes den 30 september 2020 [30] [31]
Version 3.0.7 med några valfria tillägg tillkännagavs på IWOCL 2021. [32]
arkitektur
Ett OpenCL -system består av en värd och en eller flera OpenCL -enheter. En enhet består av en eller flera oberoende beräkningsenheter (engelska "beräkningsenhet", "CU" för kort). Med en processor med flera kärnor är dessa de tillgängliga kärnorna, som tillsammans utgör den centrala processorenheten och skuggorna för grafikkortet. Beräkningsenheten är indelad i ett eller flera behandlingselement (“PE” för kort). Värden distribuerar kärnorna (program, tyska kärnor) till de tillgängliga enheterna vid körning.
Det finns två typer av kärnor:
- OpenCL -kärnan
- Dessa skrivs på programmeringsspråket OpenCL C. OpenCL C är baserat på ISO C99 och har utökats med funktioner och datatyper för parallellbehandling.
- Ursprunglig kärna
- Dessa kärnor är valfria och implementeringsspecifika.
OpenCL -kärnorna sammanställs vid körning av OpenCL -kompilatorn och körs sedan av en OpenCL -enhet. Detta innebär att det vid utvecklingstidpunkten inte är nödvändigt att veta på vilken hårdvara programmet kommer att köras senare.
Beräkningarna utförs av de så kallade arbetsobjekten under körning. Dessa arbetsobjekt är arrangerade i ett en-, två- eller tredimensionellt rutnät via vilket arbetsobjekten kan adresseras. Arbetsobjekt grupperas i arbetsgrupper där synkronisering är möjlig och som har åtkomst till ett delat minne. En enskild arbetspost kan därför adresseras absolut, genom dess koordinat och relativt, genom koordinaten för den arbetsgrupp som innehåller den och koordinaten inom arbetsgruppen.
Minnesmodell
Det finns fem typer av lagring i OpenCL:
- Värdminne: Värdminnet är huvudprogrammets vanliga huvudminne. En OpenCL -kärna kan inte komma åt den direkt.
- globalt minne (globalt minne): Detta är minnet för OpenCL -kärnan. Varje instans av en kärna har slumpmässig åtkomst till hela området.
- konstant minne (konstant minne): Det konstanta minnet skiljer sig från det globala minnet som kärnan instanser detta minne bara läser, men inte kan ändras.
- lokal lagring (lokalt minne): En grupp av kärninstanser har slumpmässig åtkomst till ett litet område på vanligtvis 16 kiB lokalt minne. Varje grupp har sitt eget område som endast medlemmarna kan komma åt.
- Privat minne (privat minne): Detta minne är en kärna Instans reserverad. Andra kärninstanser och exekveringsprogrammet kan inte komma åt innehållet i detta minne.
OpenCL C
OpenCL C -språket är baserat på syntaxen för ISO C99 , utökad till att inkludera ytterligare datatyper och funktioner för parallellbehandling, men har också begränsats någon annanstans (se nedan). Det är därför inte en superset av C, men båda språken har mycket gemensamt.
Förutom datatyperna C99 stöder OpenCL C följande datatyper:
- hälften: 16 -bitars flyttal enligt IEEE 754r .
- Vektordatatyper: Datatyperna char , uchar , short , ushort , int , uint , long , ulong och float finns som vektorer med 2, 4, 8 och 16 element. Antalet element läggs till namnet på datatypen, t.ex. Exempel : uchar4 , float8 eller int16 . Med OpenCL 1.1 introducerades också treelementvektorer.
- image2d_t: En tvådimensionell bild.
- image3d_t: En tredimensionell bild.
- sampler_t: En provtagare som definierar hur en bild samplas.
- event_t: en händelsehanterare.
Följande datatyper var också reserverade för senare versioner av OpenCL:
- bool n : En vektor med sanningsvärden.
- dubbel, dubbel n : 64-bitars flytande punktnummer och vektorer. En förlängning för dubbel finns redan, men dess stöd krävs inte för OpenCL 1.0.
- halva n : En vektor med 16-bitars flyttal.
- quad, quad n : 128-bitars flyttal.
- komplex {halva | flyta | dubbel | quad}: Komplexa tal med varierande grad av precision.
- komplex {halva | flyta | dubbel | quad} n : vektorer av komplexa tal med varierande grad av precision.
- tänkt {hälften | flyta | dubbel | quad}: imaginära tal med varierande grad av precision.
- tänkt {hälften | flyta | dubbel | quad} n : vektorer av imaginära tal med olika precision.
- {flyta | dubbel} n x m : n x m matriser med 32 eller 64 bitars precision.
- lång dubbel, lång dubbel n : Flytpunktnummer och vektorer med åtminstone dubbelnog precisionen och högst precisionen i quad .
- lång lång, lång lång n : 128-bitars signerade heltal och vektorer.
- osignerad lång lång, osignerad lång lång n : 128-bitars osignerade heltal och vektorer.
Aritmetiska operationer ( +, -, *, /, %, ++, --
), jämförelseoperationer ( >, >=, ==, !=, <= <
), Bitoperatorer ( &, |, ^, ~
) och logiska operatörer ( &&, ||
) definieras både för skalära datatyper och för vektorer. Om de appliceras på vektorer utförs operationen komponent för komponent. Här beter sig OpenCL på samma sätt som kända skuggspråk som GLSL .
Även lånat från shader-språken finns ett antal matematiska funktioner som också utförs komponentmässigt, till exempel sinus, cosinus, root, minimum, maximum, etc.
Jämfört med C är OpenCL C bland annat begränsat till följande punkter:
- Det finns inga funktionspekare
- Rekursion är inte möjlig.
- Fält ("matriser") får inte ha en variabel längd.
Användning av OpenGL- och DirectX -objekt
OpenCL kan direkt komma åt objekt från OpenGL eller DirectX (endast under Windows), till exempel texturer. Detta innebär att OpenCL kan användas för att ändra texturer, till exempel utan att behöva kopiera data.
Tillägg
Precis som OpenGL kan OpenCL också kompletteras med ytterligare funktioner genom tillverkarspecifika tillägg. Exempel på tillägg som redan har definierats är:
- Dubbel precision flytande punkt nummer (64-bitars flytande punkt nummer, cl_khr_fp64 ).
- Halv precision flytande punktvektorer (16-bitars flytande punktnummer , cl_khr_fp16 ).
- Definiera typen av avrundning för flytande punktoperationer ( cl_khr_select_fprounding_mode ).
- Skriva i 3D -bilder ( cl_khr_3d_image_writes ).
Implementeringar
OpenCL kan implementeras för alla operativsystem och hårdvaruplattformar - precis som OpenGL och OpenAL . Det här är vad specifikationen för CPU: er, GPU: er, DSP: er och cellprocessorn handlar om. Det finns också en specifikation för inbyggda system med reducerade krav.
- AMD: OpenCL-implementeringen från AMD möjliggör användning av GPU: er via deras GPGPU-gränssnitt ATI-Stream och processorer med SSE3 för Linux och Windows. [33] Nuvarande grafikkort av generationerna GCN 4 (RX 400 / RX 500) och GCN 5 (Vega) stöder fullt ut OpenCL 2.0. [34] Detta gäller även grafikkorten för de äldre generationerna GCN 2 och GCN 3 . De föråldrade arkitekturerna GCN 1 och Terascale 2 stöder OpenCL 1.2. OpenCL 1.1 stöds från R700 -serien . Under Windows stöds också OpenCL 2.1 från drivrutin 19.1.1. Det är oklart här vilken hårdvara som kan dra nytta av detta. Vega -chips kan för närvarande bara fungera upp till OpenCL 2.0. [35] OpenCL 3.0 stöds för alla GCN- och RDNA -kort. De valfria elementen i OpenCL 2.x stöds på olika sätt som tidigare, beroende på hårdvara och system.
- ARM: Ytterligare implementeringar för GPU kommer från ARM , [36] Intel, [37] S3, [38] och VIA . [39]
- IBM: IBM erbjuder en implementering för Power -arkitekturen och Cell Broadband Engine . [40]
- Intel OpenCL SDK: Intel har också ett kommersiellt SDK (2.0 för GPU och 2.1 för CPU från Gen7 ). [41] [42] [43] [44]
- LLVM: OpenCL -implementeringarna från Nvidia, Intel och Apple är tekniskt baserade på LLVM , en teknik som Apple använder i macOS från version 10.5 i sin JIT - OpenGL -kompilator [45] och även i iOS.
- Nvidia: Nvidia erbjuder en OpenCL -implementering för sitt GPGPU -gränssnitt CUDA under Linux, Windows och macOS. [46] Generationen av Tesla -chipsen G80 och GT200 ( Nvidia Tesla ) stöder OpenCL 1.1 med de senaste drivrutinerna från version 341.95. [47] Fermi stöder OpenCL 1.1. OpenCL 1.2 (med chips från Kepler och Maxwell GPU) stöds högst. Med de tidigare drivrutinerna i 370 -serien stöder den nya Pascal GPU också bara OpenCL 1.2, både i GeForce 10 -serien och i Quadro- och Tesla -serien. Med drivrutinsversionen 378.66 stöds OpenCL 2.0 för första gången som en beta i viktiga funktioner. [48] Sedan 2021 stöds 3.0 från Kepler med de senaste drivrutinerna. Som tidigare stöds valfria element från 2.x endast delvis. [49]
Öppen källa:
- Intel Beignet: Intel har startat open source -projektet "Beignet" för Linux och Android. [50] [51] Senast, i november 2016, efter det långa stödet för OpenCL 1.2 (från Ivy Bridge), meddelades stödet för OpenCL 2.0. [52] Den nuvarande versionen är 1.3.2 med valfritt OpenCL 2.0 med behov av optimering.
- Intel Compute Runtime (NEO): Under kodnamnet NEO har en ny open source -drivrutin utvecklats för hårdvara från Skylake med OpenCL 2.1 -stöd (nu också från Broadwell). [53] OpenCL 2.2 följer snart i "Compute Runtime". [54] OpenCL 3.0 är för närvarande under utveckling för Tigerlake.
- ROCm: Som en del av OpenCompute -initiativet startade AMD ROCm -projektet i samarbete med öppen källkod. ROCm körs från generationens GCN 3 -grafikkort och processorer med PCI Express 3.0 (AMD Ryzen eller Intel Haswell). Funktionen för OpenCL 2.0 stöds. Sedan version 1.8 har processorer med PCIe 2.0 med AMD GCN 3 -grafikkort med lägre datorkraft också stöds experimentellt. ROCm version 2.4 har några prestandaförbättringar och stöd för TensorFlow 2.0. [55] Version 2.5 stöder Thrust -biblioteket med rocThrust. [56] Version 3.5 stöder OpenCL 2.2. [57] [58] Den nuvarande versionen är 4.1.1.
- POCL: Portable OpenCL (OpenCL 1.2, OpenCL 2.0 övervägande), [59] i version 1.0 med experimentell Nvidia Cuda -backend för användning av Nvidia GPU: er. Detta möjliggör Open Source OpenCL på Nvidia -hårdvara med betydligt fler alternativ än med Mesa. [60] [61] [62] På grund av bristen på optimering och programvara är prestandan ibland svag med en faktor 1: 5 till 1:10 jämfört med AMD Windows -implementeringen: med POCL 1.1 förbättras det ibland kraftigt och SPIR med SPIR-V stöds experimentellt. [63] Med version 1.2 stöds HWOC 2.0 och nu OpenCL 1.2 fullt ut. [64] [65] [66] [67] Med version 1.3 stöds macOS. [68] Version 1.4 stöder mer SPIR och SPIR-V. [69] Version 1.5 stöder nu också LLVM 10.0. [70] Version 1.6 visar stora framsteg inom emulering av OpenCL med CUDA. Det är lika snabbt som Nvidia -drivrutinen. För detta ändamål stöds Power PC 8/9 maskinvara och LLVM 11 igen. Förpackningen är nu mer flexibel. [71] Med manuell optimering är POCL på samma nivå som Intels beräkningstid. [72] POCL 1.7 stöder nu också Clang / LLVM 12 och de första OpenCL 3.0 -funktionerna har implementerats. [73]
- GalliumCompute (Clover): Med Clover [74] har en implementering för Linux under GPL utvecklats sedan mitten av 2011, som också är baserad på LLVM och är avsedd att använda en CPU eller - indirekt via Mesa 3D - ett grafikkort . Clover har integrerats i Mesa -projektet och är en del av GalliumCompute. [75] Vissa tester för OpenCL 1.0 till 1.2 har ännu inte godkänts. Med övergången från TGSI till NIR utvecklas OpenCL i Mesa mer starkt igen för att kunna användas med drivrutiner med öppen källkod för grafikkort från AMD (med RadeonSI och R600) och nVidia (med Nouveau). Dessutom finns det inget bildstöd på de olika nivåerna av OpenCL. [76]
- Shamrock: Shamrock är en utlöpare av Clover för Android ARM V7 +. [77] [78] OpenCL 1.2 stöds fullt ut. Khronos -testet godkändes senast med "OpenCL 2.0 Samples Suite" för exemplen upp till 1.2.
- triSYCL: Gratis OpenCL 2.2 -implementering med SYCL. Status: liten utveckling, inte komplett [79]
En lista över certifierade produkter är tillgänglig från Khronos. [80]
Liksom implementeringarna måste dessa klara testerna i Khronos Conformance Test Suite (CTS). [81]
Programvara
Många beräkningsintensiva program använder OpenCL för acceleration: [82]
Grafikprogram
- GIMP från version 2.8 [83] [84] [85] [86]
- Adobe Photoshop Creative Suite [87] [88]
- ImageMagick [89] [90]
- PhotoScan [91] [92]
- darktable [93] [94] [95] [96]
- Oskärpa [97]
- MVTec HALCON [98]
- Museum [99]
- SNABB: Bildbehandling för medicinska applikationer [100] [101]
- KLMeansCL: Plug-in för dämpare för AVISynth [102]
- UFO: Bildbehandling av synkrotronspår [103]
3D -renderer
- Autodesk Maya [104]
- Blender [105] [106] Utvecklarna av Blender klassificerar den aktuella statusen för OpenCL som "avstannad" med irriterande fel och inkonsekvent implementering av de för närvarande stödda GPU: erna från AMD och Intel, och stödet för OpenCL i Blender version 3.0 tas bort. Version 2.93 LTS kommer att vara den sista som stöder OpenCL. [107]
- LuxCoreRender [108]
- Houdini (programvara)
- mandelbulber : programvara för återgivning av 3D -fraktaler
Audio
- CUETools: Med CUERipper från CUETools kan FLAC -filerna konverteras särskilt snabbt från WAV -format till FLAC med FLACCL -funktionen med användning av OpenCL på moderna grafikkort. [109] Accelerationer med en faktor 10 till 100 är möjliga för denna del av ripprocessen, beroende på snabba grafikkort och SSD -datalagringsenheter jämfört med vanliga processorer och hårddiskar.
- CN24: semantiskt analysverktyg [110]
Video
- Handbroms [111]
- FFmpeg [112]
- Final Cut Pro X [113]
- RealFlow Hybrido2 [114]
- Sony Catalyst -familjen [115]
- MAGIX Vegas (tidigare Sony Vegas) [116] [117] [118]
- AlchemistXF [119]
- vReveal från MotionDSP [120] [121]
- Total Media Theatre (TMT) från ArcSoft [122]
- C4D
simulering
- Avancerat simuleringsbibliotek [123]
- SecondSpace OpenCL -program för simulering av vågor i 2D -utrymme.
- PATRIC Particle-in-cell-Code [124]
- Bullet: GPU -styv kroppssimulering med OpenCL [125] [126]
- Monte Carlo -simulering på AM57x [127]
- Intel Demo Realtime Shallow Water Simulation [128] [129]
- Intel -kodprover [130]
- GROMACS molekylära simuleringar från version 5.1 [131] [132] Från version 2021 kommer OpenCL att klassificeras som utfasad och kommer att ersättas av SYCL i framtiden. [133]
- FEM: SIEMENS NX Nastran 9.1+ och Simulia Abaqus 6.11+ [134] [135] [136] [137]
- Neurala nätverk: clgen: Deep Learning Program Generator [138]
- Neurala nätverk: nengo_ocl hjärnsimuleringar med Nengo [139]
- Dekryptering: JohnTheRipper [140]
webb
Bibliotek
- ACL: AMD Compute Libraries [143]
- clBLAS: komplett uppsättning BLAS nivå 1, 2 & 3 rutiner [144] vidare i BLAS
- clSparse [145] : Rutiner för glesa matriser
- clFFT [146] : snabb Fourier -transform
- clRNG [147] : slumptalsgeneratorer MRG31k3p, MRG32k3a, LFSR113 och Philox-4 × 32-10
- AMGCL: AMG algebraisk multi-grid-lösning [148]
- ArrayFire: är för parallell databehandling med ett lättanvänt API med JIT-kompilator (öppen källkod) [149]
- Bult: STL -kompatibelt bibliotek för att skapa accelererade dataparallellapplikationer [150]
- Boost.Compute: GPU / Parallel C ++ - bibliotek för OpenCL [151]
- Klor: C ++ 11 -bibliotek för enkel användning av OpenCL 1.2+ [152]
- CLBlast: inställd clBlas [153]
- clMAGMA: OpenCL -port för MAGMA -projektet, ett linjärt algebrabibliotek som liknar LAPACK men för multicore + GPU -system [154] [155]
- DeepCL: Library for Neural Training [156]
- GEGL-OpenCL: Gimp GEGL med OpenCL [157]
- GpyFFT: Python Wrapper för FFT med clFFT [158]
- MOT: Maastricht Optimization Toolbox [159]
- Neanderthal: BLAS och LAPACK implementering för Clojure [160]
- Netlib BLAS [161] mer i BLAS
- OpenCLGA: genetiska algoritmer med PYOpenCL [162]
- PARALUTION [163]
- random123: Samling av motbaserade slumptalsgeneratorer (CBRNG) [164]
- VexCL: vektoruttrycksmallbibliotek (MIT -licens) [165]
- ViennaCL: gratis open source linjärt algebrabibliotek vid Wiens tekniska universitet [166]
- HIP: Open Source C ++ Toolkit för OpenCL och Cuda [167]
- TF-Coriander-projekt: Tensorflow med OpenCL 1.2 [170]
Språkkoppling
- ClojureCL: parallell OpenCL 2.0 med Clojure [171]
- dcompute: ursprunglig körning av D [172]
- Erlang OpenCL -bindning [173]
- OpenCLAda: Binder Ada till OpenCL [174]
- OpenCL.jl: Julia Bindings [175]
- PyOpenCL: Python -koppling [176]
- JavaScript: WebCL
webb-länkar
- OpenCL på Khronos Group - Officiell webbplats (engelska)
- OpenCL på AMD
- OpenCL på Intel
- OpenCL på Nvidia (engelska)
- OpenCL på Texas Instruments
- Bärbar OpenCL POCL
Handledningar
- OpenCL. Universitetet i Erlangen, arkiverat från originalet den 4 mars 2016 ; åtkomst den 6 januari 2019 .
Individuella bevis
- ↑ www.khronos.org . 27 april 2020.
- ^ Khronos OpenCL API -registerspecifikation och rubrikfiler
- ↑ http://developer.amd.com/wordpress/media/2012/10/opencl-1.0.48.pdf
- ↑ https://www.khronos.org/files/opencl-quick-reference-card.pdf
- ↑ https://www.khronos.org/registry/OpenCL/specs/opencl-1.1.pdf
- ↑ https://www.khronos.org/files/opencl-1-1-quick-reference-card.pdf
- ↑ https://www.khronos.org/registry/OpenCL/specs/opencl-1.2.pdf
- ↑ https://www.khronos.org/files/opencl-1-2-quick-reference-card.pdf
- ↑ https://www.khronos.org/registry/OpenCL/specs/opencl-2.0.pdf
- ↑ https://www.khronos.org/files/opencl20-quick-reference-card.pdf
- ↑ "Heise: OpenCL på Mac" Heise: OpenCL på Mac 2014
- ↑ "Apple -support: OpenCL på Mac -datorer" endast OpenCL 1.0 till 1.2 på macOS -datorer, ingen OpenCL 2.x (från och med april 2016)
- ↑ http://developer.amd.com/wordpress/media/2013/01/Introduction_to_OpenCL_Programming-Training_Guide-201005.pdf
- ↑ http://developer.download.nvidia.com/compute/DevZone/docs/html/OpenCL/doc/OpenCL_Programming_Guide.pdf
- ^ "Khronos OpenCL -översikt 2.1" PDF med en översikt över OpenCL 2.1 på engelska
- ↑ https://www.heise.de/developer/meldung/Khronos-aktualisiert-Spezierungen-fuer-OpenCL-2-1-und-SPIR-V-1-0-2922960.html
- ↑ https://www.khronos.org/registry/OpenCL/specs/opencl-2.1.pdf
- ↑ https://www.khronos.org/files/opencl21-reference-guide.pdf
- ↑ https://www.heise.de/developer/meldung/Khronos-veroeffentlicht-vorlaeufige-Spezifikation-fuer-OpenCL-2-2-3177422.html
- ↑ https://www.khronos.org/news/permalink/khronos-releases-opencl-2.2-with-spir-v-1.2
- ↑ https://www.khronos.org/blog/opencl-2.2-maintenance-update-released
- ↑ https://www.khronos.org/registry/OpenCL/specs/2.2/pdf/OpenCL_API.pdf
- ↑ https://www.khronos.org/files/opencl22-reference-guide.pdf
- ↑ https://www.pcper.com/reviews/General-Tech/Breaking-OpenCL-Merging-Roadmap-Vulkan
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=IWOCL-2017-OpenCL
- ↑ https://github.com/google/clspv
- ↑ Vulkan Update SIGGRAPH 2019. , s. 24.
- ↑ https://www.phoronix.com/scan.php?page=article&item=siggraph-2018-khr&num=2
- ↑ https://www.phoronix.com/scan.php?page=article&item=opencl-30-spec&num=1
- ↑ https://www.khronos.org/registry/OpenCL/specs/3.0-unified/pdf/OpenCL_API.pdf
- ↑ https://www.khronos.org/files/opencl30-reference-guide.pdf
- ↑ https://www.iwocl.org/wp-content/uploads/k03-iwocl-syclcon-2021-trevett-updated.mp4.pdf
- ↑ AMD på ATI Stream och OpenCL ( Memento från 9 augusti 2009 i Internetarkivet ) (1 oktober 2009)
- ↑ https://www.amd.com/en/support/kb/release-notes/rn-pro-win-18-7-1
- ↑ https://www.geeks3d.com/20190111/amd-adrenalin-2019-edition-19-1-1-released-with-better-fortnite-support-and-vulkan-1-1-96/
- ^ ARM presenterar ny grafikprocessor med OpenCL -stöd . ( Memento den 14 november 2010 i Internetarkivet ) 10 oktober 2010
- ^ Intel hoppar på OpenCL -vagnen med "Sandy Bridge" . 13 augusti 2010
- ^ S3 Graphics lanserade den inbyggda grafikprocessorn Chrome 5400E . 27 oktober 2009
- ↑ VIA ger förbättrad VN1000 grafikprocessor . ( Memento av 15 december 2009 i Internetarkivet ) 10 december 2009
- ↑ OpenCL Development Kit för Linux on Power (30 oktober 2009)
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Intel-OpenCL-SDK-Linux-2016R2
- ↑ https://software.intel.com/en-us/articles/whats-new-code-builder-2016-r2
- ↑ https://software.intel.com/en-us/whats-new-code-builder-2016-r3
- ↑ https://software.intel.com/en-us/blogs/2017/07/28/2017-opencl-whats-new
- ^ Chris Lattner: En cool användning av LLVM på Apple: OpenGL -stacken . ( Memento den 4 november 2006 i Internetarkivet ) 15 augusti 2006 (LLVM -chefsutvecklare, Apple -anställd)
- ↑ Nvidia till OpenCL (28 september 2009)
- ↑ http://de.download.nvidia.com/Windows/Quadro_Certified/341.95/341.95-win8-win7-winvista-quadro-grid-release-notes.pdf
- ↑ https://streamcomputing.eu/blog/2017-02-22/nvidia-enables-opencl-2-0-beta-support/
- ↑ https://www.geeks3d.com/20210330/nvidia-geforce-465-89-graphics-driver-released-vulkan-1-2-168-opencl-3-0-resizable-bar/
- ↑ https://www.freedesktop.org/wiki/Software/Beignet/
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Intel-Beignet-Android
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=Beignet-Birthday-CL2
- ↑ https://github.com/intel/compute-runtime/releases
- ↑ Michael Larabel: Intel Open-Sources LLVM Graphics Compiler, Compute Runtime With OpenCL 2.1+. phrononix, 16 februari 2018, öppnade 22 april 2018 .
- ^ Michael Larabel: Radeon ROCm 2.4 släppt med TensorFlow 2.0 -kompatibilitet, Infinity Fabric Support. I: Phoronix. 8 maj 2019, öppnad 8 maj 2019 .
- ↑ https://www.phoronix.com/scan.php?page=news_item&px=Radeon-ROCm-2.5-Released
- ↑ https://github.com/RadeonOpenCompute/ROCm/tree/roc-3.5.0
- ↑ https://www.phoronix.com/scan.php?page=news_item&px=Radeon-ROCm-3.5-Released
- ↑ http://portablecl.org/docs/html/features.html#
- ↑ http://portablecl.org/cuda-backend.html
- ↑ https://www.phoronix.com/scan.php?page=article&item=pocl10-epyc-xeon&num=1
- ↑ http://portablecl.org/pocl-1.0.html
- ↑ http://portablecl.org/pocl-1.1.html
- ↑ http://portablecl.org/pocl-1.2.html
- ↑ https://github.com/pocl/pocl/wiki/OpenCL-1.2-missing-features
- ↑ https://github.com/pocl/pocl/issues?q=milestone%3A1.2+is%3Aclosed
- ↑ https://github.com/pocl/pocl/releases
- ↑ http://portablecl.org/pocl-1.3.html
- ↑ http://portablecl.org/pocl-1.4.html
- ↑ http://portablecl.org/pocl-1.5.html
- ↑ http://portablecl.org/pocl-1.6.html
- ↑ https://www.iwocl.org/wp-content/uploads/30-iwocl-syclcon-2021-baumann-slides.pdf
- ↑ http://portablecl.org/pocl-1.7.html
- ^ Clover -projektwebbplats, Clover -utvecklares blogg
- ↑ https://www.x.org/wiki/Events/XDC2013/XDC2013TomStellardCloverStatus/XDC2013TomStellardCloverStatus.pdf
- ↑https://mesamatrix.net/
- ↑ https://s3.amazonaws.com/connect.linaro.org/lca14/presentations/LCA14-412-%20GPGPU%20on%20ARM%20SoC%20session.pdf
- ↑ https://git.linaro.org/gpgpu/shamrock.git/about/
- ↑ https://github.com/triSYCL/triSYCL
- ↑ https://www.khronos.org/conformance/adopters/conformant-products#opencl
- ↑ https://github.com/KhronosGroup/OpenCL-CTS
- ↑ http://www.amd.com/de-de/solutions/professional/hpc/opencl
- ↑ https://www.khronos.org/news/permalink/gimp-2.8-rc-1-includes-opencl-acceleration
- ↑ http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-5.html
- ↑ https://www.phoronix.com/scan.php?page=news_item&px=More-GEGL-OpenCL-Support
- ↑ https://wiki.gimp.org/wiki/Roadmap
- ↑ http://www.amd.com/en-us/press-releases/Pages/amd-and-adobe-creative-suite-6-2012apr23.aspx
- ↑ http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-6.html
- ↑ ImageMagick: Architecture. Abgerufen am 7. August 2015 .
- ↑ http://www.imagemagick.org/script/opencl.php
- ↑ http://www.agisoft.com/downloads/system-requirements/
- ↑ http://cgpress.org/archives/cgreviews/photoscan-review/2
- ↑ http://www.darktable.org/2012/03/darktable-and-opencl/
- ↑ Archivierte Kopie ( Memento vom 2. Mai 2016 im Internet Archive )
- ↑ http://www.phoronix.com/scan.php?page=article&item=darktable-opencl-gpu&num=1
- ↑ http://www.phoronix.com/scan.php?page=article&item=darktable-22-amdnv&num=1
- ↑http://www.blurate.com/
- ↑ http://www.halcon.com/
- ↑ http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-12.html
- ↑ https://github.com/smistad/FAST
- ↑ https://www.iwocl.org/wp-content/uploads/17-iwocl-syclcon-2021-smistad-slides.pdf
- ↑ https://github.com/Khanattila/KNLMeansCL
- ↑ http://ufo-core.readthedocs.io/en/latest/using/index.html
- ↑ http://semiaccurate.com/2012/06/11/amd-and-autodesk-speed-up-maya-with-opencl/
- ↑ http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
- ↑ http://developer.amd.com/community/blog/2015/07/10/collaboration-and-open-source-at-amd-blender-cycles/
- ↑ https://www.heise.de/news/Blender-3-Kuenftige-Cycles-X-Engine-des-Open-Source-Renderers-ohne-OpenCL-6035005.html
- ↑ https://wiki.luxcorerender.org/LuxMark
- ↑ Vergleich Konvertierung mit CPU Core i7 und verschiedenen GPU mit FLACCL
- ↑ https://github.com/cvjena/cn24
- ↑ https://handbrake.fr/news.php?article=27
- ↑ Heise: FFmpeg mit OpenCL
- ↑ http://support.apple.com/en-us/HT202239
- ↑ http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
- ↑ http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
- ↑ http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
- ↑ http://www.sonycreativesoftware.com/de/
- ↑ http://www.vegascreativesoftware.com/de/
- ↑ https://sam.com/products/alchemist-xf-%E2%80%93-highest-quality-file-based-format-and-framerate-conversion-software/c-24/p-228
- ↑ http://www.tomshardware.com/reviews/opencl-simhd-vreveal,3122-11.html
- ↑ http://www.tomshardware.de/opencl-simhd-vreveal,testberichte-240965.html
- ↑ http://www.tomshardware.de/opencl-simhd-vreveal,testberichte-240965-3.html
- ↑ http://asl.org.il/
- ↑ http://web-docs.gsi.de/~sappel/diplomarbeit_jutta_fitzek.pdf
- ↑ http://www.multithreadingandvfx.org/course_notes/GPU_rigidbody_using_OpenCL.pdf
- ↑ http://bulletphysics.org/wordpress/
- ↑ http://www.ti.com/lit/ug/tiduar9/tiduar9.pdf
- ↑ https://www.khronos.org/assets/uploads/developers/library/2011_GDC_OpenCL/Intel-OpenCL-Water-Sim_GDC-Mar11.pdf
- ↑ https://software.intel.com/sites/default/files/managed/2c/79/intel_ocl_shallow_water_win.zip
- ↑ https://software.intel.com/en-us/intel-opencl-support/code-samples
- ↑ http://manual.gromacs.org/documentation/5.1/install-guide/index.html#opencl-gpu-acceleration
- ↑ https://github.com/StreamComputing/gromacs
- ↑ https://www.iwocl.org/wp-content/uploads/22-iwocl-syclcon-2021-alekseenko-slides.pdf
- ↑ http://www.cadplace.de/Hardware/Hardware-allgemein/OpenCL-bietet-Simulationsperformance-fuer-Nastran-und-Abaqus
- ↑ https://www.amd.com/Documents/abaqus-solution-sheet.pdf
- ↑ https://www.amd.com/Documents/nastran-solution-sheet.pdf
- ↑ Archivierte Kopie ( Memento vom 14. Oktober 2016 im Internet Archive )
- ↑ https://github.com/ChrisCummins/clgen
- ↑ https://github.com/nengo/nengo_ocl
- ↑ https://github.com/magnumripper/JohnTheRipper
- ↑ http://techcrunch.com/2014/03/19/webcl-will-soon-let-web-developers-harness-the-power-of-multi-core-gpus-and-cpus-from-the-browser/
- ↑ http://techcrunch.com/2014/03/19/webcl-will-soon-let-web-developers-harness-the-power-of-multi-core-gpus-and-cpus-from-the-browser/
- ↑ Archivierte Kopie ( Memento vom 16. November 2016 im Internet Archive )
- ↑ https://github.com/clMathLibraries/clBLAS
- ↑ https://github.com/clMathLibraries/clSPARSE
- ↑ https://github.com/clMathLibraries/clFFT
- ↑ https://github.com/clMathLibraries/clRNG
- ↑ https://github.com/ddemidov/amgcl
- ↑ http://arrayfire.com/
- ↑ Archivierte Kopie ( Memento vom 16. März 2015 im Internet Archive )
- ↑ https://github.com/boostorg/compute
- ↑ https://github.com/Polytonic/Chlorine
- ↑ https://github.com/CNugteren/CLBlast
- ↑ http://icl.cs.utk.edu/magma/software/view.html?id=207
- ↑ Archivierte Kopie ( Memento vom 29. April 2016 im Internet Archive )
- ↑ https://github.com/hughperkins/DeepCL
- ↑ https://github.com/OpenCL/GEGL-OpenCL
- ↑ https://github.com/geggo/gpyfft
- ↑ https://github.com/cbclab/MOT
- ↑ https://github.com/uncomplicate/neanderthal
- ↑ http://www.netlib.org/blas/index.html
- ↑ https://github.com/PyOCL/OpenCLGA
- ↑ http://www.paralution.com/
- ↑ http://www.thesalmons.org/john/random123/releases/latest/docs/index.html
- ↑ https://github.com/ddemidov/vexcl
- ↑ http://viennacl.sourceforge.net/
- ↑ https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP
- ↑ http://www.phoronix.com/scan.php?page=news_item&px=CUDA-On-CL-Coriander
- ↑ http://www.iwocl.org/wp-content/uploads/iwocl2017-hugh-perkins-cuda-cl.pdf
- ↑ https://github.com/hughperkins/tf-coriander
- ↑ https://github.com/uncomplicate/clojurecl
- ↑ https://github.com/libmir/dcompute
- ↑ https://github.com/tonyrog/cl
- ↑ https://github.com/flyx/OpenCLAda
- ↑ https://github.com/JuliaGPU/OpenCL.jl
- ↑ https://github.com/pyopencl/pyopencl