OpenCL

OpenCL (inglise Open Computing Language) on programmide kirjutamiseks mõeldud keel, mis toimib enamikul heterogeensetel platvormidel. Programmeerimiskeelt, mida kasutatakse programmide kirjutamiseks nimetatakse OpenCL Cks ja põhineb C99l. Järgnev on maatriksi korrutamise algoritm OpenCL C keeles: // Korrutatakse A*x, tulemus tähistatakse y. // A on rea tähis maatriksis, tähendab, et (i,j) element sisaldub tähes A[i*ncols+j]. __kernel void matvec(__global const float *A, __global const float *x, uint ncols, __global float *y) { size_t i = get_global_id(0); // Global id-d, kasutatakse rea indeksina. __global float const *a = &A[i*ncols]; float sum = 0.f; for (size_t j = 0; j < ncols; j++) { sum += a[j] * x[j]; } y[i] = sum; } OpenCL arendati välja Apple Inc. poolt, kellele see ka kuulub, ja on loodud koostöös AMD, IBM, Qualcomm, Intel ja Nvidia meeskondadega. Apple edastas esialgse palve Khronos Groupile. 16. juunil 2008 moodustati Khronos Compute Working Groupi meeskond, kus olid erinevad esindajad riistvara ja tarkvara firmadest. See meeskond töötas viis kuud, et lõpetada OpenCL 1.0 detailsete tehniliste nõuetega. Tehnilised nõuded vaadati Khronosi liikmete poolt üle ja toodi avalikkuse ette 8. detsembril 2008. Anti välja 28. augustil 2009 koos operatsioonisüsteemiga Mac OS X Snow Leopard. AMD võttis kasutusele OpenCL-i mõned kuud hiljem 6. augustil 2008. Siis järgnesid Nvidia, 9. detsember 2008, ja IBM, 30. oktoober 2009. Kinnitati Khronos Groupi poolt 14. juuni 2010 ja sellega kaasnesid märkimisväärsed muutused. 15. novembril 2011 Khronos Group andis teada selle versiooni välja laskmisest, ning selle uuendusega kaasnevatest uuendustest, mis erinesid eelnevatest. Välja anti 18. novembril 2013. Peamised uuendused, mis sellega kaasnesid: Jagatud virtuaalmälu (inglise Shared Virtual Memory) Nested parallelism Generic Address Space C11 tuumad Torud (inglise Pipes) Androidle installitav draiveri laiendus Väljalaske ja detailse kirjelduse kohta anti info välja 3. märtsil 2015 San Franciscos. Ametlikult anti välja 16. novembril 2015. OpenCL 2.2 anti välja 18. novembril 2016 ja on kasutusel praeguseni. OpenCL-i saab kasutada erinevateks eesmärkideks. Sellega on võimalik luua kujundeid ja vaadata liikusmisi, kus arvuti peab kasutama näiteks loodusseadusi. OpenCL-i on võimalik kasutada ka dünaamilises programmeerimises. Alex Bourd (11.03.2016). "The OpenCL Specification" (PDF) (inglise keeles). Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "Khronos Releases OpenCL 2.2 Provisional Specification with OpenCL C++ Kernel Language for Parallel Programming" (inglise keeles). 18.04.2016. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) Aaftab Munshi, Lee Howes ja Bartosz Sochacki (13.04.2016). "The OpenCL C Specification" (PDF) (inglise keeles). Originaali (PDF) arhiivikoopia seisuga 15.10.2016. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "https://en.wikipedia.org/wiki/OpenCL" (inglise keeles). Vaadatud 27.12.2016. {{netiviide}}: välislink kohas |pealkiri= (juhend)CS1 hooldus: tundmatu keel (link) "The Khronos Group Releases OpenCL 1.0 Specification" (inglise keeles). 09.12.2008. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "Apple Previews Mac OS X Snow Leopard to Developers" (inglise keeles). 09.06.2008. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "AMD Backs OpenCL, Microsoft DirectX 11" (inglise keeles). 06.08.2008. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link)[alaline kõdulink] "NVIDIA Adds OpenCL To Its Industry Leading GPU Computing Toolkit" (inglise keeles). 09.12.2008. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "OpenCL Development Kit for Linux on Power" (inglise keeles). 30.10.2009. Originaali arhiivikoopia seisuga 9.08.2011. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "OpenCL 1.1 ratified by The Khronos Group" (inglise keeles). 15.06.2010. Originaali arhiivikoopia seisuga 2.02.2017. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "Khronos Finalizes OpenCL 2.0 Specification for Heterogeneous Computing" (inglise keeles). 18.11.2013. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "Khronos Releases OpenCL 2.1 and SPIR-V 1.0 Specifications for Heterogeneous Parallel Programming" (inglise keeles). 16.11.2015. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) "Khronos Releases OpenCL 2.2 Provisional Specification with OpenCL C++ Kernel Language for Parallel Programming" (inglise keeles). 16.04.2016. Vaadatud 27.12.2016.{{netiviide}}: CS1 hooldus: tundmatu keel (link) Vincent Hindriksen (03.06.2013). "The 13 application areas where OpenCL can be used" (inglise keeles). Originaali arhiivikoopia seisuga 2.02.2017. Vaadatud 24.01.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)