نگرانی Khronos، مسئول توسعه مشخصات خانواده OpenGL، Vulkan و OpenCL، اعلام کرد در تکمیل توسعه مشخصات OpenCL 3.0 که APIها و پسوندهای زبان C را برای سازماندهی محاسبات موازی چند پلتفرمی با استفاده از پردازندههای چند هستهای، GPU، FPGA، DSP و دیگر تراشههای تخصصی، از تراشههای مورد استفاده در ابر رایانهها و سرورهای ابری تعریف میکند. به تراشه هایی که در دستگاه های تلفن همراه و فناوری جاسازی شده یافت می شوند. استاندارد OpenCL کاملاً باز است و نیازی به هزینه مجوز ندارد. شرکت هایی مانند IBM، NVIDIA، Intel، AMD، Apple، ARM، Electronic Arts، Qualcomm، Texas Instruments و Toshiba در کار بر روی این استاندارد شرکت کردند.
در مرحله فعلی، مشخصات به وضعیت موقت اختصاص یافته است، که به معنای امکان اصلاح بر اساس بازخورد ارسال شده از طریق GitHub. پس از در نظر گرفتن نظرات، مشخصات نهایی خواهد شد و مجموعه آزمایشی نهایی برای آزمایش سازگاری پیاده سازی های موجود منتشر خواهد شد.
OpenCL 3.0 API اکنون تمام نسخه های OpenCL (1.2، 2.x) را بدون ارائه مشخصات جداگانه برای هر نسخه پوشش می دهد. OpenCL 3.0 امکان گسترش عملکرد اصلی را از طریق ادغام مشخصات اضافی فراهم می کند که در قالب گزینه هایی بدون مسدود کردن ماهیت یکپارچه OpenCL 1.2/2.X لایه بندی می شوند.
فقط عملکردی که با OpenCL 1.2 مطابقت دارد اجباری اعلام می شود و همه ویژگی های پیشنهادی در مشخصات OpenCL 2.x به عنوان اختیاری طبقه بندی می شوند. این رویکرد ایجاد پیادهسازیهای سفارشی سازگار با OpenCL 3.0 را آسانتر میکند و دامنه دستگاههایی را که میتوان از OpenCL 3.0 روی آنها استفاده کرد، گسترش میدهد. برای مثال، سازندگان میتوانند پشتیبانی OpenCL 3.0 را بدون اجرای ویژگیهای خاص OpenCL 2.x پیادهسازی کنند. برای دسترسی به ویژگی های زبان اختیاری، OpenCL 3.0 سیستمی از پرس و جوهای آزمایشی را اضافه کرده است که به شما امکان می دهد پشتیبانی از عناصر API و همچنین ماکروهای ویژه را ارزیابی کنید.
یکپارچگی با مشخصات قبلی منتشر شده، انتقال برنامهها به OpenCL 3.0 را آسانتر میکند. برنامههای OpenCL 1.2 میتوانند روی دستگاههایی که OpenCL 3.0 را پشتیبانی میکنند بدون تغییر اجرا شوند. برنامههای OpenCL 2.x نیز نیازی به تغییر کد نخواهند داشت، تا زمانی که محیط OpenCL 3.0 عملکرد مورد نیاز را فراهم کند (برای اطمینان از قابلیت حمل در آینده، برنامههای OpenCL 2.x توصیه میشود برای ارزیابی پشتیبانی از ویژگیهای OpenCL 2.x کوئریهای آزمایشی اضافه کنند. مورد استفاده قرار گرفته). توسعه دهندگان درایور با پیاده سازی OpenCL می توانند به راحتی محصولات خود را به OpenCL 3.0 ارتقا دهند و فقط پردازش پرس و جو را برای برخی تماس های API اضافه کنند و به مرور زمان عملکرد را افزایش دهند.
مشخصات OpenCL 3.0 با محیط، برنامههای افزودنی و مشخصات بازنمایی میانی عمومی SPIR-V که توسط Vulkan API نیز استفاده میشود، همراستا است. پشتیبانی از مشخصات SPIR-V 1.3 به عنوان یک ویژگی اختیاری در هسته OpenCL 3.0 گنجانده شده است. از طریق استفاده از یک نمایندگی میانی SPIR-V پشتیبانی از عملیات با زیر گروه ها برای هسته های محاسباتی اضافه شده است.
پشتیبانی اضافه شده برای یک برنامه افزودنی برای انجام عملیات DMA ناهمزمان (Asynchronous DMA)، که در تراشه های DSP مانند با دسترسی مستقیم به حافظه پشتیبانی می شود. DMA ناهمزمان استفاده از تراکنش های DMA را برای انتقال داده ها بین حافظه جهانی و محلی به صورت ناهمزمان، موازی با محاسبات یا سایر عملیات انتقال داده، ممکن می سازد.
مشخصات برنامهنویسی موازی C به روز شده است نسخه 3.0و توسعه پسوندهای زبان OpenCL برای C++ به نفع پروژه "C++ for OpenCL" متوقف شد. C++ برای OpenCL یک کامپایلر مبتنی بر Clang/LLVM و است صدا و سیما هسته های C++ و OpenCL C در نمایش متوسط SPIR-V یا کد ماشین سطح پایین قرار می گیرند. از طریق پخش، SPIR-V همچنین مونتاژ برنامه های C++ را با استفاده از کتابخانه قالب SYCL سازماندهی می کند، که ایجاد برنامه های موازی را ساده می کند.
یک کامپایلر برای پخش OpenCL از طریق Vulkan API پیشنهاد شده است clspv، که هسته های OpenCL را به یک نمایش Vulkan SPIR-V و یک لایه تبدیل می کند clvk برای فعال کردن OpenCL API برای کار در بالای Vulkan.