OpenCL

Allikas: Vikipeedia
Jump to navigation Jump to search
OpenCL API
Autor Apple Inc.
Arendaja Khronos Group
Esmaväljalase 28. august 2009
Viimane väljalase 2.2 [1] / 11. märts 2016
Kirjutatud keeles C/C++ [2]
OS Android, FreeBSD, Linux, MacOS, Windows
Platvorm ARMv7, ARMv8, Cell, IA-32, POWER, x86-64
Arenduse staatus Aktiivne
Litsents OpenCL specification license
Veebisait www.khronos.org/opencl

OpenCL (inglise Open Computing Language) on programmide kirjutamiseks mõeldud keel, mis toimib enamikul heterogeensetel platvormidel.

OpenCL C keel[muuda | muuda lähteteksti]

Programmeerimiskeelt, mida kasutatakse programmide kirjutamiseks nimetatakse OpenCL Cks ja põhineb C99l.[3]


Näide: maatriksi korrutamine[muuda | muuda lähteteksti]

Matrix multiplication qtl5.svg

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;
}

[4]


Ajalugu[muuda | muuda lähteteksti]

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 Group 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. [5]

OpenCL 1.0[muuda | muuda lähteteksti]

Lasti välja 28. augustil 2009 koos operatsioonisüsteemiga Mac OS X Snow Leopard. [6] AMD võttis kasutusele OpenCL-i mõned kuud hiljem 6. augustil 2008. [7] Siis järgnesid Nvidia, 9. detsember 2008, ja IBM, 30. oktoober 2009. [8] [9]

OpenCL 1.1[muuda | muuda lähteteksti]

Kinnitati Khronos Groupi poolt 14. juuni 2010 [10] ja sellega kaasnesid märkimisväärsed muutused.

OpenCL 1.2[muuda | muuda lähteteksti]

15. novembril 2011 Khronos Group teavitas selle versiooni välja laskmisest, ning selle uuendusega kaasnevatest uuendustest, mis erinesid eelnevatest.

OpenCL 2.0[muuda | muuda lähteteksti]

Välja lasti 18. novembril 2013.[11] 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

OpenCL 2.1[muuda | muuda lähteteksti]

Väljalaske ja detailse kirjelduse kohta lasti info välja 3. märtsil 2015 San Franciscos. Ametlikult lasti välja 16. novembril 2015. [12]

OpenCL 2.2[muuda | muuda lähteteksti]

OpenCL 2.2 lasti välja 18. novembril 2016 ja on kasutusel praeguseni.[13]


Kasutusvaldkonnad[muuda | muuda lähteteksti]

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.[14]

Viited[muuda | muuda lähteteksti]

  1. Alex Bourd. "The OpenCL Specification". 11.03.2016. Vaadatud 27.12.2016. Inglise keeles.
  2. "Khronos Releases OpenCL 2.2 Provisional Specification with OpenCL C++ Kernel Language for Parallel Programming". 18.04.2016. Vaadatud 27.12.2016. Inglise keeles.
  3. Aaftab Munshi, Lee Howes ja Bartosz Sochacki. "The OpenCL C Specification". 13.04.2016. Vaadatud 27.12.2016. Inglise keeles.
  4. "https://en.wikipedia.org/wiki/OpenCL". Vaadatud 27.12.2016. Inglise keeles.
  5. "The Khronos Group Releases OpenCL 1.0 Specification". 09.12.2008. Vaadatud 27.12.2016. Inglise keeles.
  6. "Apple Previews Mac OS X Snow Leopard to Developers". 09.06.2008. Vaadatud 27.12.2016. Inglise keeles.
  7. "AMD Backs OpenCL, Microsoft DirectX 11". 06.08.2008. Vaadatud 27.12.2016. Inglise keeles.
  8. "NVIDIA Adds OpenCL To Its Industry Leading GPU Computing Toolkit". 09.12.2008. Vaadatud 27.12.2016. Inglise keeles.
  9. "OpenCL Development Kit for Linux on Power". 30.10.2009. Vaadatud 27.12.2016. Inglise keeles.
  10. "OpenCL 1.1 ratified by The Khronos Group". 15.06.2010. Vaadatud 27.12.2016. Inglise keeles.
  11. "Khronos Finalizes OpenCL 2.0 Specification for Heterogeneous Computing". 18.11.2013. Vaadatud 27.12.2016. Inglise keeles.
  12. "Khronos Releases OpenCL 2.1 and SPIR-V 1.0 Specifications for Heterogeneous Parallel Programming". 16.11.2015. Vaadatud 27.12.2016. Inglise keeles.
  13. "Khronos Releases OpenCL 2.2 Provisional Specification with OpenCL C++ Kernel Language for Parallel Programming". 16.04.2016. Vaadatud 27.12.2016. Inglise keeles.
  14. Vincent Hindriksen. "The 13 application areas where OpenCL can be used". 03.06.2013. Vaadatud 24.01.2017. Inglise keeles.