POCl 1.6, una implementació independent de l'estàndard OpenCL

S'acaba de presentar el llançament de la nova versió de el projecte POCl 1.6 (Portable Computing Language OpenCL), dels aspectes destacats de la versió 1.6 és la compatibilitat amb Clang / LLVM 11.0, així com el treball realitzat per millorar el rendiment i funcions de CUDA, compatibilitat millorada amb PowerPC i ús millorat de depuració d'OpenCL.

Per als qui desconeixen de POCl, ha de saber que és una implementació portàtil de codi obert (Amb llicència MIT) de l'estàndard OpenCL (1.2 amb algunes característiques 2.0 compatibles). A més de ser una implementació OpenCL de codi obert de múltiples dispositius (Veritablement heterogènia) fàcilment portàtil, un objectiu principal d'aquest projecte és millorar la interoperabilitat de la diversitat de dispositius compatibles amb OpenCL integrant-los en una única plataforma orquestrada centralment.

A més, un dels objectius clau a més llarg termini és millorar la portabilitat de l'rendiment dels programes OpenCL en els tipus de dispositius que utilitzen temps d'execució i tècniques de compilació.

El compilador de el nucli d'OpenCL es basa en LLVM i Clang s'utilitza com a interfície per OpenCL C. Per proporcionar portabilitat i rendiment adequats, el compilador de el nucli d'OpenCL pot generar funcions combinades que poden utilitzar diversos recursos de maquinari per a paral·lelitzar l'execució de codi , com VLIW, superescalar, SIMD, simt, multinucli i subprocessos múltiples. Hi ha suport per a controladors ICD (controlador de client instal). Hi ha backends per proporcionar treball a través de CPU, ASIP (TCE / TTA), GPU basada en arquitectura HSA i GPU NVIDIA (CUDA).

Principals novetats de POCl 1.6

En aquesta nova versió de POCl 1.6 es destaca la capacitat de compilar aquesta implementació amb controladors de dispositiu habilitats en el moment de la compilació, així com la disponibilitat de el dispositiu es verificarà a l'inici (anteriorment, els sistemes en els quals es construeix i executa POCl haurien d'haver tingut el mateix suport de controlador). Va implementar la capacitat d'usar l'administrador de paquets Conda per distribuir paquets binaris POCl amb suport CUDA per a sistemes Linux-x86_64 i Linux-ppc64le.

Un altre dels canvis que es destaca és el suport per LLVM 11 juntament amb les possibilitats ampliades per depurar codi OpenCL quan s'usa el controlador de CPU.

A més, es destaca que es va realitzar l'optimització de l'rendiment de l'backend CUDA, el que va permetre agilitzar significativament les operacions relacionades amb l'ús de memòria local (FFT, GEMM).

Els punts de referència que utilitzen punts de referència SHOC (que ara es proven contínuament mostren que aquestes optimitzacions van donar com a resultat un rendiment molt millor, en particular per als punts de referència que impliquen memòria local com FFT i GEMM, en comparació amb una execució de referència anterior. POCl ara sovint arriba a un rendiment competitiu amb el controlador OpenCL patentat de Nvidia). Agraïm les contribucions per identificar i eliminar les causes fonamentals de les àrees problemàtiques restants. També agraïm les contribucions per millorar la cobertura de funcions per als estàndards OpenCL 1.2 / 3.0.

  • El rendiment de POCl en moltes proves ara és a prop de el controlador OpenCL patentat de NVIDIA.
  • Es va agregar el paràmetre de compilació HARDENING_ENABLE per habilitar les opcions de compilador per a generar un libpocl.so més segur a costa de la degradació de l'rendiment.
  • Suport retornat per a sistemes PowerPC 8/9, per als quals el nivell d'implementació d'OpenCL quan s'usen dispositius pthread i CUDA correspon a el nivell CUDA en sistemes x86_64.
  • Es va canviar l'ABI per als nuclis CUDA que fan servir __ blocs locals. Després de l'actualització, els usuaris han d'eliminar la memòria cau POCl.
  • Es va eliminar el suport per a l'opció de compilació SINGLE_LLVM_LIB, en lloc d'usar STATIC_LLVM i LLVM-config per definir a quines biblioteques enllaçar.

Finalment si vols conèixer més a l'respecte d'aquesta nova versió, pots consultar els detalls en l'anunci original. 

Mentre que per als interessats en conèixer més a l'respecte d'aquesta implementació, poden consultar el lloc web oficial d'aquesta, on podran trobar la documentació i arxius de descàrrega.

El codi de el projecte es distribueix sota la llicència MIT i el treball és admès en plataformes x86_64, MIPS32, ARM v7, AMD HSA APU i diversos processadors TTA especialitzats amb l'arquitectura VLIW.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.