OpenCL

OpenCL ( لغة الحوسبة المفتوحة ) هي إطار عمل لكتابة البرامج التي تُنفَّذ على منصات غير متجانسة تتكون من وحدات المعالجة المركزية (CPUs)، ووحدات معالجة الرسومات (GPUs)، ومعالجات الإشارات الرقمية (DSPs)، ومصفوفات البوابات المنطقية القابلة للبرمجة (FPGAs)، ومعالجات أخرى أو مُسرِّعات أجهزة . تُحدِّد OpenCL لغة برمجة (مبنية على C99 ) لبرمجة هذه الأجهزة، وواجهات برمجة التطبيقات (APIs) للتحكم في المنصة وتنفيذ البرامج على أجهزة الحوسبة . توفر OpenCL واجهة قياسية للحوسبة المتوازية باستخدام التوازي القائم على المهام والبيانات .

OpenCL هو معيار مفتوح تتولى صيانته مجموعة كرونوس ، وهي منظمة غير ربحية معنية بالمعايير المفتوحة. تتوفر تطبيقات متوافقة (اجتازت مجموعة اختبارات المطابقة) من مجموعة من الشركات، بما في ذلك AMD و Arm و Cadence و Google و Imagination و Intel و Nvidia و Qualcomm و Samsung و SPI و Verisilicon . [ 6 ] [ 7 ]

ملخص

ينظر OpenCL إلى نظام الحوسبة على أنه يتكون من عدد من أجهزة الحوسبة ، والتي قد تكون وحدات معالجة مركزية (CPU) أو "مُسرّعات" مثل وحدات معالجة الرسومات (GPU)، المتصلة بمعالج مضيف (وحدة المعالجة المركزية). وهو يُعرّف لغة شبيهة بلغة C لكتابة البرامج. تُسمى الوظائف التي تُنفذ على جهاز OpenCL " النوى ". [ 8 ] : 17 يتكون جهاز الحوسبة الواحد عادةً من عدة وحدات حوسبة ، والتي بدورها تتألف من عناصر معالجة متعددة (PEs). يمكن تشغيل تنفيذ نواة واحدة على جميع عناصر المعالجة أو العديد منها بالتوازي. كيفية تقسيم جهاز الحوسبة إلى وحدات حوسبة وعناصر معالجة متروكة للبائع. يمكن اعتبار وحدة الحوسبة بمثابة " نواة "، لكن مفهوم النواة يصعب تحديده بدقة في جميع أنواع الأجهزة التي يدعمها OpenCL (أو حتى ضمن فئة "وحدات المعالجة المركزية")، [ 9 ] : 49-50 ، وقد لا يتطابق عدد وحدات الحوسبة مع عدد النوى المعلن عنها في مواد التسويق الخاصة بالموردين (والتي قد تكون في الواقع تحسب مسارات SIMD ). [ 10 ]

بالإضافة إلى لغة البرمجة الشبيهة بلغة C، تُعرّف OpenCL واجهة برمجة تطبيقات (API) تُمكّن البرامج العاملة على النظام المضيف من تشغيل النواة على أجهزة الحوسبة وإدارة ذاكرة الجهاز، وهي منفصلة (نظريًا على الأقل) عن ذاكرة النظام المضيف. يُفترض أن تُجمّع البرامج المكتوبة بلغة OpenCL أثناء التشغيل ، بحيث تكون التطبيقات التي تستخدم OpenCL قابلة للنقل بين تطبيقات أجهزة مضيفة مختلفة. [ 11 ] يُعرّف معيار OpenCL واجهات برمجة تطبيقات (APIs) للنظام المضيف للغتين C و C++ ؛ وتوجد واجهات برمجة تطبيقات (APIs) خارجية للغات برمجة ومنصات أخرى مثل Python ، [ 12 ] وJava و Perl ، [ 13 ] و D، [ 14 ] و .NET . [ 9 ] : 15 يتكون تطبيق معيار OpenCL من مكتبة تُنفّذ واجهة برمجة التطبيقات (API) للغتين C وC++، ومُجمّع OpenCL C لأجهزة الحوسبة المستهدفة.

من أجل فتح نموذج برمجة OpenCL للغات أخرى أو لحماية مصدر النواة من الفحص، يمكن استخدام تمثيل الوسيط المحمول القياسي (SPIR) [ 15 ] كطريقة مستقلة عن الهدف لنقل النوى بين مترجم الواجهة الأمامية وواجهة OpenCL الخلفية.

في الآونة الأخيرة، صادقت مجموعة كرونوس على SYCL ، [ 16 ] وهو نموذج برمجة عالي المستوى لـ OpenCL كلغة برمجة خاصة بالمجال (eDSL) أحادية المصدر تعتمد على لغة C++17 النقية لتحسين إنتاجية البرمجة . يمكن للمهتمين بنوى C++ ولكنهم لا يفضلون أسلوب برمجة SYCL أحادي المصدر استخدام ميزات C++ مع مصادر نواة الحوسبة المكتوبة بلغة "C++ لـ OpenCL". [ 17 ]

التسلسل الهرمي للذاكرة

