نسخهای از پروژه PoCL 3.1 (Portable Computing Language OpenCL) ارائه شده است که پیادهسازی استاندارد OpenCL را توسعه میدهد که مستقل از تولیدکنندگان شتابدهندههای گرافیکی است و امکان استفاده از پشتیبانهای مختلف برای اجرای هستههای OpenCL بر روی انواع مختلف گرافیک و مرکزی را فراهم میکند. پردازنده ها کد پروژه تحت مجوز MIT توزیع شده است. از کار بر روی پلتفرمهای X86_64، MIPS32، ARM v7، AMD HSA APU، NVIDIA GPU و پردازندههای تخصصی مختلف ASIP (پردازنده مجموعه دستورالعملهای خاص برنامه) و TTA (معماری راهاندازی انتقال) با معماری VLIW پشتیبانی میکند.
پیاده سازی کامپایلر هسته OpenCL بر اساس LLVM ساخته شده است و Clang به عنوان قسمت جلویی برای OpenCL C استفاده می شود. برای اطمینان از قابلیت حمل و عملکرد مناسب، کامپایلر هسته OpenCL می تواند توابع ترکیبی ایجاد کند که می تواند از منابع سخت افزاری مختلف برای موازی سازی اجرای کد استفاده کند، مانند VLIW، superscalar، SIMD، SIMT، چند هسته ای و چند رشته ای. پشتیبانی از درایورهای ICD (درایور کلاینت قابل نصب) وجود دارد. پشتیبان هایی برای پشتیبانی از عملیات از طریق CPU، ASIP (TCE/TTA)، GPU مبتنی بر معماری HSA و NVIDIA GPU (از طریق libcuda) وجود دارد.
در نسخه های جدید:
- پشتیبانی از Clang/LLVM 15.0 اضافه شده است.
- بهبود قابل توجهی پشتیبانی از نمایش میانی سایه زن SPIR-V برای درایورهای CPU و CUDA.
- درایور سختافزار تخصصی (CL_DEVICE_TYPE_ACCELERATOR) و دستگاههای سفارشی (CL_DEVICE_TYPE_CUSTOM) که از کامپایل آنلاین پشتیبانی نمیکنند، بهطور چشمگیری دوباره طراحی شده است. درایورهای accel و ttasim در درایور جدید AlmaIF ادغام شدند.
- کار بر روی درایور API گرافیکی Vulkan ادامه دارد.
- یک پیاده سازی اساسی از پسوند cl_khr_command_buffer پیشنهاد شده است که به شما امکان می دهد دنباله ای از دستورات OpenCL را برای اجرا در یک فراخوانی بنویسید.
منبع: opennet.ru