PoCL 1.6, pelaksanaan standard OpenCL yang berdiri sendiri

Versi baharu projek PoCL 1.6 (Portable Computing Language OpenCL) baru sahaja dikeluarkan . Sorotan versi 1.6 termasuk keserasian dengan Clang/LLVM 11.0, serta kerja yang dilakukan untuk meningkatkan prestasi dan fungsi CUDA, keserasian yang lebih baik dengan PowerPC dan keupayaan penyahpepijatan OpenCL yang lebih baik.

Bagi mereka yang tidak biasa dengan PoCL, ia merupakan pelaksanaan mudah alih, sumber terbuka (berlesen MIT) bagi piawaian OpenCL (1.2 dengan beberapa ciri serasi 2.0). Selain menjadi pelaksanaan OpenCL sumber terbuka berbilang peranti (benar-benar heterogen) yang sangat mudah alih , matlamat utama projek ini adalah untuk meningkatkan kebolehkendalian pelbagai peranti serasi OpenCL dengan mengintegrasikannya ke dalam satu platform tunggal yang diatur secara berpusat.

Selain itu, salah satu tujuan jangka panjang utama adalah untuk meningkatkan prestasi program OpenCL pada jenis peranti yang menggunakan teknik runtime dan kompilasi.

Penyusun kernel OpenCL didasarkan pada LLVM dan Clang digunakan sebagai antara muka untuk OpenCL C. Untuk memberikan kemudahan dan prestasi yang betul, penyusun kernel OpenCL dapat menghasilkan fungsi gabungan yang dapat menggunakan pelbagai sumber perkakasan untuk menyelaraskan pelaksanaan kod, seperti VLIW, superscalar , SIMD, SIMT, multi-core, dan multi-threaded. Terdapat sokongan untuk pemacu ICD (Installable Client Driver). Terdapat backend untuk menyediakan kerja melalui CPU, ASIP (TCE / TTA), GPU berdasarkan seni bina HSA, dan NVIDIA GPU (CUDA).

Ciri baru utama PoCL 1.6

Versi baru PoCL 1.6 ini menyoroti kemampuan untuk menyusun pelaksanaan ini dengan pemacu peranti yang diaktifkan pada waktu penyusunan, serta ketersediaan peranti akan disahkan pada permulaan (sebelumnya, sistem di mana PoCL dibina dan dijalankan sebagaimana mestinya sokongan pengawal yang sama). Menerapkan kemampuan untuk menggunakan pengurus pakej conda untuk mengedarkan pakej binari PoCL dengan sokongan CUDA untuk sistem Linux-x86_64 dan Linux-ppc64le.

Perubahan lain yang menonjol adalah sokongan untuk LLVM 11 bersama dengan kemungkinan pengembangan untuk debug kod OpenCL ketika menggunakan pengawal CPU.

Di samping itu, disoroti bahawa pengoptimuman prestasi backend CUDA telah dilakukan, yang memungkinkan untuk mempercepat operasi yang berkaitan dengan penggunaan memori tempatan (FFT, GEMM).

Penanda aras menggunakan penanda aras SHOC (yang kini terus diuji menunjukkan bahawa pengoptimuman ini menghasilkan prestasi yang jauh lebih baik, terutamanya untuk penanda aras yang melibatkan memori tempatan seperti FFT dan GEMM, berbanding dengan rujukan di atas. PoCL kini sering mencapai prestasi kompetitif dengan OpenCL milik Nvidia pemandu). Kami mengalu-alukan sumbangan untuk mengenal pasti dan menghapuskan punca-punca punca masalah yang tinggal. Kami juga mengalu-alukan sumbangan untuk meningkatkan liputan ciri untuk standard OpenCL 1.2 / 3.0.

  • Prestasi PoCL dalam banyak ujian kini hampir dengan pemacu OpenCL milik NVIDIA.
  • Menambah parameter kompilasi HARDENING_ENABLE untuk membolehkan pilihan penyusun menghasilkan libpocl.so yang lebih selamat dengan kos penurunan prestasi.
  • Dikembalikan sokongan untuk sistem PowerPC 8/9, yang mana tahap pelaksanaan OpenCL ketika menggunakan perangkat pthread dan CUDA sesuai dengan tingkat CUDA pada sistem x86_64.
  • Tukar ABI untuk kernel CUDA yang menggunakan __ blok tempatan. Selepas peningkatan, pengguna perlu membersihkan cache pocl.
  • Sokongan untuk pilihan membina SINGLE_LLVM_LIB telah dikeluarkan, dan bukannya menggunakan STATIC_LLVM dan llvm-config untuk menentukan perpustakaan mana yang akan diikat.

Akhir sekali, jika anda ingin mengetahui lebih lanjut tentang versi baharu ini, anda boleh menyemak butirannya dalam pengumuman asal.

Mereka yang berminat untuk mengetahui lebih lanjut tentang pelaksanaan ini boleh merujuk laman web rasminya , di mana mereka boleh mendapatkan dokumentasi dan fail yang boleh dimuat turun.

Kod projek diedarkan di bawah lesen MIT dan karya disokong pada platform X86_64, MIPS32, ARM v7, AMD HSA APU dan pelbagai pemproses TTA khusus dengan seni bina VLIW.


Tambahkan sebagai sumber pilihan dalam Google