OpenCL

Från Wikipedia, den fria encyklopedin
Hoppa till navigation Hoppa till sökning
OpenCL

OpenCL logo.svg
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

Plattformsmodell

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

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.
  • 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

3D -renderer

En programvara för 3D -rendering stöder OpenCL
  • 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

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

  • 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]
  • Project Coriander: Konvertering av CUDA till OpenCL 1.2 med CUDA-on-CL [168] [169]
  • 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


Handledningar

  • OpenCL. Universitetet i Erlangen, arkiverat från originalet den 4 mars 2016 ; åtkomst den 6 januari 2019 .

Individuella bevis

  1. www.khronos.org . 27 april 2020.
  2. ^ Khronos OpenCL API -registerspecifikation och rubrikfiler
  3. http://developer.amd.com/wordpress/media/2012/10/opencl-1.0.48.pdf
  4. https://www.khronos.org/files/opencl-quick-reference-card.pdf
  5. https://www.khronos.org/registry/OpenCL/specs/opencl-1.1.pdf
  6. https://www.khronos.org/files/opencl-1-1-quick-reference-card.pdf
  7. https://www.khronos.org/registry/OpenCL/specs/opencl-1.2.pdf
  8. https://www.khronos.org/files/opencl-1-2-quick-reference-card.pdf
  9. https://www.khronos.org/registry/OpenCL/specs/opencl-2.0.pdf
  10. https://www.khronos.org/files/opencl20-quick-reference-card.pdf
  11. "Heise: OpenCL på Mac" Heise: OpenCL på Mac 2014
  12. "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)
  13. http://developer.amd.com/wordpress/media/2013/01/Introduction_to_OpenCL_Programming-Training_Guide-201005.pdf
  14. http://developer.download.nvidia.com/compute/DevZone/docs/html/OpenCL/doc/OpenCL_Programming_Guide.pdf
  15. ^ "Khronos OpenCL -översikt 2.1" PDF med en översikt över OpenCL 2.1 på engelska
  16. https://www.heise.de/developer/meldung/Khronos-aktualisiert-Spezierungen-fuer-OpenCL-2-1-und-SPIR-V-1-0-2922960.html
  17. https://www.khronos.org/registry/OpenCL/specs/opencl-2.1.pdf
  18. https://www.khronos.org/files/opencl21-reference-guide.pdf
  19. https://www.heise.de/developer/meldung/Khronos-veroeffentlicht-vorlaeufige-Spezifikation-fuer-OpenCL-2-2-3177422.html
  20. https://www.khronos.org/news/permalink/khronos-releases-opencl-2.2-with-spir-v-1.2
  21. https://www.khronos.org/blog/opencl-2.2-maintenance-update-released
  22. https://www.khronos.org/registry/OpenCL/specs/2.2/pdf/OpenCL_API.pdf
  23. https://www.khronos.org/files/opencl22-reference-guide.pdf
  24. https://www.pcper.com/reviews/General-Tech/Breaking-OpenCL-Merging-Roadmap-Vulkan
  25. http://www.phoronix.com/scan.php?page=news_item&px=IWOCL-2017-OpenCL
  26. https://github.com/google/clspv
  27. Vulkan Update SIGGRAPH 2019. , s. 24.
  28. https://www.phoronix.com/scan.php?page=article&item=siggraph-2018-khr&num=2
  29. https://www.phoronix.com/scan.php?page=article&item=opencl-30-spec&num=1
  30. https://www.khronos.org/registry/OpenCL/specs/3.0-unified/pdf/OpenCL_API.pdf
  31. https://www.khronos.org/files/opencl30-reference-guide.pdf
  32. https://www.iwocl.org/wp-content/uploads/k03-iwocl-syclcon-2021-trevett-updated.mp4.pdf
  33. AMD på ATI Stream och OpenCL ( Memento från 9 augusti 2009 i Internetarkivet ) (1 oktober 2009)
  34. https://www.amd.com/en/support/kb/release-notes/rn-pro-win-18-7-1
  35. https://www.geeks3d.com/20190111/amd-adrenalin-2019-edition-19-1-1-released-with-better-fortnite-support-and-vulkan-1-1-96/
  36. ^ ARM presenterar ny grafikprocessor med OpenCL -stöd . ( Memento den 14 november 2010 i Internetarkivet ) 10 oktober 2010
  37. ^ Intel hoppar på OpenCL -vagnen med "Sandy Bridge" . 13 augusti 2010
  38. ^ S3 Graphics lanserade den inbyggda grafikprocessorn Chrome 5400E . 27 oktober 2009
  39. VIA ger förbättrad VN1000 grafikprocessor . ( Memento av 15 december 2009 i Internetarkivet ) 10 december 2009
  40. OpenCL Development Kit för Linux on Power (30 oktober 2009)
  41. http://www.phoronix.com/scan.php?page=news_item&px=Intel-OpenCL-SDK-Linux-2016R2
  42. https://software.intel.com/en-us/articles/whats-new-code-builder-2016-r2
  43. https://software.intel.com/en-us/whats-new-code-builder-2016-r3
  44. https://software.intel.com/en-us/blogs/2017/07/28/2017-opencl-whats-new
  45. ^ 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)
  46. Nvidia till OpenCL (28 september 2009)
  47. http://de.download.nvidia.com/Windows/Quadro_Certified/341.95/341.95-win8-win7-winvista-quadro-grid-release-notes.pdf
  48. https://streamcomputing.eu/blog/2017-02-22/nvidia-enables-opencl-2-0-beta-support/
  49. https://www.geeks3d.com/20210330/nvidia-geforce-465-89-graphics-driver-released-vulkan-1-2-168-opencl-3-0-resizable-bar/
  50. https://www.freedesktop.org/wiki/Software/Beignet/
  51. http://www.phoronix.com/scan.php?page=news_item&px=Intel-Beignet-Android
  52. http://www.phoronix.com/scan.php?page=news_item&px=Beignet-Birthday-CL2
  53. https://github.com/intel/compute-runtime/releases
  54. Michael Larabel: Intel Open-Sources LLVM Graphics Compiler, Compute Runtime With OpenCL 2.1+. phrononix, 16 februari 2018, öppnade 22 april 2018 .
  55. ^ 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 .
  56. https://www.phoronix.com/scan.php?page=news_item&px=Radeon-ROCm-2.5-Released
  57. https://github.com/RadeonOpenCompute/ROCm/tree/roc-3.5.0
  58. https://www.phoronix.com/scan.php?page=news_item&px=Radeon-ROCm-3.5-Released
  59. http://portablecl.org/docs/html/features.html#
  60. http://portablecl.org/cuda-backend.html
  61. https://www.phoronix.com/scan.php?page=article&item=pocl10-epyc-xeon&num=1
  62. http://portablecl.org/pocl-1.0.html
  63. http://portablecl.org/pocl-1.1.html
  64. http://portablecl.org/pocl-1.2.html
  65. https://github.com/pocl/pocl/wiki/OpenCL-1.2-missing-features
  66. https://github.com/pocl/pocl/issues?q=milestone%3A1.2+is%3Aclosed
  67. https://github.com/pocl/pocl/releases
  68. http://portablecl.org/pocl-1.3.html
  69. http://portablecl.org/pocl-1.4.html
  70. http://portablecl.org/pocl-1.5.html
  71. http://portablecl.org/pocl-1.6.html
  72. https://www.iwocl.org/wp-content/uploads/30-iwocl-syclcon-2021-baumann-slides.pdf
  73. http://portablecl.org/pocl-1.7.html
  74. ^ Clover -projektwebbplats, Clover -utvecklares blogg
  75. https://www.x.org/wiki/Events/XDC2013/XDC2013TomStellardCloverStatus/XDC2013TomStellardCloverStatus.pdf
  76. https://mesamatrix.net/
  77. https://s3.amazonaws.com/connect.linaro.org/lca14/presentations/LCA14-412-%20GPGPU%20on%20ARM%20SoC%20session.pdf
  78. https://git.linaro.org/gpgpu/shamrock.git/about/
  79. https://github.com/triSYCL/triSYCL
  80. https://www.khronos.org/conformance/adopters/conformant-products#opencl
  81. https://github.com/KhronosGroup/OpenCL-CTS
  82. http://www.amd.com/de-de/solutions/professional/hpc/opencl
  83. https://www.khronos.org/news/permalink/gimp-2.8-rc-1-includes-opencl-acceleration
  84. http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-5.html
  85. https://www.phoronix.com/scan.php?page=news_item&px=More-GEGL-OpenCL-Support
  86. https://wiki.gimp.org/wiki/Roadmap
  87. http://www.amd.com/en-us/press-releases/Pages/amd-and-adobe-creative-suite-6-2012apr23.aspx
  88. http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-6.html
  89. ImageMagick: Architecture. Abgerufen am 7. August 2015 .
  90. http://www.imagemagick.org/script/opencl.php
  91. http://www.agisoft.com/downloads/system-requirements/
  92. http://cgpress.org/archives/cgreviews/photoscan-review/2
  93. http://www.darktable.org/2012/03/darktable-and-opencl/
  94. Archivierte Kopie ( Memento vom 2. Mai 2016 im Internet Archive )
  95. http://www.phoronix.com/scan.php?page=article&item=darktable-opencl-gpu&num=1
  96. http://www.phoronix.com/scan.php?page=article&item=darktable-22-amdnv&num=1
  97. http://www.blurate.com/
  98. http://www.halcon.com/
  99. http://www.tomshardware.de/photoshop-cs6-gimp-aftershot-pro-opencl-opengl,testberichte-241066-12.html
  100. https://github.com/smistad/FAST
  101. https://www.iwocl.org/wp-content/uploads/17-iwocl-syclcon-2021-smistad-slides.pdf
  102. https://github.com/Khanattila/KNLMeansCL
  103. http://ufo-core.readthedocs.io/en/latest/using/index.html
  104. http://semiaccurate.com/2012/06/11/amd-and-autodesk-speed-up-maya-with-opencl/
  105. http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
  106. http://developer.amd.com/community/blog/2015/07/10/collaboration-and-open-source-at-amd-blender-cycles/
  107. https://www.heise.de/news/Blender-3-Kuenftige-Cycles-X-Engine-des-Open-Source-Renderers-ohne-OpenCL-6035005.html
  108. https://wiki.luxcorerender.org/LuxMark
  109. Vergleich Konvertierung mit CPU Core i7 und verschiedenen GPU mit FLACCL
  110. https://github.com/cvjena/cn24
  111. https://handbrake.fr/news.php?article=27
  112. Heise: FFmpeg mit OpenCL
  113. http://support.apple.com/en-us/HT202239
  114. http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
  115. http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
  116. http://streamcomputing.eu/blog/2013-12-28/professional-consumer-media-software-opencl/
  117. http://www.sonycreativesoftware.com/de/
  118. http://www.vegascreativesoftware.com/de/
  119. https://sam.com/products/alchemist-xf-%E2%80%93-highest-quality-file-based-format-and-framerate-conversion-software/c-24/p-228
  120. http://www.tomshardware.com/reviews/opencl-simhd-vreveal,3122-11.html
  121. http://www.tomshardware.de/opencl-simhd-vreveal,testberichte-240965.html
  122. http://www.tomshardware.de/opencl-simhd-vreveal,testberichte-240965-3.html
  123. http://asl.org.il/
  124. http://web-docs.gsi.de/~sappel/diplomarbeit_jutta_fitzek.pdf
  125. http://www.multithreadingandvfx.org/course_notes/GPU_rigidbody_using_OpenCL.pdf
  126. http://bulletphysics.org/wordpress/
  127. http://www.ti.com/lit/ug/tiduar9/tiduar9.pdf
  128. https://www.khronos.org/assets/uploads/developers/library/2011_GDC_OpenCL/Intel-OpenCL-Water-Sim_GDC-Mar11.pdf
  129. https://software.intel.com/sites/default/files/managed/2c/79/intel_ocl_shallow_water_win.zip
  130. https://software.intel.com/en-us/intel-opencl-support/code-samples
  131. http://manual.gromacs.org/documentation/5.1/install-guide/index.html#opencl-gpu-acceleration
  132. https://github.com/StreamComputing/gromacs
  133. https://www.iwocl.org/wp-content/uploads/22-iwocl-syclcon-2021-alekseenko-slides.pdf
  134. http://www.cadplace.de/Hardware/Hardware-allgemein/OpenCL-bietet-Simulationsperformance-fuer-Nastran-und-Abaqus
  135. https://www.amd.com/Documents/abaqus-solution-sheet.pdf
  136. https://www.amd.com/Documents/nastran-solution-sheet.pdf
  137. Archivierte Kopie ( Memento vom 14. Oktober 2016 im Internet Archive )
  138. https://github.com/ChrisCummins/clgen
  139. https://github.com/nengo/nengo_ocl
  140. https://github.com/magnumripper/JohnTheRipper
  141. http://techcrunch.com/2014/03/19/webcl-will-soon-let-web-developers-harness-the-power-of-multi-core-gpus-and-cpus-from-the-browser/
  142. http://techcrunch.com/2014/03/19/webcl-will-soon-let-web-developers-harness-the-power-of-multi-core-gpus-and-cpus-from-the-browser/
  143. Archivierte Kopie ( Memento vom 16. November 2016 im Internet Archive )
  144. https://github.com/clMathLibraries/clBLAS
  145. https://github.com/clMathLibraries/clSPARSE
  146. https://github.com/clMathLibraries/clFFT
  147. https://github.com/clMathLibraries/clRNG
  148. https://github.com/ddemidov/amgcl
  149. http://arrayfire.com/
  150. Archivierte Kopie ( Memento vom 16. März 2015 im Internet Archive )
  151. https://github.com/boostorg/compute
  152. https://github.com/Polytonic/Chlorine
  153. https://github.com/CNugteren/CLBlast
  154. http://icl.cs.utk.edu/magma/software/view.html?id=207
  155. Archivierte Kopie ( Memento vom 29. April 2016 im Internet Archive )
  156. https://github.com/hughperkins/DeepCL
  157. https://github.com/OpenCL/GEGL-OpenCL
  158. https://github.com/geggo/gpyfft
  159. https://github.com/cbclab/MOT
  160. https://github.com/uncomplicate/neanderthal
  161. http://www.netlib.org/blas/index.html
  162. https://github.com/PyOCL/OpenCLGA
  163. http://www.paralution.com/
  164. http://www.thesalmons.org/john/random123/releases/latest/docs/index.html
  165. https://github.com/ddemidov/vexcl
  166. http://viennacl.sourceforge.net/
  167. https://github.com/GPUOpen-ProfessionalCompute-Tools/HIP
  168. http://www.phoronix.com/scan.php?page=news_item&px=CUDA-On-CL-Coriander
  169. http://www.iwocl.org/wp-content/uploads/iwocl2017-hugh-perkins-cuda-cl.pdf
  170. https://github.com/hughperkins/tf-coriander
  171. https://github.com/uncomplicate/clojurecl
  172. https://github.com/libmir/dcompute
  173. https://github.com/tonyrog/cl
  174. https://github.com/flyx/OpenCLAda
  175. https://github.com/JuliaGPU/OpenCL.jl
  176. https://github.com/pyopencl/pyopencl