نگرانی Khronos، مسئول توسعه مشخصات خانواده OpenGL، Vulkan و OpenCL، اعلام کرد در انتشار مشخصات نهایی OpenCL 3.0تعریف API و برنامه های افزودنی زبان C برای سازماندهی محاسبات موازی چند پلتفرمی با استفاده از CPU های چند هسته ای، GPU، FPGA، DSP و سایر تراشه های تخصصی، از تراشه هایی که در ابررایانه ها و سرورهای ابری استفاده می شوند تا تراشه هایی که در دستگاه های تلفن همراه یافت می شوند و تکنولوژی داخلی استاندارد OpenCL کاملاً باز است و نیازی به هزینه مجوز ندارد.
همزمان منتشر شد OpenCL SDK را با ابزارها، مثالها، اسناد، فایلهای هدر، پیوندهای C++ و کتابخانههای C برای توسعه برنامههای سازگار با OpenCL 3.0 باز کنید. همچنین ارایه شده اجرای اولیه OpenCL 3.0 بر اساس کامپایلر Clang که در مرحله بررسی وصله ها برای گنجاندن در ساختار اصلی LLVM است. شرکت هایی مانند IBM، NVIDIA، Intel، AMD، Apple، ARM، Electronic Arts، Qualcomm، Texas Instruments و Toshiba در کار بر روی این استاندارد شرکت کردند.
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.