يحدد OpenCL تسلسلًا هرميًا للذاكرة من أربعة مستويات لجهاز الحوسبة: [ 11 ]

  • الذاكرة العامة: مشتركة بين جميع عناصر المعالجة، ولكن زمن الوصول إليها مرتفع ( __global
  • ذاكرة للقراءة فقط: أصغر حجماً، زمن استجابة منخفض، قابلة للكتابة بواسطة وحدة المعالجة المركزية المضيفة ولكن ليس بواسطة أجهزة الحوسبة ( __constant
  • الذاكرة المحلية: مشتركة بين مجموعة من عناصر المعالجة ( __local );
  • الذاكرة الخاصة لكل عنصر ( السجلات ؛ __private ).

لا يحتاج كل جهاز إلى تنفيذ كل مستوى من هذا التسلسل الهرمي في مكوناته المادية. يتم تخفيف التناسق بين المستويات المختلفة في التسلسل الهرمي، ولا يتم فرضه إلا من خلال بنيات التزامن الصريحة، ولا سيما الحواجز .

قد تتشارك الأجهزة الذاكرة مع وحدة المعالجة المركزية للمضيف أو لا تتشاركها. [ 11 ] توفر واجهة برمجة التطبيقات الخاصة بالمضيف مقابض على مخازن ذاكرة الجهاز ووظائف لنقل البيانات ذهابًا وإيابًا بين المضيف والأجهزة.

لغة نواة OpenCL

تُسمى لغة البرمجة المستخدمة لكتابة نواة الحوسبة بلغة النواة. يعتمد OpenCL على لغات C / C++ لتحديد عمليات حساب النواة التي تُجرى على الجهاز، مع بعض القيود والإضافات لتسهيل الربط الفعال مع موارد الأجهزة المتنوعة للمُسرّعات. تقليديًا، استُخدمت لغة OpenCL C لبرمجة المُسرّعات في معيار OpenCL، ثم طُوّرت لاحقًا لغة C++ لنواة OpenCL، والتي ورثت جميع وظائف OpenCL C، ولكنها سمحت باستخدام ميزات C++ في مصادر النواة.

لغة C OpenCL

لغة OpenCL C [ 18 ] هي لهجة من لغة C99 مُعدّلة لتناسب نموذج الجهاز في OpenCL. توجد مخازن الذاكرة في مستويات محددة من التسلسل الهرمي للذاكرة ، وتُعلّم المؤشرات بمُحدِّدات المنطقة __global و__ local و__ constant و__ private ، مما يعكس ذلك. بدلاً من أن يحتوي برنامج الجهاز على دالة رئيسية ، تُعلّم دوال OpenCL C بـ __kernel للإشارة إلى أنها نقاط دخول إلى البرنامج ليتم استدعاؤها من البرنامج المضيف. يتم حذف مؤشرات الدوال وحقول البتات والمصفوفات ذات الطول المتغير ، ويُمنع الاستدعاء الذاتي . [ 19 ] يتم استبدال مكتبة C القياسية بمجموعة مخصصة من الدوال القياسية، مُصممة خصيصًا لبرمجة الرياضيات.

تم توسيع لغة OpenCL C لتسهيل استخدام التوازي مع أنواع البيانات المتجهة والعمليات، والمزامنة، والوظائف للتعامل مع عناصر العمل ومجموعات العمل. [ 19 ] على وجه الخصوص، بالإضافة إلى الأنواع العددية مثل float و double ، التي تتصرف بشكل مشابه للأنواع المقابلة في لغة C، توفر OpenCL أنواع بيانات متجهة ثابتة الطول مثل float4 (متجه رباعي من أعداد عشرية أحادية الدقة)؛ وتتوفر هذه الأنواع المتجهة بأطوال اثنين، وثلاثة، وأربعة، وثمانية، وستة عشر لأنواع أساسية مختلفة. [ 18 ] : § 6.1.2 تهدف العمليات المتجهة على هذه الأنواع إلى الربط بمجموعات تعليمات SIMD ، مثل SSE أو VMX ، عند تشغيل برامج OpenCL على وحدات المعالجة المركزية. [ 11 ] تشمل الأنواع المتخصصة الأخرى أنواع الصور ثنائية وثلاثية الأبعاد. [ 18 ] : 10-11

مثال: ضرب المصفوفة في المتجه

تأخذ كل عملية استدعاء ( عنصر عمل ) للنواة صفًا من المصفوفة الخضراء ( A في الكود)، وتضرب هذا الصف بالمتجه الأحمر ( x )، وتضع النتيجة في خانة من المتجه الأزرق ( y ). يُمرر عدد الأعمدة n إلى النواة كـ ncols ؛ أما عدد الصفوف فهو مُضمن في عدد عناصر العمل التي يُنتجها البرنامج المضيف.

فيما يلي خوارزمية ضرب المصفوفة بالمتجه في لغة OpenCL C.

// يضرب A*x، ويترك النتيجة في y.// A هي مصفوفة ذات ترتيب صفّي رئيسي، مما يعني أن العنصر (i,j) موجود في 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 float const * a = & A [ i * ncols ]; // مؤشر إلى الصف رقم ifloat sum = 0.f ; // مُجمِّع الضرب النقطيfor ( size_t j = 0 ; j < ncols ; j ++ ) {sum += a [ j ] * x [ j ];}y [ i ] = المجموع ؛}

تقوم دالة النواة matvec بحساب حاصل الضرب النقطي لصف واحد من المصفوفة A والمتجه x في كل استدعاء :

yأنا=أأنا،:x=جأأنا،جxج.{\displaystyle y_{i}=a_{i,:}\cdot x=\sum _{j}a_{i,j}x_{j}.}

لتوسيع نطاق هذا ليشمل عملية ضرب مصفوفة بمتجه بشكل كامل، يقوم وقت تشغيل OpenCL بتوزيع النواة على صفوف المصفوفة. على جانب المضيف، تقوم الدالة clEnqueueNDRangeKernel بذلك؛ حيث تأخذ كمعاملات النواة المراد تنفيذها، ومعاملاتها، وعددًا من عناصر العمل، بما يتوافق مع عدد الصفوف في المصفوفة A.

مثال: حساب تحويل فورييه السريع

سيقوم هذا المثال بتحميل تطبيق تحويل فورييه السريع (FFT) وتنفيذه. يظهر التطبيق أدناه. [ 20 ] يطلب الكود من مكتبة OpenCL أول بطاقة رسومات متاحة، وينشئ مخازن مؤقتة للقراءة والكتابة (من منظور بطاقة الرسومات)، ويُجمّع نواة FFT باستخدام JIT ، ثم يُشغّل النواة بشكل غير متزامن. لا تتم قراءة نتيجة التحويل في هذا المثال. هذا مثال توضيحي فقط، وليس للاستخدام الجاد، لذا تم حذف معالجة الأخطاء تمامًا.

#include <stdio.h>#include <time.h>#include "CL/opencl.h"#define NUM_ENTRIES 1024int main () // (int argc, const char* argv[]){// الثوابت// يتم تمثيل شفرة المصدر الخاصة بالنواة كسلسلة نصية// موجود داخل الملف: "fft1D_1024_kernel_src.cl". للاطلاع على التفاصيل، انظر القائمة التالية.const char * KernelSource =#include "fft1D_1024_kernel_src.cl";// البحث عن وحدات معالجة الرسومات المتاحةconst cl_uint num = 1 ;clGetDeviceIDs ( NULL , CL_DEVICE_TYPE_GPU , 0 , NULL , ( cl_uint * ) & num );cl_device_id devices [ 1 ];clGetDeviceIDs ( NULL , CL_DEVICE_TYPE_GPU , num , devices , NULL );// إنشاء سياق حسابي باستخدام جهاز وحدة معالجة الرسوماتcl_context context = clCreateContextFromType ( NULL , CL_DEVICE_TYPE_GPU , NULL , NULL , NULL );// إنشاء قائمة أوامرclGetDeviceIDs ( NULL , CL_DEVICE_TYPE_DEFAULT , 1 , devices , NULL );cl_command_queue queue = clCreateCommandQueue ( context , devices [ 0 ], 0 , NULL );// تخصيص كائنات ذاكرة المخزن المؤقتcl_mem memobjs [] = { clCreateBuffer ( context , CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR , sizeof ( float ) * 2 * NUM_ENTRIES , NULL , NULL ), }clCreateBuffer ( context , CL_MEM_READ_WRITE , sizeof ( float ) * 2 * NUM_ENTRIES , NULL , NULL ) };// إنشاء برنامج الحوسبة// const char* fft1D_1024_kernel_src[1] = { };cl_program program = clCreateProgramWithSource ( context , 1 , ( const char ** ) & KernelSource , NULL , NULL );// بناء الملف التنفيذي لبرنامج الحوسبةclBuildProgram ( program , 0 , NULL , NULL , NULL , NULL );// إنشاء نواة الحسابcl_kernel kernel = clCreateKernel ( program , "fft1D_1024" , NULL );// تعيين قيم الوسائطsize_t local_work_size [ 1 ] = { 256 };clSetKernelArg ( kernel , 0 , sizeof ( cl_mem ), ( void * ) & memobjs [ 0 ]);clSetKernelArg ( kernel , 1 , sizeof ( cl_mem ), ( void * ) & memobjs [ 1 ]);clSetKernelArg ( kernel , 2 , sizeof ( float ) * ( local_work_size [ 0 ] + 1 ) * 16 , NULL );clSetKernelArg ( kernel , 3 , sizeof ( float ) * ( local_work_size [ 0 ] + 1 ) * 16 , NULL );// إنشاء كائن نطاق ND بأبعاد عنصر العمل وتنفيذ النواةsize_t global_work_size [ 1 ] = { 256 };global_work_size [ 0 ] = NUM_ENTRIES ;local_work_size [ 0 ] = 64 ; //Nvidia: 192 أو 256clEnqueueNDRangeKernel ( queue , kernel , 1 , NULL , global_work_size , local_work_size , 0 , NULL , NULL );}

الحساب الفعلي داخل الملف "fft1D_1024_kernel_src.cl" (استنادًا إلى "Fitting FFT into the G80 Architecture"): [ 21 ]

R "( // تحسب هذه النواة تحويل فورييه السريع (FFT) بطول 1024. يتم تقسيم تحويل فورييه السريع بطول 1024 إلى // استدعاءات لدالة أساسها 16، ودالة أساسها 16 أخرى، ثم دالة أساسها 4__kernel void fft1D_1024 ( __global float2 * in , __global float2 * out , __local float * sMemx , __local float * sMemy ) { int tid = get_local_id ( 0 ); int blockIdx = get_group_id ( 0 ) * 1024 + tid ; float2 data [ 16 ];// فهرس بداية البيانات من/إلى الذاكرة العامة in = in + blockIdx ; out = out + blockIdx ;globalLoads ( data , in , 64 ); // عمليات قراءة عامة مجمعة fftRadix16Pass ( data ); // تمريرة أساس 16 في مكانها twiddleFactorMul ( data , tid , 1024 , 0 );// التبديل العشوائي باستخدام الذاكرة المحلية localShuffle ( data , sMemx , sMemy , tid , ((( tid & 15 ) * 65 ) + ( tid >> 4 ))); fftRadix16Pass ( البيانات // تمرير radix-16 في المكان twiddleFactorMul ( data , tid , 64 , 4 ); // ضرب عامل التلاعبlocalShuffle ( data , sMemx , sMemy , tid , ((( tid >> 4 ) * 64 ) + ( tid & 15 )));// أربع استدعاءات لدالة أساسها 4 fftRadix4Pass ( data ); // دالة أساسها 4 رقم 1 fftRadix4Pass ( data + 4 ); // دالة أساسها 4 رقم 2 fftRadix4Pass ( data + 8 ); // دالة أساسها 4 رقم 3 fftRadix4Pass ( data + 12 ); // دالة أساسها 4 رقم 4// يجمع هذا الكود البيانات العامة في المخازن العامة ( البيانات ، الإخراج ، 64 } ) "

يمكن العثور على تطبيق كامل ومفتوح المصدر لخوارزمية OpenCL FFT على موقع Apple الإلكتروني. [ 22 ]

لغة OpenCL C++

OpenCL C++ هي مواصفة قصيرة الأجل للغة تجمع بين OpenCL C و C++14. كان من المفترض بناؤها في وضع الاتصال بالإنترنت فقط، عن طريق تمرير -cl-std=c++المعامل في clBuildProgram(). لم يتم وصف أي امتداد للكشف عن دعم هذه اللغة. من غير المعروف ما إذا كان أي برنامج تشغيل يدعم هذه اللغة بالفعل. [ 23 ]

لغة C++ لـ OpenCL

في عام 2020، أعلنت شركة كرونوس [ 25 ] عن الانتقال إلى لغة البرمجة C++ لـ OpenCL، وهي لغة مدعومة من المجتمع [ 26 ] ، توفر ميزات من C++17 بالإضافة إلى ميزات OpenCL C التقليدية. تتيح هذه اللغة الاستفادة من مجموعة واسعة من ميزات لغة C++ القياسية مع الحفاظ على التوافق مع الإصدارات السابقة لـ OpenCL C. وهذا يمهد الطريق لانتقال سلس إلى وظائف C++ لمطوري كود نواة OpenCL، حيث يمكنهم الاستمرار في استخدام أسلوب البرمجة المألوف لديهم، وحتى الأدوات، بالإضافة إلى الاستفادة من الإضافات والمكتبات المتوفرة لـ OpenCL C.

تم وصف دلالات اللغة في الوثائق المنشورة في إصدارات مستودع OpenCL-Docs [ 27 ] الذي تستضيفه مجموعة كرونوس، ولكنها غير معتمدة حاليًا من قبل المجموعة. لغة C++ لـ OpenCL غير موثقة في وثيقة مستقلة، وهي مبنية على مواصفات C++ و OpenCL C. يدعم مُصرّف Clang مفتوح المصدر لغة C++ لـ OpenCL منذ الإصدار 9. [ 28 ]

طُوِّرت لغة C++ لـ OpenCL في الأصل كامتداد لمُصرِّف Clang، وظهرت في الإصدار 9. [ 29 ] ونظرًا لارتباطها الوثيق بلغة OpenCL C وعدم احتوائها على أي وظائف خاصة بـ Clang، فقد أُعيد نشر وثائقها في مستودع OpenCL-Docs [ 27 ] التابع لمجموعة Khronos، إلى جانب مصادر المواصفات الأخرى وبطاقات المراجع. نُشر الإصدار الرسمي الأول من هذه الوثيقة، الذي يصف C++ لـ OpenCL الإصدار 1.0، في ديسمبر 2020. [ 30 ] تتضمن C++ لـ OpenCL 1.0 ميزات من C++17، وهي متوافقة مع الإصدارات السابقة من OpenCL C 2.0. في ديسمبر 2021، صدر إصدار تجريبي جديد من C++ لـ OpenCL الإصدار 2021، وهو متوافق تمامًا مع معيار OpenCL 3.0. [ 31 ] يمكن الاطلاع على مسودة قيد التطوير لأحدث وثائق C++ لـ OpenCL على موقع Khronos الإلكتروني. [ 32 ]

سمات

يدعم C++ لـ OpenCL معظم ميزات OpenCL C (من حيث التركيب والدلالة) باستثناء التوازي المتداخل والكتل. [ 33 ] ومع ذلك، توجد اختلافات طفيفة في بعض الميزات المدعومة، وتتعلق أساسًا باختلافات الدلالات بين C++ وC. على سبيل المثال، C++ أكثر صرامة في تحويلات الأنواع الضمنية، ولا يدعم مُحدِّد نوع التقييد. [ 33 ] لا يدعم C++ لـ OpenCL ميزات C++ التالية: الدوال الافتراضية، ومعامل dynamic_cast ، ومعاملات new / delete غير الموضعية ، والاستثناءات، ومؤشرات الدوال الأعضاء، ومراجع الدوال، ومكتبات C++ القياسية. [ 33 ] يوسع C++ لـ OpenCL مفهوم مناطق الذاكرة المنفصلة ( مساحات العناوين ) من OpenCL C ليشمل ميزات C++ - التحويلات الوظيفية، والقوالب، وأعضاء الفئات، والمراجع، ودوال لامدا، والمعاملات. معظم ميزات C++ غير متاحة لدوال النواة، مثل التحميل الزائد أو القوالب، وتخطيط الفئات العشوائي في نوع المعامل. [ 33 ]

مثال: الحساب بالأعداد المركبة

يوضح مقتطف الشفرة التالي كيفية تنفيذ النوى ذات العمليات الحسابية للأعداد المركبة في لغة C++ للغة OpenCL مع الاستخدام المريح لميزات C++.

// تعريف فئة Complex، التي يمكنها إجراء عمليات حسابية على الأعداد المركبة بدقة متفاوتة عند استخدام أنواع مختلفة من T - double، float، half. template < typename T > class complex_t { T m_re ; // الجزء الحقيقي. T m_im ; // الجزء التخيلي.public : complex_t ( T re , Tim ) : m_re { re } , m_im { im } {}; // تعريف عامل ضرب الأعداد المركبة. complex_t operator * ( const complex_t & other ) const { return { m_re * other.m_re - m_im * other.m_im , m_re * other.m_im + m_im * other.m_re } ; } T get_re ( ) const { return m_re ; } T get_im ( ) const { return m_im ; } } ;// دالة مساعدة لحساب عملية الضرب على الأعداد المركبة المقروءة من // مخزن الإدخال المؤقت، ولتخزين النتيجة المحسوبة في مخزن الإخراج المؤقت. template < typename T > void compute_helper ( __global T * in , __global T * out ) { auto idx = get_global_id ( 0 ); // يستخدم كل عنصر عمل 4 عناصر متتالية من مخزن الإدخال المؤقت // - عنصران لكل عدد مركب. auto offset = idx * 4 ; auto num1 = complex_t { in [ offset ], in [ offset + 1 ]}; auto num2 = complex_t { in [ offset + 2 ], in [ offset + 3 ]}; // تنفيذ عملية ضرب الأعداد المركبة. auto res = num1 * num2 ; // يكتب كل عنصر عمل عنصرين متتاليين إلى مخزن الإخراج المؤقت. out [ idx * 2 ] = res . get_re (); out [ idx * 2 + 1 ] = res.get_im ( ) ; }// تُستخدم هذه النواة لضرب الأعداد المركبة بدقة مفردة. __kernel void compute_sp ( __global float * in , __global float * out ) { compute_helper ( in , out ); }#ifdef cl_khr_fp16 // تُستخدم هذه النواة لضرب الأعداد المركبة بنصف الدقة عندما // يدعمها الجهاز. #pragma OPENCL EXTENSION cl_khr_fp16: enable __kernel void compute_hp ( __global half * in , __global half * out ) { compute_helper ( in , out ); } #endif

بيئة الأدوات والتنفيذ

يمكن استخدام لغة C++ لـ OpenCL في نفس التطبيقات أو المكتبات وبنفس طريقة استخدام لغة OpenCL C. وبفضل تنوع ميزات لغة C++، تستطيع التطبيقات المكتوبة بها لـ OpenCL التعبير عن وظائف معقدة بسهولة أكبر من التطبيقات المكتوبة بلغة OpenCL C، ولا سيما أن نموذج البرمجة العامة في C++ يُعدّ جذابًا للغاية لمطوري المكتبات.

يمكن تجميع مصادر C++ لـ OpenCL بواسطة برامج تشغيل OpenCL التي تدعم امتداد cl_ext_cxx_for_opencl ، مما يسمح باستخدامها -cl-std=CLC++في [ 34 ]clBuildProgram() . وقد أعلنت Arm عن دعمها لهذا الامتداد في ديسمبر 2020 [ 35 ] . ومع ذلك، ونظرًا لتزايد تعقيد الخوارزميات المُسرّعة على أجهزة OpenCL، فمن المتوقع أن تقوم المزيد من التطبيقات بتجميع نواة C++ لـ OpenCL دون اتصال بالإنترنت باستخدام مُجمّعات مستقلة مثل Clang [ 36 ] إلى تنسيق ثنائي قابل للتنفيذ أو تنسيق ثنائي محمول مثل SPIR-V [ 37 ] . ويمكن تحميل هذا الملف التنفيذي أثناء تشغيل تطبيقات OpenCL باستخدام واجهة برمجة تطبيقات OpenCL مخصصة [ 38 ] .

يمكن تشغيل الملفات الثنائية المُجمّعة من مصادر مكتوبة بلغة C++ لـ OpenCL 1.0 على الأجهزة المتوافقة مع OpenCL 2.0. وبحسب خصائص اللغة المستخدمة في مصادر النواة هذه، يمكن تشغيلها أيضًا على الأجهزة التي تدعم إصدارات OpenCL الأقدم أو OpenCL 3.0.

بصرف النظر عن برامج تشغيل OpenCL، يمكن تجميع النوى المكتوبة بلغة C++ لـ OpenCL للتنفيذ على أجهزة Vulkan باستخدام مترجم clspv [ 39 ] وطبقة وقت التشغيل clvk [ 40 ] ، بنفس طريقة نوى OpenCL C.

المساهمات

لغة C++ لـ OpenCL هي لغة مفتوحة المصدر طُوِّرت بواسطة مجتمع المساهمين المذكورين في وثائقها. [ 32 ] تُقبل المساهمات الجديدة في التعريف الدلالي للغة أو دعم أدوات المصادر المفتوحة من أي شخص مهتم، شريطة أن تتوافق مع فلسفة التصميم الرئيسية وأن تتم مراجعتها واعتمادها من قِبل المساهمين ذوي الخبرة. [ 17 ]

تاريخ

طُوِّرت تقنية OpenCL في البداية من قِبَل شركة Apple Inc. ، التي تمتلك حقوق العلامة التجارية ، ثم جرى تحسينها لتصبح مقترحًا أوليًا بالتعاون مع فرق تقنية في شركات AMD و IBM و Qualcomm و Intel و Nvidia . قدّمت Apple هذا المقترح الأولي إلى مجموعة Khronos . في 16 يونيو 2008، شُكِّل فريق عمل الحوسبة في Khronos [ 41 ] ، والذي ضمّ ممثلين عن شركات تصنيع وحدات المعالجة المركزية (CPU) ووحدات معالجة الرسومات (GPU) والمعالجات المدمجة والبرمجيات. عمل هذا الفريق لمدة خمسة أشهر لإنجاز التفاصيل التقنية لمواصفات OpenCL 1.0 بحلول 18 نوفمبر 2008. [ 42 ] راجع أعضاء Khronos هذه المواصفات التقنية، وتمت الموافقة عليها للنشر العام في 8 ديسمبر 2008. [ 43 ]

OpenCL 1.0

تم إصدار OpenCL 1.0 مع نظام التشغيل Mac OS X Snow Leopard في 28 أغسطس 2009. وفقًا لبيان صحفي صادر عن شركة Apple: [ 44 ]

يُعزز نظام التشغيل Snow Leopard دعمه للأجهزة الحديثة من خلال لغة الحوسبة المفتوحة (OpenCL)، التي تُمكّن أي تطبيق من الاستفادة من قوة الحوسبة الهائلة لوحدات معالجة الرسومات (GPU) التي كانت متاحة سابقًا لتطبيقات الرسومات فقط. تعتمد OpenCL على لغة البرمجة C، وقد تم اقتراحها كمعيار مفتوح.

قررت AMD دعم OpenCL بدلاً من Close to Metal التي أصبحت الآن قديمة في إطار عمل Stream الخاص بها . [ 45 ] [ 46 ] أعلنت RapidMind عن اعتمادها لـ OpenCL في منصة التطوير الخاصة بها لدعم وحدات معالجة الرسومات من عدة موردين بواجهة واحدة. [ 47 ] في 9 ديسمبر 2008، أعلنت Nvidia عن نيتها إضافة دعم كامل لمواصفات OpenCL 1.0 إلى مجموعة أدوات الحوسبة لوحدات معالجة الرسومات الخاصة بها. [ 48 ] في 30 أكتوبر 2009، أصدرت IBM أول تطبيق لها لـ OpenCL كجزء من مُجمِّعات XL . [ 49 ]

يُمكن تسريع العمليات الحسابية بمعامل يصل إلى 1000 باستخدام OpenCL في بطاقات الرسومات مقارنةً بوحدة المعالجة المركزية العادية. بعض الميزات المهمة في الإصدار التالي من OpenCL اختيارية في الإصدار 1.0، مثل عمليات الدقة المزدوجة أو النصفية. [ 50 ]

OpenCL 1.1

تمت المصادقة على OpenCL 1.1 من قبل مجموعة Khronos في 14 يونيو 2010، [ 51 ] وتضيف وظائف مهمة لتحسين مرونة البرمجة المتوازية ووظائفها وأدائها، بما في ذلك:

  • أنواع بيانات جديدة تشمل متجهات ثلاثية المكونات وتنسيقات صور إضافية؛
  • معالجة الأوامر من خيوط مضيفة متعددة ومعالجة المخازن المؤقتة عبر أجهزة متعددة؛
  • العمليات على مناطق المخزن المؤقت بما في ذلك القراءة والكتابة والنسخ للمناطق المستطيلة أحادية البعد أو ثنائية البعد أو ثلاثية الأبعاد؛
  • استخدام مُحسّن للأحداث لتوجيه وتنفيذ الأوامر والتحكم فيها؛
  • وظائف C المدمجة الإضافية في OpenCL مثل تثبيت الأعداد الصحيحة، والخلط، والنسخ غير المتزامنة ذات الخطوات؛
  • تحسين قابلية التشغيل البيني لـ OpenGL من خلال المشاركة الفعالة للصور والمخازن المؤقتة عن طريق ربط أحداث OpenCL و OpenGL.

OpenCL 1.2

في 15 نوفمبر 2011، أعلنت مجموعة كرونوس عن مواصفات OpenCL 1.2، [ 52 ] التي أضافت وظائف مهمة مقارنةً بالإصدارات السابقة من حيث الأداء وميزات البرمجة المتوازية. ومن أبرز هذه الميزات:

  • تقسيم الجهاز: القدرة على تقسيم الجهاز إلى أجهزة فرعية لتخصيص مهام العمل لوحدات المعالجة الفردية. يُفيد هذا في حجز مساحات من الجهاز لتقليل زمن الاستجابة للمهام الحساسة للوقت.
  • التجميع والربط المنفصلان للكائنات: وظيفة تجميع OpenCL في مكتبات خارجية لإدراجها في برامج أخرى.
  • دعم مُحسّن للصور (اختياري): يُضيف الإصدار 1.2 دعمًا للصور أحادية البُعد ومصفوفات الصور أحادية وثنائية البُعد. علاوة على ذلك، تسمح امتدادات مشاركة OpenGL الآن باستخدام نسيج OpenGL أحادي البُعد ومصفوفات النسيج أحادية وثنائية البُعد لإنشاء صور OpenCL.
  • النوى المدمجة: أصبحت الأجهزة المخصصة التي تحتوي على وظائف فريدة ومحددة جزءًا لا يتجزأ من إطار عمل OpenCL. يمكن استدعاء هذه النوى لاستخدام جوانب متخصصة أو غير قابلة للبرمجة من الأجهزة الأساسية. ومن الأمثلة على ذلك ترميز/فك ترميز الفيديو ومعالجات الإشارات الرقمية.
  • وظائف DirectX: تتيح مشاركة سطح الوسائط في DX9 مشاركة فعّالة بين أسطح الوسائط OpenCL وDX9 أو DXVA . وبالمثل، في DX11، تُفعّل المشاركة السلسة بين أسطح OpenCL وDX11.
  • إمكانية فرض التوافق مع معيار IEEE 754 لعمليات الفاصلة العائمة أحادية الدقة: يسمح OpenCL افتراضيًا بأن تكون دقة عمليات القسمة، والمقلوب، والجذر التربيعي أحادية الدقة أقل من القيم المقربة الصحيحة التي يتطلبها معيار IEEE 754. [ 53 ] إذا مرر المبرمج وسيط سطر الأوامر "-cl-fp32-correctly-rounded-divide-sqrt" إلى المُصرّف، فسيتم حساب هذه العمليات الثلاث وفقًا لمتطلبات معيار IEEE 754 إذا كان تطبيق OpenCL يدعم ذلك، وسيفشل التجميع إذا كان تطبيق OpenCL لا يدعم حساب هذه العمليات بقيمها المقربة الصحيحة كما هو محدد في مواصفات IEEE 754. [ 53 ] تُستكمل هذه الإمكانية بإمكانية الاستعلام من تطبيق OpenCL لتحديد ما إذا كان بإمكانه تنفيذ هذه العمليات بدقة معيار IEEE 754. [ 53 ]

OpenCL 2.0

في 18 نوفمبر 2013، أعلنت مجموعة كرونوس عن التصديق على مواصفات OpenCL 2.0 النهائية ونشرها للعموم. [ 54 ] تشمل التحديثات والإضافات على OpenCL 2.0 ما يلي:

  • الذاكرة الافتراضية المشتركة
  • التوازي المتداخل
  • مساحة العناوين العامة
  • الصور (اختياري، بما في ذلك الصور ثلاثية الأبعاد)
  • ذرات الكربون-11
  • الأنابيب
  • ملحق برنامج تشغيل العميل القابل للتثبيت على نظام Android
  • تم توسيع الدقة النصفية باستخدام امتداد cl_khr_fp16 الاختياري
  • cl_double: دقة مزدوجة IEEE 754 (اختياري)

OpenCL 2.1

أُعلن عن التصديق على المواصفات المؤقتة لـ OpenCL 2.1 وإصدارها في 3 مارس 2015، خلال مؤتمر مطوري الألعاب في سان فرانسيسكو. وصدرت في 16 نوفمبر 2015. [ 55 ] وقد قدمت لغة OpenCL C++ الأساسية، المبنية على مجموعة فرعية من C++14 ، مع الحفاظ على دعم لغة OpenCL C الأساسية الموجودة مسبقًا. يشترك كل من Vulkan وOpenCL 2.1 في SPIR-V كتمثيل وسيط ، مما يسمح لواجهات لغات البرمجة عالية المستوى بمشاركة هدف تجميع مشترك. تشمل تحديثات واجهة برمجة تطبيقات OpenCL ما يلي:

  • وظائف إضافية للمجموعات الفرعية
  • نسخ كائنات وحالات النواة
  • استعلامات مؤقت الجهاز منخفضة زمن الاستجابة
  • استيعاب كود SPIR-V بواسطة وقت التشغيل
  • تلميحات أولوية التنفيذ للطوابير
  • عمليات إرسال بحجم صفر من المضيف

أعلنت شركات AMD و ARM و Intel و HPC و YetiWare دعمها لـ OpenCL 2.1. [ 56 ] [ 57 ]

OpenCL 2.2

يُدخل OpenCL 2.2 لغة OpenCL C++ الأساسية في المواصفات الرئيسية لتحسين إنتاجية البرمجة المتوازية بشكل ملحوظ. [ 58 ] [ 59 ] [ 60 ] وقد صدر في 16 مايو 2017. [ 61 ] وصدر تحديث الصيانة في مايو 2018 مع إصلاحات للأخطاء. [ 62 ]

  • لغة OpenCL C++ kernel هي مجموعة فرعية ثابتة من معيار C++14 وتتضمن الفئات والقوالب وتعبيرات لامدا وتحميل الوظائف الزائد والعديد من البنى الأخرى للبرمجة العامة والبرمجة الوصفية.
  • يستخدم لغة Khronos SPIR-V 1.1 الوسيطة الجديدة التي تدعم بشكل كامل لغة OpenCL C++ kernel.
  • يمكن الآن لوظائف مكتبة OpenCL استخدام لغة C++ لتوفير أمان متزايد وتقليل السلوك غير المحدد أثناء الوصول إلى ميزات مثل الذرات، والمكررات، والصور، وعينات العينات، والأنابيب، وأنواع قائمة انتظار الجهاز المضمنة ومساحات العناوين.
  • يُعد تخزين الأنابيب نوعًا جديدًا من جانب الجهاز في OpenCL 2.2 وهو مفيد لتطبيقات FPGA من خلال جعل حجم ونوع الاتصال معروفًا في وقت الترجمة، مما يتيح اتصالًا فعالًا على مستوى الجهاز بين النوى.
  • يتضمن OpenCL 2.2 أيضًا ميزات لتحسين تحسين التعليمات البرمجية المولدة: يمكن للتطبيقات توفير قيمة ثابت التخصيص في وقت تجميع SPIR-V، ويمكن للاستعلام الجديد اكتشاف المنشئات والمدمرات غير التافهة للكائنات العامة لنطاق البرنامج، ويمكن تعيين ردود الاتصال الخاصة بالمستخدم في وقت إصدار البرنامج.
  • يعمل على أي جهاز يدعم OpenCL 2.0 (لا يلزم سوى تحديث برنامج التشغيل).

OpenCL 3.0

صدرت مواصفات OpenCL 3.0 في 30 سبتمبر 2020، بعد أن كانت في مرحلة المعاينة منذ أبريل 2020. أصبحت وظائف OpenCL 1.2 أساسيةً إلزامية، بينما أصبحت جميع ميزات OpenCL 2.x وOpenCL 3.0 اختيارية. تحتفظ المواصفات بلغة OpenCL C وتُهمل لغة OpenCL C++ Kernel Language، مستبدلةً إياها بلغة C++ for OpenCL [ 17 ] القائمة على مُصرّف Clang / LLVM الذي يُنفّذ مجموعةً فرعيةً من كود C++17 و SPIR-V الوسيط. [ 63 ] [ 64 ] [ 65 ] عُرض الإصدار 3.0.7 من C++ for OpenCL مع بعض امتدادات Khronos لـ OpenCL في مؤتمر IWOCL 21. [ 66 ] الإصدار الحالي هو 3.0.11 مع بعض الامتدادات والتصحيحات الجديدة. قامت شركة NVIDIA، بالتعاون الوثيق مع فريق عمل Khronos OpenCL، بتحسين التوافق مع Vulkan باستخدام الإشارات الثنائية ومشاركة الذاكرة. [ 67 ] وكان آخر تحديث ثانوي هو الإصدار 3.0.14 الذي تضمن إصلاحًا للأخطاء وإضافةً جديدةً لدعم أجهزة متعددة. [ 68 ]

خارطة الطريق

ورشة العمل الدولية حول OpenCL (IWOCL) التي نظمتها مجموعة كرونوس

عند إصدار OpenCL 2.2، أعلنت مجموعة Khronos أن OpenCL ستعمل على دمجها مع Vulkan قدر الإمكان لتمكين مرونة نشر برامج OpenCL عبر واجهتي برمجة التطبيقات. [ 69 ] [ 70 ] وقد تم إثبات ذلك الآن من خلال برنامج Premiere Rush من Adobe باستخدام مُصرّف clspv [ 39 ] مفتوح المصدر لتجميع كميات كبيرة من كود نواة OpenCL C لتشغيله على بيئة تشغيل Vulkan لنشره على نظام Android. [ 71 ] لدى OpenCL خارطة طريق مستقبلية مستقلة عن Vulkan، حيث يجري تطوير OpenCL Next ومن المُستهدف إصداره في عام 2020. قد يدمج OpenCL Next امتدادات مثل التوافق بين Vulkan وOpenCL، وإدارة ذاكرة Scratch-Pad، والمجموعات الفرعية الموسعة، واستيعاب SPIR-V 1.4، ومعلومات تصحيح أخطاء SPIR-V الموسعة. كما تدرس OpenCL أيضًا مُحمّلًا وطبقات شبيهة بـ Vulkan و"ملف تعريف مرن" لمرونة النشر على أنواع مُسرّعات متعددة. [ 72 ]

تطبيقات مفتوحة المصدر

clinfoأداة سطر أوامر لعرض معلومات OpenCL

يتألف OpenCL من مجموعة من ملفات الرأس وكائن مشترك يتم تحميله أثناء التشغيل. يجب تثبيت برنامج تشغيل عميل قابل للتثبيت (ICD) على النظام الأساسي لكل فئة من فئات الموردين التي يحتاج وقت التشغيل إلى دعمها. على سبيل المثال، لدعم أجهزة Nvidia على نظام Linux، يجب تثبيت برنامج تشغيل Nvidia ICD بحيث يتمكن وقت تشغيل OpenCL (محمل ICD) من تحديد موقع برنامج التشغيل الخاص بالمورد وإعادة توجيه الاستدعاءات بشكل مناسب. يستخدم تطبيق المستهلك ملف رأس OpenCL القياسي؛ ثم يقوم وقت تشغيل OpenCL بتوجيه استدعاءات كل دالة إلى برنامج التشغيل المناسب باستخدام برنامج التشغيل ICD. يجب على كل مورد تنفيذ كل استدعاء OpenCL في برنامج التشغيل الخاص به. [ 73 ]

تعتمد تطبيقات OpenCL الخاصة بـ Apple [ 74 ] و Nvidia [ 75 ] و ROCm و RapidMind [ 76 ] و Gallium3D [ 77 ] على تقنية LLVM Compiler وتستخدم مترجم Clang كواجهة أمامية لها.

حاسوب ميسا غاليوم
يتم الحفاظ على تطبيق OpenCL (الإصدار 1.1 الحالي غير مكتمل، تم إنجاز معظمه على AMD Radeon GCN ) لعدد من المنصات كجزء من مشروع Gallium Compute، [ 78 ] الذي يعتمد على عمل مشروع Mesa لدعم منصات متعددة. كان يُعرف سابقًا باسم CLOVER، [ 79 ] التطوير الحالي: دعم تشغيل إطار عمل غير مكتمل مع LLVM وCLANG، وبعض الميزات الجديدة مثل fp16 في الإصدار 17.3، [ 80 ] الهدف هو OpenCL 1.0 و1.1 و1.2 كاملة لـ AMD وNvidia. يتم تطوير الأساسيات الجديدة بواسطة Red Hat باستخدام SPIR-V أيضًا لـ Clover. [ 81 ] [ 82 ] الهدف الجديد هو OpenCL 3.0 معياري مع دعم كامل لـ OpenCL 1.2. الحالة الحالية متاحة في Mesamatrix. يركز التطوير هنا على دعم الصور.
RustiCL هو تطبيق جديد لحوسبة Gallium باستخدام لغة Rust بدلاً من C. يتوفر في Mesa 22.2 تطبيق تجريبي يدعم OpenCL 3.0، بالإضافة إلى دعم امتدادات الصور لبرامج مثل Darktable. [ 83 ] يدعم Mesa 22.3 والإصدارات الأحدث معالجات Intel Xe (Arc) وAMD GCN+. كما يستهدف دعم الأجهزة معالجات AMD R600 وNvidia Kepler+. [ 84 ] [ 85 ] [ 86 ] يتفوق RustiCL على AMD ROCM مع معالج Radeon RX 6700 XT في اختبار Luxmark. [ 87 ] يدعم Mesa 23.1 الإصدار الرسمي من RustiCL. أما في Mesa 23.2، فلا يزال دعم fp64 المهم في مرحلة تجريبية.
أضاف نظام التشغيل ويندوز 11 من مايكروسوفت على معالجات Arm دعمًا لتقنية OpenCL 1.2 عبر CLon12، وهي تطبيق مفتوح المصدر لتقنية OpenCL مبني على DirectX 12 عبر Mesa Gallium . [ 88 ] [ 89 ] [ 90 ]
بينيه
أصدرت إنتل تطبيقًا لهذه التقنية لأجهزة Ivy Bridge+ في عام 2013. [ 91 ] وقد لاقى هذا البرنامج، الذي طوره فريق إنتل في الصين، انتقادات من مطوري AMD و Red Hat ، [ 92 ] بالإضافة إلى مايكل لارابيل من موقع Phoronix . [ 93 ] يدعم الإصدار الحالي 1.3.2 تقنية OpenCL 1.2 بشكل كامل (لأجهزة Ivy Bridge والإصدارات الأحدث)، بينما يدعم OpenCL 2.0 بشكل اختياري لأجهزة Skylake والإصدارات الأحدث. [ 94 ] [ 95 ] تمت إضافة دعم نظام Android إلى Beignet. [ 96 ] أما أهداف التطوير الحالية فهي: دعم الإصدارين 1.2 و2.0 فقط، بينما تم تأجيل دعم OpenCL 2.1 و2.2 و3.0 إلى NEO.
نيو
تم إصدار تطبيق من إنتل لأجهزة الجيل الثامن Broadwell والجيل التاسع في عام 2018. [ 97 ] يحل هذا المُشغّل محل تطبيق Beignet للأنظمة الأساسية المدعومة (باستثناء الأنظمة الأقدم من الجيل السادس إلى Haswell). يوفر NEO دعم OpenCL 2.1 على أنظمة Core وOpenCL 1.2 على أنظمة Atom. [ 98 ] في عام 2020، أصبح يدعم أيضًا معالجات الرسومات من الجيل الحادي عشر Ice Lake والجيل الثاني عشر Tiger Lake. يتوفر الآن OpenCL 3.0 الجديد لأنظمة Alder Lake وTiger Lake وBroadwell بدءًا من الإصدار 20.41. يتضمن هذا الإصدار الآن ميزات OpenCL 2.0 و2.1 الاختيارية، بالإضافة إلى بعض ميزات 2.2.
جمهورية الصين
تم تطوير ROCm (Radeon Open Compute) كجزء من مشروع GPUOpen التابع لشركة AMD ، وهو مشروع مفتوح المصدر يعمل بنظام Linux، مبني على OpenCL 1.2 مع دعم للغة 2.0. يتوافق النظام مع جميع وحدات المعالجة المركزية ووحدات المعالجة المسرعة (APUs) الحديثة من AMD (بما في ذلك جزئيًا GFX 7 وGFX 8 و9)، بالإضافة إلى وحدات المعالجة المركزية من Intel Gen7.5+ (مع PCI 3.0 فقط). [ 99 ] [ 100 ] مع الإصدار 1.9، تم توسيع الدعم تجريبيًا في بعض الجوانب ليشمل الأجهزة المزودة بـ PCIe 2.0 والتي لا تدعم العمليات الذرية. تم تقديم نظرة عامة على العمل الحالي في مؤتمر XDC2018. [ 101 ] [ 102 ] يدعم ROCm الإصدار 2.0 OpenCL 2.0 بالكامل، ولكن لا تزال بعض الأخطاء والقيود قيد التطوير. [ 103 ] [ 104 ] يشهد الإصدار 3.3 تحسينات في التفاصيل. [ 105 ] يدعم الإصدار 3.5 OpenCL 2.2. [ 106 ] تضمن الإصدار 3.10 تحسينات وواجهات برمجة تطبيقات جديدة. [ 107 ] أُعلن في مؤتمر SC20 عن ROCm 4.0 الذي يدعم بطاقة AMD Compute Card Instinct MI 100. [ 108 ] تتوفر الوثائق الفعلية للإصدار 5.5.1 وما قبله على GitHub. [ 109 ] [ 110 ] [ 111 ] يتوفر OpenCL 3.0. يدعم RocM 5.5.x والإصدارات الأحدث منه GFX 9 Vega والإصدارات الأحدث فقط، لذا فإن البدائل هي إصدارات RocM الأقدم أو RustiCL في المستقبل للأجهزة القديمة. 
POCL
تطبيق محمول يدعم وحدات المعالجة المركزية وبعض وحدات معالجة الرسومات (عبر CUDA و HSA ). مبني على Clang و LLVM . [ 112 ] مع الإصدار 1.0، تم تنفيذ OpenCL 1.2 بشكل شبه كامل إلى جانب بعض ميزات الإصدار 2.x. [ 113 ] الإصدار 1.2 يدعم LLVM/CLANG 6.0 و7.0 وOpenCL 1.2 بشكل كامل مع حل جميع المشكلات في المرحلة 1.2. [ 113 ] [ 114 ] تم تنفيذ OpenCL 2.0 بشكل شبه كامل. [ 115 ] الإصدار 1.3 يدعم نظام التشغيل Mac OS X. [ 116 ] الإصدار 1.4 يتضمن دعم LLVM 8.0 و9.0. [ 117 ] الإصدار 1.5 يدعم LLVM/Clang 10. [ 118 ] الإصدار 1.6 يدعم LLVM/Clang 11 وتسريع CUDA. [ 119 ] الأهداف الفعلية هي إكمال OpenCL 2.x وOpenCL 3.0 وتحسين الأداء. يتم تحسين OpenCL 1.6 يدويًا على نفس مستوى وقت تشغيل الحوسبة من Intel. [ 120 ] يدعم الإصدار 1.7 كلاً من LLVM/Clang 12 وبعض ميزات OpenCL 3.0 الجديدة. [ 121 ] يدعم الإصدار 1.8 كلاً من LLVM/Clang 13. [ 122 ] يدعم الإصدار 3.0 كلاً من OpenCL 3.0 كحد أدنى وLLVM/Clang 14. [ 123 ] يعمل الإصدار 3.1 مع LLVM/Clang 15 ودعم مُحسَّن لـ Spir-V. [ 124 ]
شامروك
منفذ Mesa Clover لـ ARM مع دعم كامل لـ OpenCL 1.2، [ 125 ] [ 126 ] لا يوجد تطوير فعلي لـ 2.0.
FreeOCL
تطبيق يركز على وحدة المعالجة المركزية لـ OpenCL 1.2 والذي يقوم بتنفيذ مترجم خارجي لإنشاء منصة أكثر موثوقية، [ 127 ] لا يوجد تطوير فعلي.
MOCL
في عام ٢٠١٨، أصدر باحثو جامعة الدفاع الوطني (NUDT) تطبيقًا لـ OpenCL مبنيًا على POCL لجهاز Matrix-2000. صُممت بنية Matrix-2000 لتحل محل معالجات Intel Xeon Phi المُسرّعة في الحاسوب العملاق TianHe-2. يعتمد إطار البرمجة هذا على LLVM v5.0، ويعيد استخدام بعض أجزاء من كود POCL. ولإطلاق العنان لإمكانات الجهاز، يستخدم وقت تشغيل الجهاز استراتيجية توزيع مهام قائمة على الدفع، مما يُحسّن أداء العمليات الذرية للنواة بشكل ملحوظ. تم نشر هذا الإطار على نظام TH-2A وهو متاح للعموم. [ ١٢٨ ] سيتم لاحقًا نقل بعض البرامج لتحسين POCL. [ ١١٣ ]
VC4CL
تطبيق OpenCL 1.2 لمعالج VideoCore IV (BCM2763) المستخدم في Raspberry Pi قبل طرازه 4. [ 129 ]

تطبيقات البائع

الجدول الزمني لتنفيذات الموردين

  • يونيو 2008: خلال مؤتمر آبل العالمي للمطورين (WWDC)، أُتيحت نسخة تجريبية مبكرة من نظام التشغيل Mac OS X Snow Leopard  للمشاركين، تضمنت أول تطبيق تجريبي لـ OpenCL، وذلك قبل حوالي ستة أشهر من اعتماد المواصفات النهائية للإصدار 1.0 في أواخر عام 2008. كما عُرضت تجربتان توضيحيتان. الأولى عبارة عن شبكة من 8×8 شاشات مُصممة، تعرض كل منها شاشة جهاز Apple II مُحاكى - 64 نسخة مستقلة إجمالاً، تُشغل كل منها لعبة كاراتيه شهيرة. وقد أظهر هذا التوازي في تنفيذ المهام على وحدة المعالجة المركزية (CPU). أما التجربة التوضيحية الثانية فكانت محاكاة لأجسام متعددة (N -body) تعمل على وحدة معالجة الرسومات (GPU) لجهاز Mac Pro، وهي مهمة تعتمد على توازي البيانات.
  • في 10 ديسمبر 2008، قدمت شركتا AMD وNvidia أول عرض توضيحي علني لتقنية OpenCL، وذلك خلال عرض تقديمي مدته 75 دقيقة في مؤتمر SIGGRAPH Asia 2008. عرضت AMD عرضًا توضيحيًا لتقنية OpenCL مُسرّعًا بواسطة وحدة المعالجة المركزية، موضحةً قابلية توسع OpenCL على نواة واحدة أو أكثر، بينما عرضت Nvidia عرضًا توضيحيًا مُسرّعًا بواسطة وحدة معالجة الرسومات. [ 130 ] [ 131 ]
  • في 16 مارس 2009: أعلنت شركة Imagination Technologies في معرض Multicore Expo الرابع عن PowerVR SGX543MP، وهو أول معالج رسومات من هذه الشركة يدعم OpenCL. [ 132 ]
  • 26 مارس 2009: في مؤتمر مطوري الألعاب GDC 2009 ، عرضت AMD و Havok أول تطبيق عملي لتسريع OpenCL لـ Havok Cloth على وحدة معالجة الرسومات ATI Radeon HD 4000. [ 133 ]
  • 20 أبريل 2009: أعلنت شركة Nvidia عن إصدار برنامج تشغيل OpenCL ومجموعة تطوير البرامج (SDK) للمطورين المشاركين في برنامج الوصول المبكر لـ OpenCL. [ 134 ]
  • 5 أغسطس 2009: كشفت شركة AMD عن أولى أدوات التطوير لمنصة OpenCL الخاصة بها كجزء من برنامج ATI Stream SDK v2.0 التجريبي. [ 135 ]
  • 28 أغسطس 2009: أصدرت شركة أبل نظام التشغيل Mac OS X Snow Leopard ، والذي يحتوي على تطبيق كامل لـ OpenCL. [ 136 ]
  • 28 سبتمبر 2009: أصدرت شركة Nvidia برامج تشغيل OpenCL الخاصة بها وتطبيق SDK.
  • في 13 أكتوبر 2009، أصدرت AMD النسخة التجريبية الرابعة من حزمة تطوير البرامج ATI Stream SDK 2.0، والتي توفر تطبيقًا كاملاً لتقنية OpenCL على كلٍ من وحدات معالجة الرسومات R700 / HD 5000 ووحدات المعالجة المركزية التي تدعم SSE3 . تتوفر حزمة تطوير البرامج لأنظمة Linux وWindows. [ 137 ]
  • 26 نوفمبر 2009: أصدرت شركة Nvidia برامج تشغيل لـ OpenCL 1.0 (المراجعة 48).
  • 27 أكتوبر 2009: أصدرت شركة S3 أول منتج لها يدعم OpenCL 1.0 الأصلي - وهو معالج الرسومات المدمج Chrome 5400E. [ 138 ]
  • 10 ديسمبر 2009: أصدرت شركة VIA أول منتج لها يدعم OpenCL 1.0 – معالج الفيديو ChromotionHD 2.0 المدمج في مجموعة شرائح VN1000. [ 139 ]
  • 21 ديسمبر 2009: أصدرت AMD النسخة الإنتاجية من ATI Stream SDK 2.0، [ 140 ] والتي توفر دعم OpenCL 1.0 لوحدات معالجة الرسومات HD 5000 ودعمًا تجريبيًا لوحدات معالجة الرسومات R700 .
  • 1 يونيو 2010: نشرت شركة ZiiLABS تفاصيل أول تطبيق لها لـ OpenCL لمعالج ZMS الخاص بالأجهزة المحمولة والمدمجة ومنتجات المنزل الرقمي. [ 141 ]
  • 30 يونيو 2010: أصدرت شركة IBM نسخة متوافقة تمامًا من OpenCL 1.0. [ 4 ]
  • ١٣ سبتمبر ٢٠١٠: كشفت شركة إنتل عن تفاصيل أول تطبيق لها لتقنية OpenCL لبنية شريحة Sandy Bridge. ستدمج Sandy Bridge أحدث تقنيات معالجات الرسومات من إنتل مباشرةً في وحدة المعالجة المركزية. [ ١٤٢ ]
  • 15 نوفمبر 2010: أصدرت شركة Wolfram Research برنامج Mathematica 8 مع حزمة OpenCLLink [ 143 ] .
  • في 3 مارس 2011، أعلنت مجموعة كرونوس عن تشكيل فريق عمل WebCL لاستكشاف إمكانية تعريف ربط جافا سكريبت بـ OpenCL. وهذا يتيح الاستفادة من المعالجة المتوازية لوحدات معالجة الرسومات ووحدات المعالجة المركزية متعددة النوى من متصفح الويب . [ 144 ] [ 145 ]
  • 31 مارس 2011: أصدرت شركة IBM نسخة متوافقة تمامًا من OpenCL 1.1. [ 4 ] [ 146 ]
  • 25 أبريل 2011: أصدرت شركة IBM الإصدار 0.1 من OpenCL Common Runtime لنظام Linux على معمارية x86. [ 147 ]
  • 4 مايو 2011: أصدرت نوكيا للأبحاث إضافة WebCL مفتوحة المصدر لمتصفح الويب فايرفوكس ، مما يوفر ربط جافا سكريبت بـ OpenCL. [ 148 ]
  • 1 يوليو 2011: أصدرت شركة سامسونج للإلكترونيات نموذجًا أوليًا مفتوح المصدر لتطبيق WebCL لـ WebKit، مما يوفر ربطًا بلغة JavaScript لـ OpenCL. [ 149 ]
  • 8 أغسطس 2011: أصدرت AMD حزمة تطوير البرمجيات (SDK) الخاصة بالمعالجة المتوازية المعجلة (APP) من AMD، والتي تعمل بتقنية OpenCL، الإصدار 2.5، لتحل محل حزمة تطوير البرمجيات ATI Stream SDK كتقنية ومفهوم. [ 150 ]
  • 12 ديسمبر 2011: أصدرت AMD حزمة تطوير تطبيقات AMD v2.6 [ 151 ] والتي تحتوي على معاينة لـ OpenCL 1.2.
  • 27 فبراير 2012: أصدرت مجموعة بورتلاند برنامج PGI OpenCL المترجم لوحدات المعالجة المركزية متعددة النوى ARM . [ 152 ]
  • 17 أبريل 2012: أصدرت شركة كرونوس مسودة عمل WebCL. [ 153 ]
  • 6 مايو 2013: أصدرت شركة Altera حزمة تطوير البرامج (SDK) الخاصة بـ OpenCL، الإصدار 13.0. [ 154 ] وهي متوافقة مع OpenCL 1.0. [ 155 ]
  • 18 نوفمبر 2013: أعلنت شركة كرونوس عن الانتهاء من وضع مواصفات OpenCL 2.0. [ 156 ]
  • 19 مارس 2014: أصدرت شركة كرونوس مواصفات WebCL 1.0. [ 157 ] [ 158 ]
  • 29 أغسطس 2014: أصدرت شركة إنتل برنامج تشغيل HD Graphics 5300 الذي يدعم OpenCL 2.0. [ 159 ]
  • 25 سبتمبر 2014: أصدرت AMD برنامج Catalyst 14.41 RC1، والذي يتضمن برنامج تشغيل OpenCL 2.0. [ 160 ]
  • 14 يناير 2015: أعلنت شركة Xilinx Inc. عن بيئة تطوير SDAccel للغات OpenCL وC وC++، وحصلت على شهادة التوافق مع Khronos. [ 161 ]
  • ١٣ أبريل ٢٠١٥: أصدرت شركة Nvidia برنامج تشغيل WHQL الإصدار ٣٥٠.١٢، والذي يتضمن دعم OpenCL ١.٢ لوحدات معالجة الرسومات (GPUs) المبنية على معمارية Kepler أو أحدث. [ ١٦٢ ] يدعم برنامج التشغيل ٣٤٠ وما بعده OpenCL ١.١ لمعماريتي Tesla وFermi.
  • 26 أغسطس 2015: أصدرت AMD حزمة تطوير تطبيقات AMD v3.0 [ 163 ] والتي تحتوي على دعم كامل لـ OpenCL 2.0 ونماذج برمجية.
  • 16 نوفمبر 2015: أعلنت شركة كرونوس عن الانتهاء من وضع مواصفات OpenCL 2.1. [ 164 ]
  • 18 أبريل 2016: أعلنت شركة كرونوس أن مواصفات OpenCL 2.2 قد تم الانتهاء منها بشكل مؤقت. [ 59 ]
  • 3 نوفمبر 2016: دعم Intel للجيل السابع وما بعده من OpenCL 2.1 في SDK 2016 r3. [ 165 ]
  • 17 فبراير 2017: بدأت شركة Nvidia دعم التقييم لـ OpenCL 2.0 مع برنامج التشغيل 378.66. [ 166 ] [ 167 ] [ 168 ]
  • 16 مايو 2017: أعلنت شركة كرونوس أن مواصفات OpenCL 2.2 قد تم الانتهاء منها مع SPIR-V 1.2. [ 169 ]
  • 14 مايو 2018: أعلنت شركة كرونوس عن تحديث صيانة لـ OpenCL 2.2 يتضمن إصلاح الأخطاء وتوحيد ملفات الرأس. [ 62 ]
  • 27 أبريل 2020: أعلنت شركة كرونوس عن إصدار تجريبي من OpenCL 3.0.
  • 1 يونيو 2020: وقت تشغيل Intel NEO مع OpenCL 3.0 لمعالج Tiger Lake الجديد.
  • 3 يونيو 2020: أعلنت AMD عن RocM 3.5 مع دعم OpenCL 2.2. [ 170 ]
  • 30 سبتمبر 2020: أعلنت شركة كرونوس أن مواصفات OpenCL 3.0 قد تم الانتهاء منها (CTS متاح أيضًا).
  • 16 أكتوبر 2020: أعلنت شركة إنتل عن دعمها لـ OpenCL 3.0 مع NEO 20.41 (يتضمن في الغالب OpenCL 2.x الاختياري).
  • 6 أبريل 2021: تدعم Nvidia تقنية OpenCL 3.0 لمعالجات Ampere. كما تدعم معالجات Maxwell وما بعدها تقنية OpenCL 3.0 مع برنامج تشغيل Nvidia 465+. [ 171 ]
  • 20 أغسطس 2022: وحدات معالجة الرسومات Intel Arc Alchemist (Arc A380 و A350M و A370M و A550M و A730M و A770M) متوافقة مع OpenCL 3.0. [ 172 ]
  • 14 أكتوبر 2022: Arm Mali-G615 وMali-G715-Immortalis متوافقان مع OpenCL 3.0. [ 172 ]
  • 11 نوفمبر 2022: مكتبة Rusticl OpenCL متوافقة مع OpenCL 3.0. [ 172 ] [ 173 ]

الأجهزة

اعتبارًا من عام 2016، يعمل OpenCL على وحدات معالجة الرسومات (GPUs) ووحدات المعالجة المركزية (CPUs ) المزودة بتعليمات SIMD و FPGAs و Movidius Myriad 2 و Adapteva Epiphany و DSPs .

مجموعة اختبار المطابقة لخرونوس

لكي يُعتبر التطبيق متوافقًا رسميًا، يجب أن يجتاز مجموعة اختبارات التوافق (CTS) الخاصة بـ Khronos، مع تقديم النتائج إلى برنامج Khronos للمتبنين. [ 174 ] يتوفر كود Khronos CTS لجميع إصدارات OpenCL كمصدر مفتوح منذ عام 2017. [ 175 ]

منتجات مطابقة

تحتفظ مجموعة كرونوس بقائمة موسعة من المنتجات المتوافقة مع OpenCL. [ 4 ]

ملخص المنتجات المتوافقة مع OpenCL [ 4 ]
AMD SDKs (تدعم أجهزة OpenCL CPU و APU )، (GPU: Terascale 1: OpenCL 1.1، Terascale 2: 1.2، GCN 1: 1.2+، GCN 2+: 2.0+)معالجات متوافقة مع X86 + SSE2 (أو أعلى) 64 بت و32 بت ، [ 176 ] نظام لينكس 2.6، ويندوز فيستا/7/8.x/10AMD Fusion E-350، E-240، C-50، C-30 مع HD 6310/HD 6250معالج رسومات AMD Radeon / Mobility HD 6800، وسلسلة HD 5x00، ومعالج رسومات مدمج HD 6310/HD 6250، وسلسلة HD 7xxx، وسلسلة HD 8xxx، وسلسلة R2xx، وسلسلة R3xx، وسلسلة RX 4xx، وسلسلة RX 5xx، وسلسلة Vegaمعالج الرسوميات AMD FirePro Vx800 وما بعده، Radeon Pro
حزمة تطوير البرامج (SDK) من إنتل لتطبيقات OpenCL 2013 [ 177 ] (تدعم معالجات Intel Core وبطاقات رسومات Intel HD Graphics 4000/2500)، الإصدار 2017 R2 مع OpenCL 2.1 (الجيل السابع وما بعده)، تم حذف OpenCL 2.1 من حزمة تطوير البرامج (SDK) 2019، [ 178 ] التحديث 3 الحالي لحزمة تطوير البرامج (SDK) 2020معالجات Intel التي تدعم SSE 4.1 أو SSE 4.2 أو AVX . [ 179 ] [ 180 ] أنظمة التشغيل: Microsoft Windows و Linuxمعالجات Intel Core i7 و i5 و i3 ؛ الجيل الثاني من معالجات Intel Core i7/5/3، والجيل الثالث من معالجات Intel Core المزودة بمعالج رسومات Intel HD Graphics 4000/2500 والإصدارات الأحدث.معالجات Intel Core 2 Solo و Duo Quad و Extreme والإصدارات الأحدثمعالجات Intel Xeon 7x00 و5x00 و3x00 (القائمة على النواة) والإصدارات الأحدث
خوادم IBM مع مجموعة تطوير OpenCL مؤرشفة في 9 أغسطس 2011، في Wayback Machine لنظام Linux على Power الذي يعمل على Power VSX [ 181 ] [ 182 ]IBM Power 775 ( PERCS750مركز IBM BladeCenter PS70x ExpressIBM BladeCenter JS2x، JS43مركز شفرة IBM QS22
تم أرشفة بيئة التشغيل المشتركة لـ IBM OpenCL (OCR) في 14 يونيو 2011 على موقع Wayback Machine .

[ 183 ]

معالجات متوافقة مع X86 + SSE2 (أو أعلى) 64 بت و32 بت؛ [ 184 ] نظام لينكس 2.6 للحاسوب الشخصيAMD Fusion و Nvidia Ion و Intel Core i7 و i5 و i3؛ الجيل الثاني من معالجات Intel Core i7/5/3AMD Radeon و Nvidia GeForce و Intel Core 2 Solo و Duo و Quad و ExtremeATI FirePro و Nvidia Quadro و Intel Xeon 7x00 و 5x00 و 3x00 (المعالجات القائمة على النواة)
برنامج تشغيل وأدوات Nvidia OpenCL ، [ 185 ] الرقاقات: Tesla  : OpenCL 1.1 (برنامج التشغيل 340)، Fermi  : OpenCL 1.1 (برنامج التشغيل 390)، Kepler  : OpenCL 1.2 (برنامج التشغيل 470)، OpenCL 2.0 بيتا (378.66)، OpenCL 3.0: Maxwell إلى Ada Lovelace (برنامج التشغيل 525+)إنفيديا تسلا سي/دي/إسNvidia GeForce GTS/GT/GTX،إنفيديا أيونNvidia Quadro FX/NVX/Plex، Quadro، Quadro K، Quadro M، Quadro P، Quadro مع Volta، Quadro RTX مع Turing، Ampere

يمكن الاستعلام عن جميع التطبيقات المتوافقة مع المعايير باستخدام إحدى أدوات clinfo (توجد أدوات متعددة تحمل نفس الاسم ومجموعة ميزات متشابهة). [ 186 ] [ 187 ] [ 188 ]

دعم الإصدارات

تشمل المنتجات وإصدارات دعم OpenCL الخاصة بها ما يلي: [ 189 ]

دعم OpenCL 3.0

جميع الأجهزة التي تدعم OpenCL 1.2+ ممكنة، وOpenCL 2.x اختياري فقط، ومجموعة اختبار Khronos متاحة منذ 2020-10 [ 190 ] [ 191 ]

  • (2020) Intel NEO Compute: 20.41+ للجيل 12 من Tiger Lake إلى Broadwell (بما في ذلك الدعم الكامل 2.0 و 2.1 وأجزاء من 2.2) [ 192 ]
  • (2020) معالجات Intel من الجيل السادس والسابع والثامن والتاسع والعاشر والحادي عشر ( Skylake و Kaby Lake و Coffee Lake و Comet Lake و Ice Lake و Tiger Lake ) مع أحدث برنامج تشغيل رسومات Intel لنظام Windows
  • (2021) معالجات Intel من الجيل الحادي عشر والثاني عشر ( Rocket Lake ، Alder Lake ) مع أحدث برنامج تشغيل رسومات Intel لنظام Windows
  • (2021) Arm Mali-G78، Mali-G310، Mali-G510، Mali-G610، Mali-G710 و Mali-G78AE.
  • (2022) معالجات إنتل من الجيل الثالث عشر ( رابتر ليك ) مع أحدث برنامج تشغيل رسومات إنتل لنظام ويندوز
  • (2022) بطاقة رسومات Intel Arc منفصلة مع أحدث برنامج تشغيل رسومات Intel Arc لنظام التشغيل Windows
  • (2021) Nvidia Maxwell و Pascal و Volta و Turing و Ampere مع برنامج تشغيل رسومات Nvidia 465+. [ 171 ]
  • (2022) Nvidia Ada Lovelace مع برنامج تشغيل الرسومات Nvidia 525+.
  • (2022) معالج الرسوميات Samsung Xclipse 920 (المبني على AMD RDNA2)
  • (2023) معالجات إنتل من الجيل الرابع عشر ( رابتر ليك ) قم بتحديثها بأحدث برنامج تشغيل رسومات إنتل لنظام ويندوز
  • معالجات Intel Core Ultra Series 1 ( Meteor Lake ) لعام 2023 مع أحدث برنامج تشغيل رسومات Intel لنظام Windows

دعم OpenCL 2.2

لا يوجد شيء حتى الآن : مجموعة اختبار Khronos جاهزة، مع تحديث برنامج التشغيل، جميع الأجهزة التي تدعم الإصدارين 2.0 و2.1 ممكنة

  • إنتل نيو كومبيوت: العمل جارٍ على تطوير المنتجات الفعلية [ 193 ]
  • ROCm: الإصدار 3.5+ في الغالب

دعم OpenCL 2.1

  • (2018+) تم نقل الدعم إلى معالجات Intel من الجيل الخامس والسادس ( Broadwell ، Skylake )
  • (2017+) معالجات Intel من الجيل السابع والثامن والتاسع والعاشر ( Kaby Lake و Coffee Lake و Comet Lake و Ice Lake )
  • (2017+) معالجات Intel Xeon Phi (Knights Landing) (وقت تشغيل تجريبي)
  • كرونوس: مع تحديث برنامج التشغيل، يمكن تشغيل جميع الأجهزة التي تدعم الإصدار 2.0

دعم OpenCL 2.0

  • معالجات الرسوميات AMD GCN (من عام 2011 فصاعدًا) (HD 7700+/HD 8000/Rx 200/Rx 300/Rx 400/Rx 500/Rx 5000-Series)، بعضها من الجيل الأول من GCN فقط 1.2 مع بعض الإضافات.
  • (2013+) وحدات المعالجة المركزية AMD GCN APU ( جاغوار ، ستيمرولر ، بوما ، إكساكاڤيتور ، ووحدات المعالجة المركزية Zen )
  • (2014+) معالجات إنتل من الجيل الخامس والسادس ( برودويل ، سكايليك )
  • (2015+) سلسلة كوالكوم أدرينو 5xx
  • (2018+) سلسلة كوالكوم أدرينو 6xx
  • (2017+) معالج ARM Mali (Bifrost) G51 و G71 في نظامي التشغيل Android 7.1 و Linux
  • (2018+) ARM Mali (Bifrost) G31، G52، G72 وG76
  • (2017+) دعم التقييم غير مكتمل: وحدات معالجة الرسومات Nvidia Kepler و Maxwell و Pascal و Volta و Turing (سلسلة GeForce 600 و 700 و 800 و 900 و 10، وسلسلة Quadro K و M و P، وسلسلة Tesla K و M و P) مع إصدار برنامج التشغيل 378.66+

دعم OpenCL 1.2

  • (2011+) بالنسبة لبعض معالجات AMD GCN من الجيل الأول، بعض ميزات OpenCL 2.0 غير ممكنة اليوم، ولكن مع العديد من الامتدادات أكثر من Terascale
  • (2009+) معالجات الرسومات AMD TeraScale 2 و 3 (RV8xx، RV9xx في سلسلة HD 5000 و 6000 و 7000)
  • (2011+) وحدات المعالجة المركزية AMD TeraScale APU ( المبنية على K10 و Bobcat و Piledriver )
  • (2012+) وحدات معالجة الرسومات Nvidia Kepler و Maxwell و Pascal و Volta و Turing (سلسلة GeForce 600 و 700 و 800 و 900 و 10 و 16 و 20، وسلسلة Quadro K و M و P، وسلسلة Tesla K و M و P)
  • (2012+) معالجات إنتل من الجيل الثالث والرابع ( Ivy Bridge ، Haswell )
  • (2013+) معالجات Intel Xeon Phi المساعدة (Knights Corner)
  • (2013+) سلسلة كوالكوم أدرينو 4xx
  • (2013+) ARM Mali Midgard الجيل الثالث (T760)
  • (2015+) ARM Mali Midgard الجيل الرابع (T8xx)

دعم OpenCL 1.1

  • (2008+) بعض وحدات معالجة الرسومات AMD TeraScale 1 (RV7xx في سلسلة HD4000)
  • (2008+) معالجات الرسومات Nvidia Tesla و Fermi (سلسلة GeForce 8، 9، 100، 200، 300، 400، 500، سلسلة Quadro أو سلسلة Tesla مع معالج رسومات Tesla أو Fermi )
  • (2011+) سلسلة كوالكوم أدرينو 3xx
  • (2012+) ARM Mali Midgard الجيل الأول والثاني (T-6xx، T720)

دعم OpenCL 1.0

  • تم تحديث معظمها إلى الإصدارين 1.1 و1.2 بعد الإصدار الأول من برنامج التشغيل الخاص بالإصدار 1.0 فقط

قابلية النقل والأداء والبدائل

من أهم ميزات OpenCL قابليتها للنقل، وذلك بفضل نموذج الذاكرة والتنفيذ المجرد ، ولا يستطيع المبرمج استخدام تقنيات خاصة بالأجهزة مثل تنفيذ الخيوط المتوازية المضمنة (PTX) لوحدات معالجة الرسومات من Nvidia مباشرةً إلا إذا كان مستعدًا للتخلي عن قابلية النقل المباشرة على منصات أخرى. ويمكن تشغيل أي نواة OpenCL على أي تطبيق متوافق.

مع ذلك، لا يُمكن بالضرورة نقل أداء النواة بين المنصات المختلفة. وقد أظهرت التطبيقات الحالية قدرتها التنافسية عند ضبط كود النواة بشكل صحيح، واقتُرح الضبط التلقائي كحل لمشكلة قابلية نقل الأداء، [ 194 ] مما أدى إلى "مستويات أداء مقبولة" في نوى الجبر الخطي التجريبية. [ 195 ] كما دُرست قابلية نقل تطبيق كامل يحتوي على نوى متعددة ذات سلوكيات مختلفة، وأظهرت أن قابلية النقل لا تتطلب سوى تنازلات محدودة. [ 196 ]

أظهرت دراسة أجريت في جامعة دلفت عام 2011، قارنت بين برامج CUDA وترجمتها المباشرة إلى لغة OpenCL C، أن أداء CUDA يتفوق على OpenCL بنسبة لا تتجاوز 30% في تطبيق Nvidia. وأشار الباحثون إلى إمكانية جعل المقارنة أكثر عدلاً بتطبيق تحسينات يدوية على برامج OpenCL، وفي هذه الحالة "لا يوجد سبب لانخفاض أداء OpenCL عن CUDA". ويمكن عزو فروق الأداء في الغالب إلى اختلافات في نموذج البرمجة (وخاصة نموذج الذاكرة) وإلى تحسينات مُصرّف Nvidia لـ CUDA مقارنةً بتحسينات OpenCL. [ 194 ]

وجدت دراسة أخرى أجريت في شركة D-Wave Systems Inc. أن "أداء نواة OpenCL أبطأ بنسبة تتراوح بين 13% و63%، والوقت الإجمالي أبطأ بنسبة تتراوح بين 16% و67%" من أداء CUDA. [ 197 ]

بما أن OpenCL يسمح بمشاركة أحمال العمل بين وحدة المعالجة المركزية ووحدة معالجة الرسومات، مع تنفيذ البرامج نفسها، فإن ذلك يُمكّن المبرمجين من استغلال كليهما بتقسيم العمل بينهما. [ 198 ] ويؤدي هذا إلى مشكلة تحديد كيفية تقسيم العمل، نظرًا لاختلاف السرعات النسبية للعمليات بين الأجهزة. وقد اقتُرح استخدام التعلّم الآلي لحل هذه المشكلة: إذ يصف غريوي وأوبويل نظامًا من آلات المتجهات الداعمة المُدرّبة على خصائص وقت الترجمة للبرنامج، والتي يمكنها تحديد مشكلة تقسيم الجهاز بشكل ثابت، دون الحاجة إلى تشغيل البرامج فعليًا لقياس أدائها. [ 199 ]

أظهرت مقارنة بين بطاقات الرسومات الفعلية من AMD RDNA 2 وسلسلة Nvidia RTX نتائج غير حاسمة في اختبارات OpenCL. ولم يتم اختبار التحسينات المحتملة في الأداء الناتجة عن استخدام Nvidia CUDA أو OptiX. [ 200 ]

انظر أيضاً

مراجع

  1. "v3.1.1" . 23 مايو 2026. تم الاطلاع عليه في 23 مايو 2026 .
  2. "أجهزة أندرويد التي تدعم OpenCL" . مستندات جوجل . ArrayFire. مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 28 أبريل 2015 .
  3. "رسومات FreeBSD/OpenCL" . FreeBSD. مؤرشف من الأصل في 8 فبراير 2021. تم الاطلاع عليه في 23 ديسمبر 2015 .
  4. 1 2 3 4 5 "المنتجات المطابقة" . مجموعة كرونوس. مؤرشف من الأصل في 29 يونيو 2018. تم الاطلاع عليه في 9 مايو 2015 .
  5. "مواصفات OpenCL™ C" . registry.khronos.org .
  6. "الشركات المتوافقة" . مجموعة كرونوس. مؤرشف من الأصل في 19 فبراير 2021. تم الاطلاع عليه في 19 سبتمبر 2024 .
  7. جيانيلي، سيلفيا إي. (14 يناير 2015). "بيئة تطوير Xilinx SDAccel للغات OpenCL وC وC++، تحقق التوافق مع Khronos" . PR Newswire . Xilinx. مؤرشف من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 27 أبريل 2015 .
  8. هاوز، لي (11 نوفمبر 2015). "مواصفات OpenCL، الإصدار: 2.1، مراجعة الوثيقة: 23" (ملف PDF) . مجموعة عمل كرونوس OpenCL. مؤرشف (ملف PDF) من الأصل بتاريخ 18 نوفمبر 2015. تم الاطلاع عليه بتاريخ 16 نوفمبر 2015 .
  9. 1 2 جاستر، بنديكت؛ هاوز، لي؛ كايلي، ديفيد ر .؛ ميستري، بيرهاد؛ شا، دانا (2012). الحوسبة غير المتجانسة باستخدام OpenCL: الطبعة المنقحة من OpenCL 1.2 . مورغان كوفمان.
  10. تومبسون، جوناثان؛ شلاتشر، كريستوفر (2012). "مقدمة إلى نموذج برمجة OpenCL" (ملف PDF) . مختبر أبحاث الإعلام بجامعة نيويورك. مؤرشف من الأصل (ملف PDF) في 6 يوليو 2015. تم الاطلاع عليه في 6 يوليو 2015 .
  11. ستون ، جون إي.؛ جوهارا، ديفيد؛ شي، غوتشين (2010). " OpenCL: معيار برمجة متوازية لأنظمة الحوسبة غير المتجانسة" . الحوسبة في العلوم والهندسة . 12 ( 3 ): 66-73 . Bibcode : 2010CSE....12c..66S . doi : 10.1109/MCSE.2010.69 . PMC 2964860. PMID 21037981 .  
  12. كلوكنر، أندرياس؛ بينتو، نيكولاس؛ لي، يونسوب؛ كاتانزارو، برايان؛ إيفانوف، بول؛ فصيح، أحمد (2012). "PyCUDA وPyOpenCL: منهج قائم على البرمجة النصية لتوليد التعليمات البرمجية في وقت تشغيل وحدة معالجة الرسومات". الحوسبة المتوازية . 38 (3): 157-174 . arXiv : 0911.3456 . doi : 10.1016/j.parco.2011.09.001 .
  13. "OpenCL - روابط لغة الحوسبة المفتوحة" . MetaCPAN . metacpan.org. مؤرشف من الأصل في 28 فبراير 2021. تم الاطلاع عليه في 18 أغسطس 2018 .
  14. "ربط D لـ OpenCL" . dlang.org. مؤرشف من الأصل في 28 يوليو 2017. تم الاطلاع عليه في 29 يونيو 2021 .
  15. "SPIR - أول لغة وسيطة مفتوحة المصدر للحوسبة المتوازية والرسومات" . مجموعة كرونوس . 21 يناير 2014. مؤرشف من الأصل في 4 أكتوبر 2022. تم الاطلاع عليه في 24 أكتوبر 2016 .
  16. "SYCL – برمجة غير متجانسة أحادية المصدر بلغة C++ لـ OpenCL" . مجموعة كرونوس . 21 يناير 2014. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 24 أكتوبر 2016 .
  17. 1 2 3 "C++ لـ OpenCL، دليل OpenCL" . GitHub . مؤرشف من الأصل في 8 يناير 2025. تم الاطلاع عليه في 18 أبريل 2021 .
  18. 1 2 3 منشي، آفتاب، محرر. (2014). "مواصفات OpenCL C، الإصدار 2.0" (ملف PDF) . مؤرشف (ملف PDF) من الأصل في 15 أكتوبر 2016. تم الاطلاع عليه في 24 يونيو 2014 .
  19. 1 2 "مقدمة في برمجة OpenCL 201005" (ملف PDF) . AMD. الصفحات 89-90 . مؤرشف من النسخة الأصلية (ملف PDF) بتاريخ 16 مايو 2011. تم الاطلاع عليه بتاريخ 8 أغسطس 2017 . 
  20. "OpenCL" (ملف PDF) . مؤتمر SIGGRAPH2008. 14 أغسطس 2008. مؤرشف من النسخة الأصلية (ملف PDF) في 16 فبراير 2012. تم الاطلاع عليه في 14 أغسطس 2008 .
  21. "تطبيق خوارزمية تحويل فورييه السريع على بنية G80" (ملف PDF) . فاسيلي فولكوف وبريان كازيان، تقرير مشروع CS258، جامعة كاليفورنيا، بيركلي. مايو 2008. مؤرشف (ملف PDF) من النسخة الأصلية في 4 مارس 2012. تم الاطلاع عليه في 14 نوفمبر 2008 .
  22. "OpenCL_FFT" . أبل. 26 يونيو 2012. مؤرشف من الأصل في 18 فبراير 2019. تم الاطلاع عليه في 18 يونيو 2022 .
  23. 1 2 سوتشاكي، بارتوش (19 يوليو 2019). "مواصفات OpenCL C++ 1.0" (ملف PDF) . مجموعة عمل كرونوس OpenCL. مؤرشف (ملف PDF) من الأصل في 6 مارس 2021. تم الاطلاع عليه في 19 يوليو 2019 .
  24. "وثائق لغة البرمجة C++ لـ OpenCL 1.0 و2021" . مجموعة عمل كرونوس OpenCL. 20 ديسمبر 2021. مؤرشف من الأصل في 26 يناير 2025. تم الاطلاع عليه في 2 ديسمبر 2022 .
  25. تريفيت، نيل (28 أبريل 2020). "إعلانات كرونوس وحلقة نقاش" (ملف PDF) . مؤرشف (ملف PDF) من الأصل في 18 أبريل 2021. تم الاطلاع عليه في 18 أبريل 2021 .
  26. ستولوفا، أناستاسيا؛ هيكي، نيل؛ فان هاستريخت، سفين؛ أنتونيني، ماركو؛ بيتي، كيفن (2020). "لغة برمجة C++ لـ OpenCL". وقائع ورشة العمل الدولية حول OpenCL . ص 1-2 . doi : 10.1145/3388333.3388647 . ISBN  978-1-4503-7531-3.
  27. 1 2 KhronosGroup/OpenCL-Docs ، مجموعة كرونوس، 16 أبريل 2021 ، تم الاطلاع عليه في 18 أبريل 2021
  28. "وثائق إصدار Clang 9، دعم OpenCL" . releases.llvm.org . سبتمبر 2019. تم الاطلاع عليه في 18 أبريل 2021 .
  29. "Clang 9، ملحقات اللغة، OpenCL" . releases.llvm.org . سبتمبر 2019. تم الاطلاع عليه في 18 أبريل 2021 .
  30. "إصدار وثائق لغة C++ لنواة OpenCL، الإصدار 1.0، المراجعة 1 · KhronosGroup/OpenCL-Docs" . GitHub . ديسمبر 2020. مؤرشف من الأصل في 16 ديسمبر 2024. تم الاطلاع عليه في 18 أبريل 2021 .
  31. "إصدار وثائق لغة C++ لنواة OpenCL، الإصدار 1.0 و2021 · KhronosGroup/OpenCL-Docs" . GitHub . ديسمبر 2021. مؤرشف من الأصل في 26 يناير 2025. تم الاطلاع عليه في 2 ديسمبر 2022 .
  32. 1 2 "وثائق لغة البرمجة C++ لـ OpenCL 1.0" . www.khronos.org . تم الاطلاع عليه بتاريخ 18 أبريل 2021 .
  33. 1 2 3 4 "إصدار وثائق لغة C++ لنواة OpenCL، الإصدار 1.0، المراجعة 2 · KhronosGroup/OpenCL-Docs" . GitHub . مارس 2021. تم الاطلاع عليه في 18 أبريل 2021 .
  34. "cl_ext_cxx_for_opencl" . www.khronos.org . سبتمبر 2020. تم الاطلاع عليه في 18 أبريل 2021 .
  35. "مجموعة تطوير البرامج (SDK) الخاصة بـ Mali تدعم تجميع النوى بلغة C++ لـ OpenCL" . community.arm.com . ديسمبر 2020. تم الاطلاع عليه في 18 أبريل 2021 .
  36. "دليل مستخدم مُصرّف Clang - دعم C++ لـ OpenCL" . clang.llvm.org . تم الاطلاع عليه بتاريخ 18 أبريل 2021 .
  37. "دليل OpenCL، تجميع مصادر نواة OpenCL دون اتصال بالإنترنت" . GitHub . تم الاطلاع عليه في 18 أبريل 2021 .
  38. "دليل OpenCL، برمجة نواة OpenCL" . GitHub . تم الاطلاع عليه في 18 أبريل 2021 .
  39. 1 2 Clspv هو مُجمِّع أولي لمجموعة فرعية من مُظلِّلات الحوسبة OpenCL C إلى Vulkan: google/clspv ، 17 أغسطس 2019، مؤرشف من الأصل في 28 نوفمبر 2020 ، تم استرجاعه في 20 أغسطس 2019
  40. بيتيت، كيفن (17 أبريل 2021)، تطبيق تجريبي لـ OpenCL على Vulkan ، تم الاطلاع عليه في 18 أبريل 2021
  41. "مجموعة كرونوس تطلق مبادرة الحوسبة غير المتجانسة" (بيان صحفي). مجموعة كرونوس. 16 يونيو 2008. مؤرشف من الأصل في 20 يونيو 2008. تم الاطلاع عليه في 18 يونيو 2008 .
  42. "الترويج لـ OpenCL في تكساس" . ماك وورلد. 20 نوفمبر 2008. مؤرشف من الأصل في 18 فبراير 2009. تم الاطلاع عليه في 12 يونيو 2009 .
  43. «مجموعة كرونوس تُصدر مواصفات OpenCL 1.0» (بيان صحفي). مجموعة كرونوس. 8 ديسمبر 2008. مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 4 ديسمبر 2016 .
  44. «أبل تُقدّم عرضًا أوليًا لنظام التشغيل ماك أو إس إكس سنو ليوبارد للمطورين» (بيان صحفي). شركة أبل، 9 يونيو 2008. مؤرشف من الأصل في 18 مارس 2012. تم الاطلاع عليه في 9 يونيو 2008 .
  45. «شركة AMD تقود تبني معايير الصناعة في تطوير برمجيات GPGPU» (بيان صحفي). AMD. 6 أغسطس 2008. مؤرشف من الأصل في 20 مارس 2012. تم الاطلاع عليه في 14 أغسطس 2008 .
  46. "شركة AMD تدعم OpenCL وMicrosoft DirectX 11" . eWeek. 6 أغسطس 2008. تم الاطلاع عليه بتاريخ 14 أغسطس 2008 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  47. "HPCWire: RapidMind تتبنى مشاريع المصادر المفتوحة والمعايير" . HPCWire. 10 نوفمبر 2008. مؤرشف من الأصل في 18 ديسمبر 2008. تم الاطلاع عليه في 11 نوفمبر 2008 .
  48. «إنفيديا تضيف OpenCL إلى مجموعة أدوات الحوسبة الرسومية الرائدة في الصناعة» (بيان صحفي). إنفيديا. 9 ديسمبر 2008. مؤرشف من الأصل في 2 يوليو 2019. تم الاطلاع عليه في 10 ديسمبر 2008 .
  49. "مجموعة أدوات تطوير OpenCL لنظام Linux على معالجات Power" . alphaWorks. 30 أكتوبر 2009. مؤرشف من الأصل في 9 أغسطس 2011. تم الاطلاع عليه في 30 أكتوبر 2009 .
  50. "مواصفات OpenCL الإصدار: 1.0 مراجعة الوثيقة: 48" (PDF) . مجموعة عمل كرونوس OpenCL.
  51. "كرونوس تدفع زخم معيار الحوسبة المتوازية بإصدار مواصفات OpenCL 1.1" . مؤرشف من الأصل في 2 مارس 2016. تم الاطلاع عليه في 24 فبراير 2016 .
  52. "شركة كرونوس تُصدر مواصفات OpenCL 1.2" . مجموعة كرونوس. 15 نوفمبر 2011. مؤرشف من الأصل في 2 ديسمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  53. 1 2 3 "مواصفات OpenCL 1.2" (ملف PDF) . مجموعة كرونوس. مؤرشف (ملف PDF) من الأصل بتاريخ 18 نوفمبر 2016. تم الاطلاع عليه بتاريخ 23 يونيو 2015 .
  54. "مجموعة كرونوس تُنهي مواصفات OpenCL 2.0 للحوسبة غير المتجانسة" . مجموعة كرونوس. 18 نوفمبر 2013. مؤرشف من الأصل في 11 نوفمبر 2020. تم الاطلاع عليه في 10 فبراير 2014 .
  55. «أصدرت شركة كرونوس مواصفات OpenCL 2.1 وSPIR-V 1.0 للبرمجة المتوازية غير المتجانسة» . مجموعة كرونوس. 16 نوفمبر 2015. مؤرشف من الأصل في 8 نوفمبر 2020. تم الاطلاع عليه في 16 نوفمبر 2015 .
  56. "شركة كرونوس تعلن عن OpenCL 2.1: لغة C++ تدعم OpenCL" . موقع AnandTech. 3 مارس 2015. مؤرشف من الأصل في 4 مارس 2015. تم الاطلاع عليه في 8 أبريل 2015 .
  57. «شركة كرونوس تُصدر المواصفات المؤقتة لـ OpenCL 2.1 للمراجعة العامة» . مجموعة كرونوس. 3 مارس 2015. مؤرشف من الأصل في 2 ديسمبر 2020. تم الاطلاع عليه في 8 أبريل 2015 .
  58. "نظرة عامة على OpenCL" . مجموعة كرونوس. 21 يوليو 2013. مؤرشف من الأصل في 9 أغسطس 2011. تم الاطلاع عليه في 10 فبراير 2015 .
  59. ١ ٢ "أصدرت شركة كرونوس المواصفات المؤقتة لـ OpenCL 2.2 مع لغة نواة OpenCL C++ للبرمجة المتوازية" . مجموعة كرونوس . ١٨ أبريل ٢٠١٦. مؤرشف من الأصل في ٨ نوفمبر ٢٠٢٠. تم الاطلاع عليه في ٢ مايو ٢٠١٦ .
  60. تريفيت، نيل (أبريل 2016). "OpenCL - نظرة عامة" (ملف PDF) . IWOCL . فيينا : مجموعة كرونوس . مؤرشف (PDF) من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 2 يناير 2017 .
  61. "شركة كرونوس تُصدر OpenCL 2.2 مع SPIR-V 1.2" . مجموعة كرونوس . 16 مايو 2017. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 16 مايو 2017 .
  62. ١ ٢ "إصدار تحديث صيانة OpenCL 2.2" . مجموعة كرونوس . ١٤ مايو ٢٠١٨. مؤرشف من الأصل في ٢ ديسمبر ٢٠٢٠. تم الاطلاع عليه في ١٧ أكتوبر ٢٠١٨ .
  63. "OpenCL 3.0 يوفر مرونة أكبر، وامتدادات DMA غير متزامنة" . www.phoronix.com . مؤرشف من الأصل في 6 مايو 2024. تم الاطلاع عليه في 4 فبراير 2023 .
  64. "مجموعة كرونوس تُصدر OpenCL 3.0" . 26 أبريل 2020. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 28 أبريل 2020 .
  65. "مواصفات OpenCL" (ملف PDF) . مجموعة عمل كرونوس OpenCL. مؤرشف (ملف PDF) من الأصل بتاريخ 20 سبتمبر 2020. تم الاطلاع عليه بتاريخ 3 مايو 2020 .
  66. تريفيت، نيل (2021). "حالة الاتحاد: فريق عمل OpenCL" (ملف PDF) . ص 9. مؤرشف (ملف PDF) من الأصل في 16 يوليو 2024. تم الاطلاع عليه في 29 أبريل 2021 . 
  67. "استخدام امتدادات الإشارات الثنائية ومشاركة الذاكرة للتوافق مع Vulkan وNVIDIA OpenCL" . 24 فبراير 2022. مؤرشف من الأصل في 6 يوليو 2022. تم الاطلاع عليه في 24 فبراير 2022 .
  68. "إصدار OpenCL 3.0.14 مع إضافة جديدة لمخزن الأوامر متعدد الأجهزة" . مؤرشف من الأصل بتاريخ 8 أكتوبر 2024. تم الاطلاع عليه بتاريخ 3 أغسطس 2023 .
  69. "خبر عاجل: خارطة طريق دمج OpenCL في Vulkan | منظور الحاسوب الشخصي" . www.pcper.com . مؤرشف من الأصل في 1 نوفمبر 2017. تم الاطلاع عليه في 17 مايو 2017 .
  70. "مؤتمر سيغراف 2018: OpenCL-Next يتشكل، وVulkan يواصل التطور - فورونيكس" . www.phoronix.com . مؤرشف من الأصل بتاريخ 28 أكتوبر 2020. تم الاطلاع عليه بتاريخ 17 أكتوبر 2018 .
  71. "تحديث فولكان في مؤتمر سيغراف 2019" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 20 أغسطس 2019. تم الاطلاع عليه بتاريخ 20 أغسطس 2019 .
  72. تريفيت، نيل (23 مايو 2019). "نظرة عامة على كرونوس وأوبن سي إل - ورشة عمل EVS مايو 2019" (ملف PDF) . مجموعة كرونوس . مؤرشف (ملف PDF) من الأصل في 17 يوليو 2020. تم الاطلاع عليه في 4 أغسطس 2019 .
  73. "مواصفات OpenCL ICD" . مؤرشفة من الأصل في 6 ديسمبر 2016. تم الاطلاع عليها في 23 يونيو 2015 .
  74. "مقال أبل على صفحة مستخدمي LLVM" . مؤرشف من الأصل بتاريخ 23 فبراير 2021. تم الاطلاع عليه بتاريخ 29 أغسطس 2009 .
  75. "مقال إنفيديا على صفحة مستخدمي LLVM" . مؤرشف من الأصل بتاريخ 23 فبراير 2021. تم الاطلاع عليه بتاريخ 6 أغسطس 2009 .
  76. "مقال Rapidmind على صفحة مستخدمي LLVM" . مؤرشف من الأصل بتاريخ 23 فبراير 2021. تم الاطلاع عليه بتاريخ 1 أكتوبر 2009 .
  77. "منشور مدونة زاك روسين حول تطبيق Gallium3D OpenCL" . فبراير 2009. تم الاطلاع عليه في 1 أكتوبر 2009 .
  78. "GalliumCompute" . dri.freedesktop.org. مؤرشف من الأصل في 20 مارس 2014. تم الاطلاع عليه في 23 يونيو 2015 .
  79. "تحديث حالة Clover" (ملف PDF) . مؤرشف (ملف PDF) من الأصل بتاريخ 16 يناير 2017. تم الاطلاع عليه بتاريخ 12 نوفمبر 2016 .
  80. "mesa/mesa – مكتبة ميسا للرسومات ثلاثية الأبعاد" . cgit.freedesktop.org . مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 20 سبتمبر 2017 .
  81. "Gallium Clover مع SPIR-V وNIR يفتح آفاقًا جديدة للحوسبة داخل Mesa - Phoronix" . www.phoronix.com . مؤرشف من الأصل بتاريخ 22 أكتوبر 2020. تم الاطلاع عليه بتاريخ 13 ديسمبر 2018 .
  82. كلارك، روب؛ هيربست، كارول (2018). "دعم OpenCL داخل ميسا من خلال SPIR-V وNIR" (ملف PDF) . مؤرشف (PDF) من الأصل في 12 نوفمبر 2020. تم الاطلاع عليه في 13 ديسمبر 2018 .
  83. "تطبيق Rusticl الخاص بـ Mesa يدعم الآن OpenCL الخاص بـ Darktable" . مؤرشف من الأصل بتاريخ 25 مايو 2022. تم الاطلاع عليه بتاريخ 18 مايو 2022 .
  84. "برنامج Rusticl من Mesa يحقق التوافق الرسمي مع OpenCL 3.0" .
  85. "إصدار Mesa 22.3 مع RDNA3 Vulkan وRusticl OpenCL ورسومات Intel Arc محسّنة" . مؤرشف من الأصل بتاريخ 19 فبراير 2023. تم الاطلاع عليه بتاريخ 4 مارس 2023 .
  86. "برنامج تشغيل OpenCL الخاص بـ Mesa's Rusticl جاهز تقريبًا مع دعم AMD Radeon GPU" .
  87. "يمكن لتطبيق Rusticl OpenCL الخاص بـ Mesa أن يتفوق على حزمة حساب ROCm الخاصة بـ Radeon" .
  88. "حالة نظام ويندوز على معالجات Arm64: نظرة عامة" . تشيبس آند تشيز . 13 مارس 2022. تم الاطلاع عليه بتاريخ 23 أكتوبر 2023 .
  89. "تقديم OpenCL وOpenGL على DirectX" . Collabora | استشارات المصادر المفتوحة . تم الاطلاع عليه بتاريخ 23 أكتوبر 2023 .
  90. "نظرة معمقة على طبقات OpenGL عبر DirectX" . Collabora | استشارات المصادر المفتوحة . تم الاطلاع عليه بتاريخ 23 أكتوبر 2023 .
  91. لارابيل، مايكل (10 يناير 2013). "بيغنيه: OpenCL/GPGPU قادم إلى Ivy Bridge على نظام لينكس" . فورونيكس . مؤرشف من الأصل في 12 نوفمبر 2020. تم الاطلاع عليه في 14 سبتمبر 2016 .
  92. لارابيل، مايكل (16 أبريل 2013). "مزيد من الانتقادات تتجه نحو برنامج Beignet OpenCL من إنتل" . فورونيكس . مؤرشف من الأصل في 30 نوفمبر 2020. تم الاطلاع عليه في 14 سبتمبر 2016 .
  93. لارابيل، مايكل (24 ديسمبر 2013). "لا تزال تقنية Beignet OpenCL من إنتل قيد التطوير ببطء" . فورونيكس . مؤرشف من الأصل في 30 نوفمبر 2020. تم الاطلاع عليه في 14 سبتمبر 2016 .
  94. "Beignet" . freedesktop.org. مؤرشف من الأصل في 12 نوفمبر 2020. تم الاطلاع عليه في 12 نوفمبر 2016 .
  95. "beignet – مكتبة Beignet OpenCL لمعالجات Intel Ivy Bridge ووحدات معالجة الرسومات الأحدث" . cgit.freedesktop.org . مؤرشف من الأصل في 27 فبراير 2021. تم الاطلاع عليه في 2 يناير 2017 .
  96. "إنتل تُضيف Beignet إلى نظام أندرويد للحوسبة باستخدام OpenCL - Phoronix" . www.phoronix.com . مؤرشف من الأصل بتاريخ 30 نوفمبر 2020. تم الاطلاع عليه بتاريخ 12 نوفمبر 2016 .
  97. "01.org Intel Open Source – Compute Runtime" . 7 فبراير 2018. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 10 أبريل 2018 .
  98. "ملف README الخاص بـ NEO على GitHub" . GitHub . 21 مارس 2019. مؤرشف من الأصل في 26 فبراير 2021. تم الاطلاع عليه في 10 أبريل 2018 .
  99. "ROCm" . GitHub . مؤرشف من الأصل في 8 أكتوبر 2016.
  100. "RadeonOpenCompute/ROCm: ROCm – منصة مفتوحة المصدر للحوسبة عالية الأداء والحوسبة فائقة السرعة باستخدام وحدات معالجة الرسومات" . GitHub. 21 مارس 2019. مؤرشف من الأصل في 18 فبراير 2021. تم الاطلاع عليه في 30 ديسمبر 2016 .
  101. "نظرة عامة رائعة على حزمة الحوسبة ROCm Linux - Phoronix" . www.phoronix.com . مؤرشف من الأصل في 9 نوفمبر 2020. تم الاطلاع عليه في 13 ديسمبر 2018 .
  102. "XDC Lightning.pdf" . مستندات جوجل . مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 21 مارس 2019 .
  103. "إصدار Radeon ROCm 2.0 رسميًا مع دعم OpenCL 2.0 وTensorFlow 1.12 وVega 48-bit VA – Phoronix" . www.phoronix.com . مؤرشف من الأصل بتاريخ 26 سبتمبر 2020. تم الاطلاع عليه بتاريخ 13 يناير 2019 .
  104. "تجربة أداء Radeon ROCm 2.0 OpenCL - Phoronix" . www.phoronix.com . مؤرشف من الأصل بتاريخ 20 سبتمبر 2020. تم الاطلاع عليه بتاريخ 13 يناير 2019 .
  105. https://github.com/RadeonOpenCompute/ROCm/blob/master/AMD_ROCm_Release_Notes_v3.3.pdf
  106. "إصدار Radeon ROCm 3.5 بميزات جديدة ولكن بدون دعم Navi - Phoronix" . مؤرشف من الأصل في 4 ديسمبر 2020. تم الاطلاع عليه في 1 ديسمبر 2020 .
  107. "إصدار Radeon ROCm 3.10 مع تحسينات على أدوات مراكز البيانات وواجهات برمجة تطبيقات جديدة - Phoronix" . مؤرشف من الأصل بتاريخ 17 يناير 2021. تم الاطلاع عليه بتاريخ 3 ديسمبر 2020 .
  108. "أطلقت AMD بطاقة Arcturus كبديل لبطاقة Instinct MI100 وبطاقة Radeon ROCm 4.0 - Phoronix" . مؤرشف من الأصل بتاريخ 16 ديسمبر 2020. تم الاطلاع عليه بتاريخ 17 نوفمبر 2020 .
  109. "مرحباً بكم في منصة AMD ROCm™ — وثائق ROCm 1.0.0" . مؤرشف من الأصل بتاريخ 24 أبريل 2020. تم الاطلاع عليه بتاريخ 28 أبريل 2020 .
  110. "الصفحة الرئيسية" . docs.amd.com . مؤرشف من الأصل في 12 مايو 2022. تم الاطلاع عليه في 18 مايو 2022 .
  111. "وثائق AMD - البوابة" .
  112. ^ ياسكيلينن، بيكا؛ سانشيز دي لاما، كارلوس؛ شنيتر، إريك؛ رايسكيلا، كالي؛ تاكالا، جارمو؛ بيرج ، هيكي (2016). "pocl: تنفيذ OpenCL محمول الأداء". البرمجة المتوازية الدولية . 43 (5): 752-785 . أرخايف : 1611.07083 . بيب كود : 2016arXiv161107083J . دوى : 10.1007/s10766-014-0320-y .
  113. 1 2 3 "صفحة pocl الرئيسية" . pocl . مؤرشف من الأصل في 1 ديسمبر 2019 . تم الاسترجاع في 12 تشرين الثاني (نوفمبر) 2016 .
  114. ^ "GitHub – pocl/pocl: pocl: لغة الحوسبة المحمولة" . 14 مارس 2019. مؤرشفة من الأصلي في 25 فبراير 2021 . تم الاسترجاع 22 مارس، 2017 عبر جيثب.
  115. "حالة تنفيذ دعم HSA اعتبارًا من 17 مايو 2016 - وثائق لغة الحوسبة المحمولة (pocl) 1.3-pre" . portablecl.org . مؤرشف من الأصل في 2 مارس 2021. تم الاطلاع عليه في 26 سبتمبر 2018 .
  116. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 7 نوفمبر 2020. تم الاطلاع عليه في 29 ديسمبر 2019 .
  117. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 27 فبراير 2021. تم الاطلاع عليه في 29 ديسمبر 2019 .
  118. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 28 أبريل 2020 .
  119. "إصدار POCL 1.6-RC1 مع أداء CUDA مُحسّن - Phoronix" . مؤرشف من الأصل بتاريخ 17 يناير 2021. تم الاطلاع عليه بتاريخ 3 ديسمبر 2020 .
  120. باومان، توبياس؛ نواك، ماتياس؛ شتاينكه، توماس (2021). "تقييم الأداء وتحسينات تطبيق PoCL مفتوح المصدر لـ OpenCL على معالجات Intel" (ملف PDF) . ص 51. مؤرشف (PDF) من الأصل في 29 أبريل 2021. تم الاطلاع عليه في 29 أبريل 2021 . 
  121. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 19 مايو 2021. تم الاطلاع عليه في 26 يونيو 2021 .
  122. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 12 أكتوبر 2021. تم الاطلاع عليه في 18 مايو 2022 .
  123. "الصفحة الرئيسية لـ PoCL" . مؤرشف من الأصل في 11 يونيو 2022. تم الاطلاع عليه في 17 يونيو 2022 .
  124. "الصفحة الرئيسية لـ PoCL" .
  125. "حول" . Git.Linaro.org . مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 12 نوفمبر 2016 .
  126. غال، ت.؛ بيتني، ج. (6 مارس 2014). "LCA14-412: GPGPU على نظام ARM SoC" (ملف PDF) . خدمات أمازون السحابية . مؤرشف من الأصل (ملف PDF) في 26 يوليو 2020. تم الاطلاع عليه في 22 يناير 2017 .
  127. "zuzuf/freeocl" . GitHub . مؤرشف من الأصل في 27 فبراير 2021. تم الاطلاع عليه في 13 أبريل 2017 .
  128. تشانغ، بنغ؛ فانغ، جيان بين؛ يانغ، كان تشون؛ تانغ، تاو؛ هوانغ، تشون؛ وانغ، تشنغ (2018). MOCL: تطبيق OpenCL فعال لبنية Matrix-2000 (ملف PDF) . وقائع المؤتمر الدولي حول آفاق الحوسبة. doi : 10.1145/3203217.3203244 . مؤرشف (ملف PDF) من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 19 يونيو 2018 .
  129. "الحالة" . جيت هاب . ١٦ مارس ٢٠٢٢. مؤرشف من الأصل في ٢٤ فبراير ٢٠٢١. تم الاسترجاع في ٤ مارس ٢٠٢١ .
  130. "عرض توضيحي لتقنية OpenCL، معالج AMD" . يوتيوب . ١٠ ديسمبر ٢٠٠٨. مؤرشف من الأصل في ٧ يوليو ٢٠١٣. تم الاطلاع عليه في ٢٨ مارس ٢٠٠٩ .
  131. "عرض توضيحي لتقنية OpenCL، وحدة معالجة الرسومات من Nvidia" . يوتيوب . ١٠ ديسمبر ٢٠٠٨. مؤرشف من الأصل في ٣٠ يوليو ٢٠١٣. تم الاطلاع عليه في ٢٨ مارس ٢٠٠٩ .
  132. "شركة إيماجينيشن تكنولوجيز تُطلق عائلة معالجات الرسوميات متعددة المعالجات POWERVR SGX543MP المتطورة وعالية الكفاءة" . إيماجينيشن تكنولوجيز. ١٩ مارس ٢٠٠٩. مؤرشف من الأصل في ٣ أبريل ٢٠١٤. تم الاطلاع عليه في ٣٠ يناير ٢٠١١ .
  133. "عرض توضيحي من AMD و Havok لفيزياء مُسرّعة بتقنية OpenCL" . مجلة PC Perspective. 26 مارس 2009. مؤرشف من الأصل في 5 أبريل 2009. تم الاطلاع عليه في 28 مارس 2009 .
  134. "إنفيديا تُصدر برنامج تشغيل OpenCL للمطورين" . إنفيديا. 20 أبريل 2009. مؤرشف من الأصل في 4 فبراير 2012. تم الاطلاع عليه في 27 أبريل 2009 .
  135. "شركة AMD تُجري عملية عكسية لمعالجة الرسومات على وحدات معالجة الرسومات، وتُعلن عن حزمة تطوير برمجيات OpenCL لأنظمة x86" . آرس تكنيكا. 5 أغسطس 2009. تاريخ الاطلاع: 6 أغسطس 2009 .
  136. مورين، دان؛ سنيل، جيسون (8 يونيو 2009). "تحديث مباشر: الكلمة الرئيسية في مؤتمر WWDC 2009" . MacWorld.com . MacWorld. مؤرشف من الأصل في 4 مارس 2012. تم الاطلاع عليه في 12 يونيو 2009 .
  137. "برنامج ATI Stream Software Development Kit (SDK) v2.0 Beta Program" . مؤرشف من الأصل في 9 أغسطس 2009. تم الاطلاع عليه في 14 أكتوبر 2009 .
  138. "أطلقت شركة S3 Graphics معالج الرسومات المدمج Chrome 5400E" . مؤرشف من الأصل في 2 ديسمبر 2009. تم الاطلاع عليه في 27 أكتوبر 2009 .
  139. "شركة VIA تُطلق معالج الرسومات VN1000 المُحسّن" . مؤرشف من الأصل بتاريخ 15 ديسمبر 2009. تم الاطلاع عليه بتاريخ 10 ديسمبر 2009 .
  140. "مجموعة تطوير البرامج ATI Stream SDK الإصدار 2.0 مع دعم OpenCL 1.0" . مؤرشفة من الأصل في 1 نوفمبر 2009. تم الاطلاع عليها في 23 أكتوبر 2009 .
  141. "OpenCL" . ZiiLABS. مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 23 يونيو 2015 .
  142. "إنتل تكشف عن تفاصيل تقنية جديدة لمعالج ساندي بريدج" . مؤرشف من الأصل في 31 أكتوبر 2013. تم الاطلاع عليه في 13 سبتمبر 2010 .
  143. "نظرة عامة على OpenCLLink - وثائق Wolfram Mathematica 9" . مؤرشف من الأصل في 31 أكتوبر 2013. تم الاطلاع عليه في 28 نوفمبر 2010 .
  144. "قصص متعلقة بـ WebCL" . مجموعة كرونوس. مؤرشف من الأصل في 26 نوفمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  145. "مجموعة كرونوس تُصدر المواصفات النهائية لـ WebGL 1.0" . مؤرشف من الأصل بتاريخ 9 يوليو 2015. تم الاطلاع عليه بتاريخ 23 يونيو 2015 .
  146. "مطور IBM" . developer.ibm.com . مؤرشف من الأصل في 26 فبراير 2021. تم الاطلاع عليه في 21 مارس 2019 .
  147. "مرحباً بكم في ويكي" . www.ibm.com . 20 أكتوبر 2009. مؤرشف من الأصل في 19 ديسمبر 2019. تم الاطلاع عليه في 21 مارس 2019 .
  148. "نوكيا للأبحاث تُصدر نموذجًا أوليًا لـ WebCL" . مجموعة كرونوس. 4 مايو 2011. مؤرشف من الأصل في 5 ديسمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  149. كاماث ك، شارث. "نموذج سامسونج الأولي لـ WebCL لـ WebKit" . Github.com. مؤرشف من الأصل في 18 فبراير 2015. تم الاطلاع عليه في 23 يونيو 2015 .
  150. "شركة AMD ترفع مستوى أداء وحدة المعالجة المركزية المدمجة (APU) من خلال تطوير برمجيات OpenCL المحدثة" . Amd.com. 8 أغسطس 2011. مؤرشف من الأصل في 19 مارس 2014. تم الاطلاع عليه في 16 يونيو 2013 .
  151. "AMD APP SDK v2.6" . Forums.amd.com. 13 مارس 2015. تم الاطلاع عليه في 23 يونيو 2015 .
  152. «مجموعة بورتلاند تعلن عن مُجمِّع OpenCL لأنظمة NovaThor SoCs القائمة على معالجات ARM من ST-Ericsson» . مؤرشف من الأصل في 1 مارس 2012. تم الاطلاع عليه في 4 مايو 2012 .
  153. "أحدث مواصفات WebCL" . مجموعة كرونوس . 7 نوفمبر 2013. مؤرشف من الأصل في 1 أغسطس 2014. تم الاطلاع عليه في 23 يونيو 2015 .
  154. "ألترا تفتح عالم معالجات FPGA لمبرمجي البرمجيات من خلال توفير واسع النطاق لمجموعات تطوير البرمجيات (SDK) واللوحات الجاهزة للاستخدام مع OpenCL" . Altera.com. مؤرشف من الأصل في 9 يناير 2014. تم الاطلاع عليه في 9 يناير 2014 .
  155. «تُعدّ حزمة تطوير البرمجيات Altera SDK لـ OpenCL الأولى في الصناعة التي تحقق توافق Khronos مع FPGAs» . Altera.com. مؤرشفة من الأصل بتاريخ 9 يناير 2014. تم الاطلاع عليها بتاريخ 9 يناير 2014 .
  156. "مجموعة كرونوس تُنهي مواصفات OpenCL 2.0 للحوسبة غير المتجانسة" . مجموعة كرونوس. 18 نوفمبر 2013. مؤرشف من الأصل في 11 نوفمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  157. "بيان صحفي حول WebCL 1.0" . مجموعة كرونوس. 19 مارس 2014. مؤرشف من الأصل في 25 نوفمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  158. "مواصفات WebCL 1.0" . مجموعة كرونوس. 14 مارس 2014. مؤرشف من الأصل في 11 نوفمبر 2020. تم الاطلاع عليه في 23 يونيو 2015 .
  159. "برنامج تشغيل Intel OpenCL 2.0" . تم الاطلاع عليه بتاريخ 14 أكتوبر 2014 .{{cite web}}: CS1 maint: deprecated archiveal service ( link )
  160. "برنامج تشغيل AMD OpenCL 2.0" . Support.AMD.com . ١٧ يونيو ٢٠١٥. مؤرشف من الأصل في ٥ نوفمبر ٢٠١٨. تم الاطلاع عليه في ٢٣ يونيو ٢٠١٥ .
  161. «بيئة تطوير Xilinx SDAccel للغات OpenCL وC وC++، تحقق التوافق مع معايير Khronos - أخبار khronos.org» . مجموعة Khronos . مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 26 يونيو 2017 .
  162. "إصدار 349 من برامج تشغيل الرسومات لنظام التشغيل ويندوز، الإصدار 350.12" (ملف PDF) . 13 أبريل 2015. مؤرشف (ملف PDF) من الأصل في 4 فبراير 2016. تم الاطلاع عليه في 4 فبراير 2016 .
  163. "إصدار AMD APP SDK 3.0" . Developer.AMD.com . 26 أغسطس 2015. مؤرشف من الأصل في 5 مايو 2016. تم الاطلاع عليه في 11 سبتمبر 2015 .
  164. «أصدرت شركة كرونوس مواصفات OpenCL 2.1 وSPIR-V 1.0 للبرمجة المتوازية غير المتجانسة» . مجموعة كرونوس . 16 نوفمبر 2015. مؤرشف من الأصل في 8 نوفمبر 2020. تم الاطلاع عليه في 16 نوفمبر 2015 .
  165. "ما الجديد؟ حزمة تطوير البرمجيات Intel® SDK لتطبيقات OpenCL™ 2016، الإصدار 3" . برمجيات Intel. مؤرشف من الأصل في 8 يوليو 2018. تم الاطلاع عليه في 17 مارس 2017 .
  166. "توفر برامج تشغيل NVIDIA 378.66 لنظام التشغيل Windows دعمًا تجريبيًا لـ OpenCL 2.0" . مجموعة كرونوس . 17 فبراير 2017. مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 17 مارس 2017 .
  167. سزوب، جاكوب (22 فبراير 2017). "إنفيديا تُفعّل دعم الإصدار التجريبي من OpenCL 2.0" . مؤرشف من الأصل في 11 نوفمبر 2020. تم الاطلاع عليه في 21 مارس 2019 .
  168. سزوب، جاكوب (6 مارس 2017). "دعم NVIDIA التجريبي لـ OpenCL 2.0 يعمل على نظام Linux أيضًا" . مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 21 مارس 2019 .
  169. "مجموعة كرونوس" . مجموعة كرونوس . 21 مارس 2019. مؤرشف من الأصل في 6 أغسطس 2020. تم الاطلاع عليه في 25 مايو 2017 .
  170. "GitHub – RadeonOpenCompute/ROCm at roc-3.5.0" . GitHub . مؤرشف من الأصل في 6 مارس 2021. تم الاطلاع عليه في 2 أغسطس 2020 .
  171. 1 2 "أصبحت NVIDIA الآن متوافقة مع OpenCL 3.0" . 12 أبريل 2021.
  172. 1 2 3 "مجموعة خرونوس" . مجموعة خرونوس . 12 ديسمبر 2022 . تم الاسترجاع في 12 ديسمبر 2022 .
  173. "برنامج Rusticl من Mesa يحصل على اعتماد رسمي لـ OpenCL 3.0" . www.phoronix.com . تاريخ الاطلاع: 12 ديسمبر 2022 .
  174. "مجموعة كرونوس" . مجموعة كرونوس . 20 أغسطس 2019. مؤرشف من الأصل في 6 مارس 2021. تم الاطلاع عليه في 20 أغسطس 2019 .
  175. "KhronosGroup/OpenCL-CTL: اختبارات التوافق مع OpenCL" . GitHub. 21 مارس 2019. مؤرشف من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 18 يوليو 2017 .
  176. "OpenCL و AMD APP SDK" . مركز مطوري AMD . developer.amd.com. مؤرشف من الأصل في 4 أغسطس 2011. تم الاطلاع عليه في 11 أغسطس 2011 .
  177. "حول Intel OpenCL SDK 1.1" . software.intel.com . intel.com. مؤرشف من الأصل في 4 نوفمبر 2011. تم الاطلاع عليه في 11 أغسطس 2011 .
  178. "ملاحظات إصدار Intel® SDK لتطبيقات OpenCL™" . software.intel.com . 14 مارس 2019. مؤرشف من الأصل في 26 ديسمبر 2019. تم الاطلاع عليه في 17 أكتوبر 2018 .
  179. "دعم المنتج" . مؤرشف من الأصل في 23 يونيو 2015. تم الاطلاع عليه في 11 أغسطس 2011 .
  180. "ملاحظات إصدار حزمة تطوير البرمجيات Intel OpenCL" . مؤرشفة من الأصل بتاريخ 17 يوليو 2011. تم الاطلاع عليها بتاريخ 11 أغسطس 2011 .
  181. "الإعلان عن حزمة تطوير OpenCL لنظام Linux على معالجات Power الإصدار 0.3" . شركة IBM . مؤرشف من الأصل بتاريخ 25 أكتوبر 2012. تم الاطلاع عليه بتاريخ 11 أغسطس 2011 .
  182. «أصدرت شركة IBM حزمة تطوير OpenCL لنظام Linux على معالجات Power الإصدار 0.3 - إصدار متوافق مع OpenCL 1.1 متوفر الآن» . OpenCL Lounge . ibm.com. مؤرشف من الأصل بتاريخ 4 مارس 2016. تم الاطلاع عليه بتاريخ 11 أغسطس 2011 .
  183. "أصدرت شركة IBM بيئة تشغيل OpenCL المشتركة لنظام Linux على معمارية x86" . IBM . 20 أكتوبر 2009. مؤرشف من الأصل في 4 مارس 2016. تم الاطلاع عليه في 10 سبتمبر 2011 .
  184. "OpenCL و AMD APP SDK" . مركز مطوري AMD . developer.amd.com. مؤرشف من الأصل في 6 سبتمبر 2011. تم الاطلاع عليه في 10 سبتمبر 2011 .
  185. "إنفيديا تُصدر برنامج تشغيل OpenCL" . 22 أبريل 2009. مؤرشف من الأصل في 6 مارس 2021. تم الاطلاع عليه في 11 أغسطس 2011 .
  186. "clinfo من تأليف سيمون لوبلان" . جيت هاب . مؤرشف من الأصل في 25 فبراير 2021. تم الاطلاع عليه في 27 يناير 2017 .
  187. "clinfo by Oblomov" . GitHub . مؤرشف من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 27 يناير 2017 .
  188. "clinfo: معلومات حول OpenCL" . 2 أبريل 2013. مؤرشف من الأصل في 5 أغسطس 2020. تم الاطلاع عليه في 27 يناير 2017 .
  189. "منتجات كرونوس" . مجموعة كرونوس . مؤرشف من الأصل في 28 يناير 2017. تم الاطلاع عليه في 15 مايو 2017 .
  190. "OpenCL-CTS/Test_conformance at main · KhronosGroup/OpenCL-CTS" . GitHub . مؤرشف من الأصل في 24 فبراير 2021. تم الاطلاع عليه في 30 أبريل 2020 .
  191. "المشاكل · KhronosGroup/OpenCL-CTS" . GitHub .
  192. "Intel Compute-Runtime 20.43.18277 يدعم معالجات Alder Lake" . مؤرشف من الأصل بتاريخ 29 نوفمبر 2020. تم الاطلاع عليه بتاريخ 17 نوفمبر 2020 .
  193. "compute-runtime" . 01.org . 7 فبراير 2018. مؤرشف من الأصل في 18 يناير 2021. تم الاطلاع عليه في 10 أبريل 2018 .
  194. 1 2 فانغ، جيان بين؛ فاربانيسكو، آنا لوسيا؛ سيبس، هينك (2011). "مقارنة شاملة لأداء CUDA وOpenCL". المؤتمر الدولي للمعالجة المتوازية 2011. وقائع المؤتمر الدولي للمعالجة المتوازية. الصفحات 216-225 . doi : 10.1109/ICPP.2011.45 . ISBN  978-1-4577-1336-1.
  195. دو، بينغ؛ ويبر، ريك؛ لوشتشيك، بيوتر؛ توموف، ستانيمير؛ بيترسون، غريغوري؛ دونغارا، جاك (أغسطس 2012). "من CUDA إلى OpenCL: نحو حل قابل للنقل من حيث الأداء لبرمجة وحدات معالجة الرسومات متعددة المنصات". الحوسبة المتوازية . 38 (8): 391-407 . doi : 10.1016/j.parco.2011.10.002 .
  196. دولبو، رومان؛ بودان، فرانسوا؛ دي فيرديير، غيوم كولين (7 سبتمبر 2013). "لغة OpenCL واحدة تحكمها جميعًا؟". ورشة عمل IEEE الدولية السادسة لأنظمة الحوسبة متعددة/كثيرة النوى (MuCoCoS) لعام 2013. الصفحات 1-6 . doi : 10.1109/MuCoCoS.2013.6633603 . ISBN  978-1-4799-1010-6.
  197. كريمي، كامران؛ ديكسون، نيل ج.؛ حمزة، فراس (2011). "مقارنة أداء CUDA و OpenCL". arXiv : 1005.2581v3 [ cs.PF ].
  198. دراسة استقصائية لتقنيات الحوسبة غير المتجانسة لوحدة المعالجة المركزية ووحدة معالجة الرسومات، ACM Computing Surveys، 2015.
  199. غريوي، دومينيك؛ أوبويل، مايكل إف بي (2011). "نهج تقسيم المهام الثابت للأنظمة غير المتجانسة باستخدام OpenCL". بناء المترجمات . وقائع المؤتمر الدولي حول بناء المترجمات. سلسلة محاضرات في علوم الحاسوب. المجلد 6601. الصفحات 286-305 . doi : 10.1007/978-3-642-19861-8_16 . ISBN   978-3-642-19860-1.
  200. "سلسلة Radeon RX 6800 تتمتع بأداء ممتاز في OpenCL القائم على ROCm على نظام Linux" . www.phoronix.com . مؤرشف من الأصل في 4 فبراير 2023. تم الاطلاع عليه في 4 فبراير 2023 .