HPVM 2.0, kompiler untuk CPU, GPU, FPGA, dan akselerator perangkat keras diterbitkan

Proyek LLVM mengumumkan peluncuran HPVM 2.0 (Mesin Virtual Paralel Heterogen), sebuah kompiler yang bertujuan menyederhanakan pemrograman untuk sistem heterogen dan menyediakan alat pembuatan kode untuk CPU, GPU, FPGA, dan akselerator perangkat keras khusus domain. Kode proyek didistribusikan di bawah lisensi Apache 2.0.

Pemrograman untuk sistem paralel heterogen diperumit dengan adanya komponen dalam sistem yang sama yang menggunakan model berbeda untuk mencapai paralelisme (inti CPU, instruksi vektor, GPU, dll.), set instruksi berbeda, dan hierarki memori berbeda. Setiap sistem menggunakan kombinasi komponen-komponen ini sendiri. Ide utama dari proyek HPVM adalah menggunakan representasi terpadu dari program yang dijalankan secara paralel saat kompilasi, yang dapat digunakan untuk berbagai jenis perangkat keras yang mendukung komputasi paralel, termasuk GPU, instruksi vektor, prosesor multi-core, FPGA, dan berbagai chip akselerator khusus.

Tidak seperti sistem lain, HPVM mencoba menggabungkan tiga kemampuan untuk mengatur komputasi heterogen - bahasa pemrograman dan representasi perantara (IR) yang tidak bergantung pada perangkat keras, arsitektur set instruksi virtual (V-ISA) dan penjadwalan waktu proses:

  • Representasi perantara HPVM memperluas representasi instruksi perantara LLVM dengan menggunakan grafik aliran data hierarki untuk menangkap paralelisme pada tingkat tugas, data, dan alur. Representasi perantara HPVM juga mencakup instruksi vektor dan memori bersama. Tujuan utama penggunaan representasi perantara adalah pembuatan kode yang efisien dan optimalisasi untuk sistem heterogen.
  • Arsitektur Set Instruksi Virtual (V-ISA) mengabstraksi fitur perangkat keras tingkat rendah dan menyatukan berbagai bentuk arsitektur paralelisme dan memori hanya dengan menggunakan model paralelisme dasarβ€”grafik aliran data. V-ISA memungkinkan Anda mencapai portabilitas antara berbagai jenis peralatan untuk komputasi paralel dan memungkinkan untuk tidak kehilangan kinerja saat menggunakan berbagai elemen sistem heterogen. Virtual ISA juga dapat digunakan untuk mengirimkan kode program universal yang dapat dijalankan yang dapat dijalankan menggunakan CPU, GPU, FPGA, dan berbagai akselerator.
  • Kebijakan penjadwalan yang fleksibel untuk proses komputasi diterapkan pada saat runtime dan diimplementasikan baik berdasarkan informasi tentang program (struktur grafik) dan melalui kompilasi masing-masing node program untuk dieksekusi pada perangkat komputasi target mana pun yang tersedia dalam sistem.

Generator kode yang dikembangkan oleh proyek ini mampu menerjemahkan node aplikasi yang ditentukan menggunakan ISA virtual untuk dieksekusi menggunakan GPU NVIDIA (cuDNN dan OpenCL), instruksi vektor Intel AVX, FPGA, dan CPU multi-core x86. Perlu dicatat bahwa kinerja penerjemah HPVM sebanding dengan kode OpenCL tulisan tangan untuk GPU dan perangkat komputasi vektor.

Inovasi utama HPVM 2.0:

  • Frontend bahasa Hetero-C++ telah diusulkan, yang menyederhanakan paralelisasi kode aplikasi dalam C/C++ untuk kompilasi di HPVM. Hetero-C++ mendefinisikan ekstensi untuk paralelisme tingkat data dan tugas hierarki yang dipetakan ke grafik thread HPVM.
  • Backend FPGA telah ditambahkan untuk memberikan dukungan untuk eksekusi kode pada Intel FPGA. Untuk mengatur eksekusi, Intel FPGA SDK untuk OpenCL digunakan.
  • Kerangka kerja DSE (Design Space Exploration) telah ditambahkan, yang mencakup optimasi kompiler dan mekanisme untuk mengidentifikasi hambatan untuk secara otomatis menyetel aplikasi untuk platform perangkat keras tertentu. Kerangka kerja ini berisi model kinerja siap pakai untuk FPGA dari Intel dan memungkinkan untuk menghubungkan prosesor Anda sendiri untuk pengoptimalan pada perangkat apa pun yang didukung oleh HPVM. Pengoptimalan dapat diterapkan pada tingkat grafik aliran data HPVM dan LLVM.
  • Komponen LLVM telah diperbarui ke versi 13.0.
  • Kode telah ditata ulang untuk memudahkan navigasi basis kode, perpustakaan, dan utilitas.
  • Infrastruktur pengujian telah ditingkatkan, pengujian baru telah ditambahkan untuk berbagai komponen HPVM.

Sumber: opennet.ru

Tambah komentar