El lenguaje de computación portátil”PoCL”comenzó como una implementación OpenCL basada en CPU de código abierto que se ha convertido en una implementación bastante completa a lo largo de los años. Pero al aprovechar la pila del compilador LLVM/Clang, con el tiempo, PoCL ha crecido más allá de una simple implementación de CPU para admitir también la ejecución de OpenCL en GPU NVIDIA, GPU compatibles con AMD HSA y más. Lo último que viene con PoCL 4.0 es la compatibilidad con la ejecución Intel Level Zero para ejecutar esta implementación de OpenCL en las GPU Intel Arc Graphics.
La pila Compute-Runtime”Neo”de Intel con Level Zero y OpenCL ha funcionado muy bien en los últimos meses en Arc Graphics. Allí ya tiene una excelente implementación de OpenCL 3.0, por lo que las perspectivas de PoCL con soporte de nivel cero no son demasiado significativas. Aunque ejecutar PoCL sobre la pila de cómputo de Intel con Level Zero puede ser interesante para la depuración o la creación de perfiles para comparar las implementaciones de OpenCL con fines de rendimiento. Además, la API Level Zero es un estándar abierto, por lo que es posible que surjan otras implementaciones que no sean de Intel y proporcionen información interesante para PoCL.
En cualquier caso, con el lanzamiento del viernes de la versión candidata de PoCL 4.0, uno de los principales cambios de esta nueva versión es la introducción de un controlador API de nivel cero.
También es importante con PoCL 4.0-RC1 que los controladores de CPU obtengan soporte para variables de alcance de programa, AS genérico, cl_khr_fp16 (LLVM 16+), cl_khr_subgroups y cl_intel_unified_shared_memory. Esta próxima versión también agrega compatibilidad con el compilador LLVM/Clang 16.0 y realiza más mejoras en la compatibilidad con SPIR-V IR en la CPU y los controladores de back-end de CUDA.
La versión candidata de PoCL 4.0 se puede descargar desde GitHub. Aquellos que deseen obtener más información sobre esta implementación OpenCL portátil y de código abierto pueden hacerlo en PortableCL.org.