SYCL
SYCL (تُنطق "سيكل") هي نموذج برمجة عالي المستوى لتحسين إنتاجية البرمجة على مختلف مُسرّعات الأجهزة . وهي لغة برمجة مُدمجة خاصة بالمجال ( eDSL ) أحادية المصدر، مبنية على لغة C++17 . وهي معيار طورته مجموعة كرونوس ، وأُعلن عنه في مارس 2014.
أصل الاسم
كانت SYCL (تُنطق "سيكل") في الأصل اختصارًا لـ System-wide Compute Language ، [ 2 ] ولكن منذ عام 2020، صرح مطورو SYCL بأن SYCL هو اسم وأوضحوا أنه لم يعد اختصارًا ولا يحتوي على أي إشارة إلى OpenCL . [ 3 ]
غاية
SYCL هي طبقة تجريد مجانية ومتعددة المنصات، مبنية على المفاهيم الأساسية وقابلية النقل والكفاءة المستوحاة من OpenCL، والتي تُمكّن من كتابة التعليمات البرمجية للمعالجات غير المتجانسة بأسلوب "المصدر الواحد" باستخدام لغة C++ القياسية بالكامل . تُمكّن SYCL من تطوير التعليمات البرمجية من مصدر واحد، حيث يمكن أن تحتوي دوال القوالب في C++ على كلٍ من التعليمات البرمجية للمضيف والجهاز لإنشاء خوارزميات معقدة تستخدم مُسرّعات الأجهزة ، ثم إعادة استخدامها في جميع أنحاء التعليمات البرمجية المصدرية على أنواع مختلفة من البيانات.
بينما بدأ معيار SYCL كنموذج برمجة عالي المستوى ضمن مجموعة عمل OpenCL ، وطُوّر في الأصل للاستخدام مع OpenCL و SPIR ، أصبح SYCL مجموعة عمل تابعة لمجموعة Khronos مستقلة عن مجموعة عمل OpenCL منذ 20 سبتمبر 2019. وابتداءً من SYCL 2020، عُمّم SYCL ليصبح إطار عمل غير متجانس أكثر عمومية، قادرًا على استهداف أنظمة أخرى. أصبح هذا ممكنًا الآن بفضل مفهوم الواجهة الخلفية العامة التي تستهدف أي واجهة برمجة تطبيقات للتسريع، مع تمكين التوافق التام مع واجهة برمجة التطبيقات المستهدفة ، مثل استخدام المكتبات الأصلية الموجودة لتحقيق أقصى أداء، إلى جانب تبسيط عملية البرمجة. على سبيل المثال، يستهدف تطبيق AdaptiveCPP كلاً من ROCm و CUDA عبر HIP متعدد البائعين من AMD .
الإصدارات
تم تقديم SYCL في مؤتمر GDC في مارس 2014 بإصدار تجريبي 1.2، [ 4 ] ثم تم تقديم الإصدار النهائي SYCL 1.2 في مؤتمر IWOCL 2015 في مايو 2015. [ 5 ]
أحدث إصدار لسلسلة SYCL 1.2.1 السابقة هو SYCL 1.2.1 المراجعة 7 والذي تم نشره في 27 أبريل 2020 (تم نشر الإصدار الأول في 6 ديسمبر 2017 [ 6 ] ).
تم تقديم الإصدار التجريبي من SYCL 2.2 في مؤتمر IWOCL 2016 في مايو 2016 [ 7 ] مستهدفًا C++14 و OpenCL 2.2. لكن لجنة SYCL فضلت عدم اعتماد هذا الإصدار والتوجه نحو مواصفات SYCL أكثر مرونة لمعالجة التنوع المتزايد لمسرعات الأجهزة الحالية ، بما في ذلك محركات الذكاء الاصطناعي ، مما أدى إلى إصدار SYCL 2020.
أحدث إصدار هو SYCL 2020، المراجعة 6، الذي نُشر في 13 نوفمبر 2022، وهو تطوير للإصدار الأول، المراجعة 2، الذي نُشر في 9 فبراير 2021، [ 8 ] مع الأخذ في الاعتبار ملاحظات المستخدمين والمطورين على المراجعة 1 من المواصفات المؤقتة لـ SYCL 2020، التي نُشرت في 30 يونيو 2020. [ 9 ] يُعد دعم C++17 وOpenCL 3.0 من الأهداف الرئيسية لهذا الإصدار. وتُعتبر الذاكرة المشتركة الموحدة (USM) إحدى الميزات الرئيسية لوحدات معالجة الرسومات (GPUs) التي تدعم OpenCL وCUDA.
في مؤتمر IWOCL 2021، تم عرض خارطة طريق. تُعدّ DPC++ وComputeCpp وAdaptiveCPP وtriSYCL وneoSYCL التطبيقات الرئيسية لـ SYCL. والهدف التالي في التطوير هو دعم C++20 في SYCL 202x المستقبلي. [ 10 ]
التطبيقات
| اسم | ميزات واجهة المستخدم الأمامية لـ SYCL | واجهات برمجة التطبيقات/الأجهزة الخلفية | ملاحظات / الحالة |
|---|---|---|---|
| لغة C++ المتوازية للبيانات (DPC++) | SYCL 2020 ( C++17 وأجزاء من C++20 ) [ 11 ] | LLVM و oneAPI [ 12 ] | مشروع مفتوح المصدر لشركة إنتل . |
| ComputeCpp | متوافق مع معيار SYCL 1.2.1 [ 13 ] | لم يتم تفصيل الواجهات الخلفية المحددة، ولكن الإطار يحتوي على أدلة دعم للمنصة. [ 14 ] | إطار عمل Codeplay الخاص بالشركة مع إصدار مجتمعي. تم إيقاف استخدامه الآن لصالح DPC++. [ 15 ] |
| AdaptiveCpp (المعروف سابقًا باسم hipSYCL و Open SYCL) | دعم غير مكتمل للإصدار 1.2.1 (صور مفقودة، توافق OpenCL)؛ جزئيًا SYCL 2020. [ 16 ] يدعم أيضًا التوازي القياسي C++ ( std::execution) و PCUDA، وهي لهجة من نموذج برمجة CUDA /HIP. | AMD (ROCm)، Nvidia (CUDA)، Intel (المستوى صفر عبر SPIR-V)، ووحدات المعالجة المركزية (LLVM + OpenMP) [ 17 ] | يمكن إنتاج ملفات ثنائية عامة بالكامل باستخدام وقت تشغيل فوري. [ 18 ] |
| ثلاثي النظام | غير مكتمل. يحتوي على C++20. | يعتمد على OpenMP و OpenCL . يدعم تجريبياً AMD FPGA و CGRA . [ 19 ] | تطوير بطيء. في الغالب هو أرض اختبار، مع إصدار يعتمد على DPC++. |
| نيو سيكل | SYCL 1.2.1 شبه مكتمل (يفتقر إلى ميزات خاصة بـ OpenCL مثل دعم الصور) [ 20 ] | اس اكس-اورورا تسوباسا [ 21 ] | |
| SYCL-gtx | دعم C++11 [ 22 ] ، بعيد كل البعد عن الاكتمال | OpenCL 1.2+ [ 23 ] | لا يوجد تطور فعلي [ 24 ] . |
| سيلكان | ؟ | أجهزة فولكان [ 25 ] | حالة تجريبية. تتطلب تدفق تحكم منظم في النواة بسبب استخدام Vulkan لـ SPIR-V. |
| إنتيون بوليجايست | ؟ | ؟ [ 26 ] | نسخة معدلة من LLVM "Polygeist"، وهي واجهة أمامية لـ MLIR. مدعومة من شركة Inteon. [ 27 ] |
الإضافات
سلامة SYCL أمر بالغ الأهمية
في مارس 2023، أعلنت مجموعة كرونوس عن إنشاء فريق عمل SYCL SC، [ 28 ] بهدف إنشاء إطار حوسبة غير متجانس عالي المستوى للأنظمة الحساسة للسلامة . وتشمل هذه الأنظمة مجالات متنوعة، بما في ذلك الطيران والسيارات والصناعة والقطاعات الطبية.
سيتوافق إطار عمل SYCL Safety Critical مع العديد من معايير الصناعة لضمان موثوقيته وسلامته. تشمل هذه المعايير MISRA C++ 202X، [ 29 ] الذي يوفر إرشادات لاستخدام لغة C++ في الأنظمة الحساسة، وRTCA DO-178C / EASA ED-12C، [ 30 ] وهما معياران لاعتبارات البرمجيات في أنظمة ومعدات الطيران، وISO 26262/21448، [ 31 ] الذي يتعلق بالسلامة الوظيفية للمركبات البرية، و IEC 61508 الذي يغطي السلامة الوظيفية للأنظمة الكهربائية/الإلكترونية/الإلكترونية القابلة للبرمجة المتعلقة بالسلامة، و IEC 62304 الذي يتعلق بمتطلبات دورة حياة برمجيات الأجهزة الطبية. [ 28 ]
برمجة
تتضمن بعض مجالات البرمجيات البارزة التي تستخدم لغة SYCL ما يلي (مع أمثلة):
- المعلوماتية الحيوية
- برنامج GROMACS : برنامج لمحاكاة ديناميكيات الجزيئات، يُستخدم على نطاق واسع في المعلوماتية الحيوية والكيمياء الحاسوبية. بدءًا من إصداره المُسرّع في عام 2021، يستخدم GROMACS برنامج SYCL 2020 لإجراء حسابات فعّالة على مختلف مُسرّعات الأجهزة. [ 32 ]
- LiGen: برنامج لمحاكاة الالتحام الجزيئي يستخدم SYCL لتسريع المهام الحسابية المتعلقة بتحليل البنية الجزيئية ومحاكاة الالتحام. [ 33 ]
- أوتودوك : برنامج آخر للالتحام الجزيئي يستفيد من SYCL لتسريع عملية التنبؤ بكيفية ارتباط الجزيئات الصغيرة بمستقبل ذي بنية ثلاثية الأبعاد معروفة. [ 34 ]
- الذكاء الاصطناعي
- llama.cpp : مكتبة برمجية مفتوحة المصدر تقوم بالاستدلال على نماذج لغوية كبيرة متنوعة مثل Llama . [ 35 ]
- صناعة السيارات
- علم الكونيات
- CRK-HACC: برنامج محاكاة كوني متعدد الأجسام تم نقله إلى SYCL. يستخدم SYCL لتسريع الحسابات المتعلقة بتكوين البنية واسعة النطاق وديناميكيات الكون. [ 37 ]
موارد
تحتفظ شركة كرونوس بقائمة بموارد SYCL. [ 38 ] كما توفر شركة كودبلاي سوفتوير دروسًا تعليمية على موقعها الإلكتروني sycl.tech بالإضافة إلى معلومات وأخبار أخرى حول نظام SYCL البيئي.
رخصة
تخضع ملفات المصدر لبناء المواصفات، مثل ملفات Makefiles وبعض البرامج النصية، ورؤوس SYCL ونماذج كود SYCL، لرخصة Apache 2.0 . [ 39 ]
مقارنة مع أدوات أخرى
تتشابه المعايير المفتوحة SYCL و OpenCL مع نماذج البرمجة الخاصة بحزمة CUDA الاحتكارية من Nvidia و HIP من حزمة ROCm مفتوحة المصدر ، والتي تدعمها AMD . [ 40 ]
في مجال مجموعة كرونوس ، تُعدّ OpenCL و Vulkan واجهات برمجة تطبيقات منخفضة المستوى وغير أحادية المصدر ، توفر تحكمًا دقيقًا في موارد وعمليات الأجهزة. تُستخدم OpenCL على نطاق واسع للبرمجة المتوازية عبر أنواع مختلفة من الأجهزة، بينما تركز Vulkan بشكل أساسي على مهام الرسومات والحوسبة عالية الأداء. [ 41 ]
أما لغة SYCL، فهي لغة برمجة عالية المستوى أحادية المصدر مكتوبة بلغة C++ ومخصصة للمجالات المضمنة (eDSL). تُمكّن هذه اللغة المطورين من كتابة التعليمات البرمجية لأنظمة الحوسبة غير المتجانسة، بما في ذلك وحدات المعالجة المركزية ووحدات معالجة الرسومات وغيرها من المعالجات المُسرّعة، باستخدام منهجية أحادية المصدر. وهذا يعني أنه يمكن كتابة كل من التعليمات البرمجية الخاصة بالمضيف والجهاز في ملف مصدر C++ واحد. [ 42 ]
كودا
بالمقارنة، فإن نسخة لغة CUDA المضمنة والمكتوبة بلغة C++ أحادية المصدر ، والتي تُسمى " واجهة برمجة تطبيقات وقت تشغيل CUDA "، تُشبه إلى حد ما لغة SYCL. في الواقع، أصدرت شركة إنتل أداة تُسمى SYCLOMATIC تُترجم تلقائيًا الشفرة من CUDA إلى SYCL. [ 43 ] مع ذلك، توجد نسخة أخرى أقل شهرة من CUDA، تُسمى "واجهة برمجة تطبيقات برنامج تشغيل CUDA"، وهي تُشبه OpenCL، وتُستخدم، على سبيل المثال، من قِبل تطبيق واجهة برمجة تطبيقات وقت تشغيل CUDA نفسه. [ 40 ]
تُوسّع SYCL ميزات C++ AMP ، مما يُعفي المبرمج من نقل البيانات صراحةً بين المضيف والأجهزة باستخدام المخازن المؤقتة ودوال الوصول. وهذا على عكس CUDA (قبل إدخال الذاكرة الموحدة في CUDA 6)، حيث كان نقل البيانات الصريح مطلوبًا. بدءًا من SYCL 2020، أصبح من الممكن أيضًا استخدام الذاكرة المشتركة الموحدة (USM) لتعزيز واجهات المخازن المؤقتة، بدلاً من استبدالها، [ 44 ] مما يوفر نموذج برمجة منخفض المستوى مشابهًا للذاكرة الموحدة في CUDA. [ 45 ]
تُعتبر SYCL لغة برمجة ذات مستوى أعلى من C++ AMP وCUDA، إذ لا تتطلب إنشاء مخطط تبعية صريح بين جميع النوى، كما أنها توفر جدولة غير متزامنة تلقائية للنوى مع تداخل في الاتصال والحساب. ويتم كل ذلك باستخدام مفهوم الوصول دون الحاجة إلى أي دعم من المُصرّف. [ 46 ]
على عكس لغتي C++ AMP و CUDA، فإن SYCL هي لغة برمجة خاصة بالمجال (eDSL) مكتوبة بلغة C++ خالصة دون أي امتدادات C++. وهذا يسمح بتنفيذ أساسي لوحدة المعالجة المركزية يعتمد على وقت التشغيل فقط دون الحاجة إلى مُصرّف مُحدد. [ 42 ]
يُوفّر كلٌّ من مُجمّعي DPC++ [ 47 ] وAdaptiveCpp [ 48 ] واجهةً خلفيةً لوحدات معالجة الرسومات من NVIDIA، على غرار ما يفعله CUDA. يسمح هذا بتجميع وتشغيل كود SYCL على أجهزة NVIDIA، مما يُمكّن المُطوّرين من الاستفادة من تجريدات SYCL عالية المستوى على وحدات معالجة الرسومات المُتوافقة مع CUDA. [ 47 ] [ 48 ]
تُقدّم شركة إنتل أداة مجانية تُسمى "أداة توافق DPC++" (dpct) لتحويل قواعد بيانات أكواد CUDA C++ تلقائيًا إلى SYCL C++. وهناك نسخة مفتوحة المصدر من هذه الأداة تُسمى SYCLomatic. [ 49 ]
ROCm HIP
تستهدف ROCm HIP وحدات معالجة الرسومات من Nvidia و AMD ، بالإضافة إلى وحدات المعالجة المركزية x86. تُعدّ HIP واجهة برمجة تطبيقات منخفضة المستوى تُشبه إلى حد كبير واجهات برمجة تطبيقات CUDA. [ 50 ] على سبيل المثال، أصدرت AMD أداة تُسمى HIPIFY تُترجم تلقائيًا كود CUDA إلى HIP. [ 51 ] لذلك، تنطبق العديد من النقاط المذكورة في المقارنة بين CUDA و SYCL أيضًا على المقارنة بين HIP و SYCL. [ 52 ]
تتشابه ROCm HIP مع SYCL في بعض الجوانب، إذ يمكنها استهداف مُصنّعين مختلفين (AMD وNvidia) وأنواع مُسرّعات مُتعددة (وحدات معالجة الرسومات ووحدات المعالجة المركزية). [ 53 ] مع ذلك، تستطيع SYCL استهداف نطاق أوسع من المُسرّعات والمُصنّعين. تدعم SYCL أنواعًا مُتعددة من المُسرّعات في آنٍ واحد ضمن تطبيق واحد من خلال مفهوم الواجهات الخلفية. إضافةً إلى ذلك، كُتبت SYCL بلغة C++ خالصة، بينما تستخدم HIP، مثل CUDA، بعض امتدادات اللغة. تمنع هذه الامتدادات تجميع HIP باستخدام مُجمّع C++ قياسي. [ 52 ]
يُوفر كلٌ من مُجمّعي DPC++ [ 47 ] وAdaptiveCpp [ 48 ] واجهات خلفية لوحدات معالجة الرسومات من NVIDIA وAMD، على غرار ما يفعله HIP. يُمكّن هذا من تجميع وتنفيذ كود SYCL على أجهزة من هذه الشركات، مما يُتيح للمطورين مرونة الاستفادة من تجريدات SYCL عالية المستوى عبر مجموعة متنوعة من الأجهزة والمنصات. [ 48 ] [ 47 ]
كوكوس
تتشابه لغة SYCL مع نموذج برمجة Kokkos في العديد من الجوانب، [ 54 ] بما في ذلك استخدام كائنات المصفوفات متعددة الأبعاد غير الشفافة (مخازن SYCL ومصفوفات Kokkos)، والنطاقات متعددة الأبعاد للتنفيذ المتوازي، وعمليات الاختزال (المضافة في SYCL 2020). [ 55 ] وقد أُضيفت العديد من الميزات في SYCL 2020 استجابةً لملاحظات مجتمع Kokkos.
يركز SYCL بشكل أكبر على الأنظمة غير المتجانسة؛ وبفضل تكامله مع OpenCL، يمكن اعتماده على نطاق واسع من الأجهزة. أما Kokkos، من ناحية أخرى، فيستهدف معظم منصات الحوسبة عالية الأداء، [ 56 ] وبالتالي فهو أكثر توجهاً نحو الحوسبة عالية الأداء من حيث الأداء.
اعتبارًا من عام 2024، يعمل فريق Kokkos على تطوير واجهة خلفية SYCL، [ 57 ] مما يُمكّن Kokkos من استهداف أجهزة Intel بالإضافة إلى المنصات التي يدعمها حاليًا. يُوسّع هذا التطوير نطاق تطبيق Kokkos ويُتيح مرونة أكبر في الاستفادة من بنى الأجهزة المختلفة ضمن تطبيقات الحوسبة عالية الأداء. [ 54 ]
راجا
Raja [ 58 ] [ 59 ] هي مكتبة من تجريدات برامج C++ لتمكين قابلية نقل بنية وبرمجة تطبيقات الحوسبة عالية الأداء.
على غرار SYCL، يوفر Raja شفرة قابلة للنقل عبر منصات متنوعة. مع ذلك، وعلى عكس SYCL، يُضيف Raja طبقة تجريدية فوق نماذج البرمجة الأخرى مثل CUDA وHIP وOpenMP وغيرها. يُمكّن هذا المطورين من كتابة شفرتهم مرة واحدة وتشغيلها على أنظمة خلفية مختلفة دون تعديل المنطق الأساسي. يُدار Raja ويُطوّر في مختبر لورانس ليفرمور الوطني (LLNL)، بينما SYCL معيار مفتوح يُدار من قِبل المجتمع. [ 41 ]
على غرار Kokkos، يُعدّ Raja أكثر ملاءمةً لحالات استخدام الحوسبة عالية الأداء، حيث يركز على الأداء وقابلية التوسع في بيئات الحوسبة عالية الأداء. في المقابل، يدعم SYCL نطاقًا أوسع من الأجهزة، مما يجعله أكثر تنوعًا لأنواع مختلفة من التطبيقات تتجاوز مجرد الحوسبة عالية الأداء. [ 59 ]
اعتبارًا من عام 2024، يعمل فريق Raja على تطوير واجهة خلفية SYCL، [ 60 ] مما سيمكن Raja من استهداف أجهزة Intel أيضًا. سيعزز هذا التطوير قابلية Raja للتنقل ومرونتها، مما يسمح لها بالاستفادة من إمكانيات SYCL وتوسيع نطاق تطبيقها ليشمل مجموعة أوسع من منصات الأجهزة. [ 41 ]
OpenMP
تستهدف OpenMP تفريغ العمليات الحسابية إلى معالجات خارجية، [ 61 ] مع التركيز بشكل أساسي على المعالجات متعددة النوى ووحدات معالجة الرسومات. أما SYCL، من ناحية أخرى، فهي موجهة نحو نطاق أوسع من الأجهزة نظرًا لتكاملها مع OpenCL، مما يتيح دعم أنواع مختلفة من معالجات الأجهزة. [ 62 ]
تستخدم OpenMP منهجًا قائمًا على التوجيهات البرمجية ، حيث يقوم المبرمج بتعليق الكود باستخدام التوجيهات، ويتولى المترجم معالجة تعقيدات التنفيذ المتوازي وإدارة الذاكرة. هذا التجريد عالي المستوى يُسهّل على المطورين موازاة تطبيقاتهم دون الحاجة إلى التعامل مع التفاصيل المعقدة لعمليات نقل الذاكرة والمزامنة. [ 63 ]
يدعم كل من OpenMP وSYCL لغة C++ وهما معياران. تم توحيد معيار OpenMP من قبل مجلس مراجعة بنية OpenMP (ARB)، بينما تم توحيد معيار SYCL من قبل مجموعة Khronos. [ 41 ]
يحظى OpenMP بدعم واسع من مختلف المترجمات، مثل GCC و Clang . [ 64 ]
std::par
تُعدّ std::par جزءًا من معيار C++17 [ 65 ] ، وهي مصممة لتسهيل التنفيذ المتوازي للخوارزميات القياسية على حاويات C++ القياسية. توفر هذه المكتبة طريقة قياسية للاستفادة من المُسرّعات الخارجية، إذ تسمح للمطورين بتحديد سياسة تنفيذ للعمليات المتوازية، مثل std::for_eachو std::transformو std::reduce. وهذا يُتيح استخدامًا فعالًا للمعالجات متعددة النوى وغيرها من الأجهزة المتوازية دون الحاجة إلى تغييرات جوهرية في الكود. [ 66 ]
يمكن استخدام SYCL كخادم خلفي std::par، مما يتيح تنفيذ الخوارزميات القياسية على نطاق واسع من المعالجات الخارجية، بما في ذلك وحدات معالجة الرسومات من Intel وAMD وNVIDIA، بالإضافة إلى أنواع أخرى من المعالجات. [ 67 ] من خلال الاستفادة من إمكانيات SYCL، يستطيع المطورون كتابة أكواد C++ قياسية تُنفذ بسلاسة على بيئات حوسبة غير متجانسة. يتيح هذا التكامل مرونة أكبر وتحسينًا للأداء عبر منصات الأجهزة المختلفة. [ 67 ]
يعتمد استخدام SYCL كخلفية std::parبرمجية على المُصرّف، أي أنه يتطلب مُصرّفًا يدعم كلاً من SYCL وسياسات التنفيذ المتوازي المُقدمة في C++17. [ 67 ] ومن أمثلة هذه المُصرّفات DPC++ وغيرها من المُصرّفات المتوافقة مع SYCL. باستخدام هذه المُصرّفات، يُمكن للمطورين الاستفادة من تجريدات SYCL لإدارة الذاكرة والتنفيذ المتوازي مع الاستمرار في استخدام خوارزميات وسياسات التنفيذ القياسية المألوفة في C++. [ 47 ]
انظر أيضاً
مراجع
- ↑ "سجل كرونوس SYCL - مجموعة كرونوس المحدودة" . registry.khronos.org .
- ↑ كيريل، رونان (17 نوفمبر 2019). "SYCL: معيار C++ أحادي المصدر للحوسبة غير المتجانسة" (ملف PDF) . Khronos.org . تاريخ الاسترجاع: 26 سبتمبر 2023 .
- ↑ كيريل، رونان. "معنى SYCL" . جيت هاب . تم الاسترجاع في 5 فبراير 2021 .
- ↑ مجموعة كرونوس (19 مارس 2014). "كرونوس تُصدر المواصفات المؤقتة لـ SYCL 1.2" . كرونوس . تم الاطلاع عليه بتاريخ 20 أغسطس 2017 .
- ↑ مجموعة كرونوس (11 مايو 2015). "كرونوس تُصدر المواصفات النهائية لـ SYCL 1.2" . كرونوس . تم الاطلاع عليه بتاريخ 20 أغسطس 2017 .
- ↑ مجموعة كرونوس (6 ديسمبر 2017). "مجموعة كرونوس تُصدر النسخة النهائية من SYCL 1.2.1" . كرونوس . تاريخ الاسترجاع: 12 ديسمبر 2017 .
- ↑ مجموعة كرونوس (18 أبريل 2016). "كرونوس تُصدر المواصفات المؤقتة لـ OpenCL 2.2 مع لغة نواة OpenCL C++" . كرونوس . تم الاطلاع عليه بتاريخ 18 سبتمبر 2017 .
- ↑ مجموعة كرونوس (9 فبراير 2021). "كرونوس تُصدر مواصفات SYCL 2020" . كرونوس . تاريخ الاسترجاع: 22 فبراير 2021 .
- ↑ مجموعة كرونوس (30 يونيو 2020). "كرونوس تخطو خطوات نحو نشر واسع النطاق لـ SYCL مع إصدار المواصفات المؤقتة لـ SYCL 2020" . كرونوس . تم الاطلاع عليه في 4 ديسمبر 2020 .
- ↑ "الكلمة الرئيسية لحالة الاتحاد في مؤتمر SYCLCon 2021" (ملف PDF) . www.iwocl.org .
- ↑ رايندرز، جيمس. "SYCL، DPC++، XPU's، oneAPI" (PDF) . www.iwocl.org .
- ↑ "تجميع عبر البنية: مُجمِّع Intel® oneAPI DPC++/C++" .
- ↑ "الصفحة الرئيسية - ComputeCpp CE - المنتجات - مطور Codeplay" .
- ↑ "أدلة - ComputeCpp CE - منتجات - مطور Codeplay" .
- ↑ "مستقبل لغة ComputeCpp" . www.codeplay.com . تاريخ الاسترجاع: 9 ديسمبر 2023 .
- ↑ "دعم ميزات AdaptiveCpp" . GitHub . 4 يوليو 2023.
- ↑ "AdaptiveCpp/doc/compilation.md at develop · AdaptiveCpp/AdaptiveCpp" . GitHub .
- ↑ "AdaptiveCpp (المعروف سابقًا باسم hipSYCL / Open SYCL)" . GitHub . 4 يوليو 2023.
- ↑ "triSYCL" . GitHub . 6 يناير 2022.
- ↑ كي، يينان؛ أغونغ، موليا؛ تاكيزاوا، هيرويوكي (2021). "NeoSYCL: تطبيق SYCL لـ SX-Aurora TSUBASA" . المؤتمر الدولي للحوسبة عالية الأداء في منطقة آسيا والمحيط الهادئ . الصفحات 50-57 . doi : 10.1145/3432261.3432268 . ISBN 9781450388429. S2CID 231597238 .
- ↑ كي، يينان؛ أغونغ، موليا؛ تاكيزاوا، هيرويوكي (2021). "NeoSYCL: تطبيق SYCL لـ SX-Aurora TSUBASA" . المؤتمر الدولي للحوسبة عالية الأداء في منطقة آسيا والمحيط الهادئ . الصفحات 50-57 . doi : 10.1145/3432261.3432268 . ISBN 9781450388429. S2CID 231597238 .
- ↑ "Sycl-GTX" . GitHub . 10 أبريل 2021.
- ↑ "Sycl-GTX" . GitHub . 10 أبريل 2021.
- ↑ "Sycl-GTX" . GitHub . 10 أبريل 2021.
- ↑ ثومان، بيتر؛ غوغل، دانيال؛ فاهرينغر، توماس. "سيلكان - نحو منصة هدف حساب فولكان لـ SYCL" (PDF) .
- ↑ "Polygeist" . GitHub . 25 فبراير 2022.
- ↑ "إنتيون" . 25 فبراير 2022.
- 1 2 "مجموعة كرونوس تُنشئ معيار SYCL SC المفتوح للحوسبة غير المتجانسة القائمة على لغة C++ ذات الأهمية البالغة للسلامة" . مجموعة كرونوس . 15 مارس 2023. تاريخ الاسترجاع: 10 يوليو 2024 .
- ↑ "ميسرا" . تم الاطلاع عليه بتاريخ 11-07-2024 .
- ↑ "التدريب على معايير برمجيات الطيران ED-12C - المحمول جواً" . يوروكاي . تم الاطلاع عليه بتاريخ 11-07-2024 .
- ↑ "SOTIF – التدريب العملي" . www.kuglermaag.com . تم الاطلاع عليه بتاريخ 11-07-2024 .
- ↑ تريفيت، نيل. "حالة الاتحاد - مجموعة عمل OpenCL" (ملف PDF) . www.iwocl.org .
- ^ كريسي، لويجي. سليمي بني، ماجد؛ كوزنسا، بياجيو؛ سكيبيون، نيكولو؛ جاديولي، دافيد؛ فيتالي، إيمانويل؛ باليرمو، جيانلوكا؛ بيكاري ، أندريا (2022/05/10). "نحو خط أنابيب محمول لاكتشاف الأدوية مع SYCL 2020" . ورشة عمل دولية حول OpenCL . IWOCL '22. نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. ص 1 – 2. دوى : 10.1145 / 3529538.3529688 . رقم ISBN 978-1-4503-9658-5.
- ↑ سوليس-فاسكيز، ليوناردو؛ ماسكارينهاس، إدوارد؛ كوخ، أندرياس (18 أبريل 2023). "تجارب نقل CUDA إلى SYCL: دراسة حالة في الالتحام الجزيئي" . ورشة العمل الدولية حول OpenCL . IWOCL '23. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1-11 . doi : 10.1145/3585341.3585372 . ISBN 979-8-4007-0745-2.
- ↑ "Llama.CPP/Docs/Backend/SYCL.md at master · ggerganov/Llama.CPP" . GitHub .
- ↑ رودكين، إيليا. "هل يمكن لـ SYCL و OpenCL مواجهة تحديات السلامة الوظيفية؟" (ملف PDF) . 2021-04-09 .
- ↑ رانجيل، إستيبان ميغيل؛ بينيكوك، سيمون جون؛ بوب، أدريان؛ فرونتير، نيكولاس؛ ما، تشي تشيانغ؛ مادانانث، فارشا (12 نوفمبر 2023). "تنفيذ SYCL عالي الأداء لخوارزمية CRK-HACC على نطاق إكساسكيل" . وقائع ورش عمل SC '23 للمؤتمر الدولي للحوسبة عالية الأداء والشبكات والتخزين والتحليل . SC-W '23. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1114-1125 . arXiv : 2310.16122 . doi : 10.1145/3624062.3624187 . ISBN 979-8-4007-0785-8.
- ↑ "موارد SYCL" . khronos.org . مجموعة كرونوس. 20 يناير 2014.
- ↑ "مواصفات SYCL مفتوحة المصدر" . GitHub . 10 يناير 2022.
- 1 2 بريير، مارسيل؛ فان كراين، ألكسندر؛ بفلوغر، ديرك (10 مايو 2022). "مقارنة بين SYCL وOpenCL وCUDA وOpenMP لتصنيف آلة المتجهات الداعمة المتوازية على نطاق واسع على أجهزة متعددة البائعين" . ورشة العمل الدولية حول OpenCL . IWOCL '22. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1-12 . doi : 10.1145/3529538.3529980 . ISBN 978-1-4503-9658-5.
- 1 2 3 4 "SYCL - برمجة غير متجانسة أحادية المصدر بلغة C++ لتسريع نقل العمليات" . مجموعة كرونوس . 2014-01-20 . تم الاطلاع عليه بتاريخ 2024-07-12 .
- 1 2 "مواصفات SYCL™ 2020 (المراجعة 8)" . registry.khronos.org . تم الاطلاع عليه بتاريخ 12-07-2024 .
- ↑ oneapi-src/SYCLomatic ، oneAPI-SRC، 11-07-2024 ، تم الاسترجاع في 11-07-2024
- ↑ "مواصفات SYCL™ 2020 (المراجعة 9)، 4.8. الذاكرة المشتركة الموحدة (USM)" . تم الاطلاع عليه بتاريخ 30-10-2024 .
- ↑ تشين، جولي؛ ديسول، مونيكا؛ فاربانيسكو، آنا لوسيا (24-01-2024)، الدروس المستفادة من ترحيل CUDA إلى SYCL: دراسة حالة في فيزياء الطاقة العالية باستخدام ROOT RDataFrame ، arXiv : 2401.13310
- ↑ "أوضاع الوصول إلى المخزن المؤقت" . إنتل . تم الاسترجاع في 11 يوليو 2024 .
- 1 2 3 4 5 "وثائق DPC++ - وثائق مُصرّف oneAPI DPC++" . intel.github.io . تم الاطلاع عليه بتاريخ 11 يوليو 2024 .
- 1 2 3 4 "AdaptiveCpp/doc/sycl-ecosystem.md at develop · AdaptiveCpp/AdaptiveCpp" . GitHub . تم الاطلاع عليه بتاريخ 11 يوليو 2024 .
- ↑ "ترحيل كود CUDA* إلى DPC++: أداة توافق Intel® DPC++" . Intel .
- ↑ ROCm/HIP ، برنامج AMD ROCm™، 11-07-2024 ، تم الاطلاع عليه بتاريخ 11-07-2024
- ↑ "HIPIFY/README.md at amd-staging · ROCm/HIPIFY" . GitHub . تم الاطلاع عليه بتاريخ 11 يوليو 2024 .
- 1 2 جين، زيمينغ؛ فيتر، جيفري س. (نوفمبر 2022). "تقييم الاختزال غير المنتظم في HIP وSYCL على وحدات معالجة الرسومات". ورشة العمل الدولية الثامنة لعام 2022 IEEE/ACM حول تحليل البيانات واختزالها للبيانات العلمية الضخمة (DRBSD) . IEEE. الصفحات 37-43 . doi : 10.1109/DRBSD56682.2022.00010 . ISBN 978-1-6654-6337-9. OSTI 1996715 .
- ↑ ريغولي، إستفان ز. (12 نوفمبر 2023). "تقييم قابلية نقل أداء SYCL عبر وحدات المعالجة المركزية ووحدات معالجة الرسومات في التطبيقات ذات النطاق الترددي المحدود" . وقائع ورش عمل SC '23 للمؤتمر الدولي للحوسبة عالية الأداء والشبكات والتخزين والتحليل . SC-W '23. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1038-1047 . arXiv : 2309.10075 . doi : 10.1145 /3624062.3624180 . ISBN 979-8-4007-0785-8.
- 1 2 هاموند، جيف ر.؛ كينسنر، مايكل؛ برودمان، جيمس (2019). "تحليل مقارن لـ Kokkos وSYCL كنموذجين برمجة متوازيين غير متجانسين لتطبيقات C++" . وقائع ورشة العمل الدولية حول OpenCL . ص 1-2 . doi : 10.1145/3318170.3318193 . ISBN 9781450362306. S2CID 195777149 .
- ↑ دوفيك، أماندا س.؛ غاياتري، راهولكومار؛ ميهتا، نيل؛ دورفلر، دوغلاس؛ كوك، براندون؛ غادار، ياسمين؛ ديتار، كارلتون (نوفمبر 2021). "دراسة حالة لاستخدام Kokkos وSYCL كإطارين عمل قابلين للنقل من حيث الأداء لاختبار معيار Milc-Dslash على وحدات معالجة الرسومات من NVIDIA وAMD وIntel". ورشة العمل الدولية لعام 2021 حول الأداء وقابلية النقل والإنتاجية في الحوسبة عالية الأداء (P3HPC) . IEEE. الصفحات 57-67 . doi : 10.1109/P3HPC54578.2021.00009 . ISBN 978-1-6654-2439-4.
- ↑ تروت، كريستيان ر.؛ ليبرون-غراندي، داميان؛ أرندت، دانيال؛ سيسكو، جان؛ دانغ، فينه؛ إلينغوود، ناثان؛ غاياتري، راهولكومار؛ هارفي، إيفان؛ هولمان، ديزي س. (2022)، "كوكوس 3: امتدادات نموذج البرمجة لعصر الحوسبة فائقة الأداء" ، معاملات IEEE للأنظمة المتوازية والموزعة ، 33 (4): 805، رمز Bibcode : 2022ITPDS..33..805T ، doi : 10.1109/TPDS.2021.3097283 ، تاريخ الاسترجاع : 10 يوليو 2024
- ↑ أرندت، دانيال؛ ليبرون-غراندي، داميان؛ تروت، كريستيان (2024-04-08). "تجارب في تطبيق الواجهة الخلفية لـ SYCL الخاصة بـ Kokkos" . وقائع ورشة العمل الدولية الثانية عشرة حول OpenCL وSYCL . IWOCL '24. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1-11 . doi : 10.1145/3648115.3648118 . ISBN 979-8-4007-1790-1. OSTI 2336667 .
- ↑ مختبر لورانس ليفرمور الوطني /راجا ، 8 يوليو 2024 ، تاريخ الاطلاع 10 يوليو 2024
- 1 2 بيكينغسيل، ديفيد أ.؛ سكوجلاند، توماس ر. و.؛ بورمارك، جيسون؛ هورنونج، ريتش؛ جونز، هولجر؛ كيليان، ويليام؛ كونين، آدم ج.؛ بيرس، أولغا؛ روبنسون، بيتر؛ ريوجين، برايان س. (نوفمبر 2019). "راجا: أداء محمول للتطبيقات العلمية واسعة النطاق". ورشة عمل IEEE/ACM الدولية لعام 2019 حول الأداء وقابلية النقل والإنتاجية في الحوسبة عالية الأداء (P3HPC) . IEEE. الصفحات 71-81 . doi : 10.1109/P3HPC49587.2019.00012 . ISBN 978-1-7281-6003-0. OSTI 1488819 .
- ↑ هومردينغ، برايان؛ فارغاس، أرتورو؛ سكوجلاند، توم؛ تشين، روبرت؛ ديفيس، مايك؛ هورنونغ، ريتش (2024-04-08). "تفعيل RAJA على وحدات معالجة الرسومات من إنتل باستخدام SYCL" . وقائع ورشة العمل الدولية الثانية عشرة حول OpenCL وSYCL . IWOCL '24. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1-10 . doi : 10.1145/3648115.3648131 . ISBN 979-8-4007-1790-1.
- ↑ تيم لويس. "الصفحة الرئيسية" . OpenMP . تم الاسترجاع في 10 يوليو 2024 .
- ↑ "OpenCL - المعيار المفتوح للبرمجة المتوازية للأنظمة غير المتجانسة" . مجموعة كرونوس . 21-07-2013 . تم الاطلاع عليه بتاريخ 12-07-2024 .
- ↑ فريدمان، ريتشارد. "أدلة مرجعية" . OpenMP . تم الاسترجاع في 12 يوليو 2024 .
- ↑ "مترجمات وأدوات OpenMP" .
- ↑ "std::execution::seq, std::execution::par, std::execution::par_unseq, std::execution::unseq - cppreference.com" . en.cppreference.com . تم الاطلاع عليه بتاريخ 10 يوليو 2024 .
- ↑ "تسريع لغة C++ القياسية باستخدام وحدات معالجة الرسومات (GPUs) عبر stdpar" . مدونة NVIDIA التقنية . 4 أغسطس 2020. تاريخ الاطلاع: 10 يوليو 2024 .
- 1 2 3 ألباي، أكسل؛ هوفيلين، فنسنت (2024-04-08). "AdaptiveCpp Stdpar: دمج التوازي القياسي للغة C++ في مُصرّف SYCL" . وقائع ورشة العمل الدولية الثانية عشرة حول OpenCL وSYCL . IWOCL '24. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 1-12 . doi : 10.1145/3648115.3648117 . ISBN 979-8-4007-1790-1.
روابط خارجية
- صفحة Khronos SYCL
- مواصفات SYCL في سجل كرونوس
- C++17 ParallelSTL في SYCL
- موارد SYCL التقنية
- تطبيق Codeplay ComputeCpp SYCL
- بدأت شركة إنتل بتنفيذ SYCL بهدف دمج Clang/LLVM في المشروع الرئيسي.
- AdaptiveCpp (المعروف سابقًا باسم hipSYCL / Open SYCL)
- تطبيق triSYCL مفتوح المصدر لـ SYCL
- "إطلاق SYCL 2020 باسم جديد وميزات جديدة وطموح عالٍ"، مقال HPCWire (9 فبراير 2021)
- جيمس ريندرز، بن أشباو، جيمس برودمان، مايكل كينسنر، جون بينيكوك، شينمين تيان: "Data Parallel C++: Mastering DPC++ for Programming of Heterogenous Systems using C++ and SYCL"، Apress (2021)، OpenAccess.
- واجهات برمجة التطبيقات
- لغة سي++
- برامج متعددة المنصات
- لغات البرمجة الخاصة بالمجال
- GPGPU
- مكتبات GPGPU
- الحوسبة غير المتجانسة
- الحوسبة المتوازية
