Proyek LLVM memperkenalkan HPVM 1.0, kompiler untuk CPU, GPU, FPGA, dan akselerator

Pengembang proyek LLVM telah menerbitkan rilis kompiler HPVM 1.0 (Mesin Virtual Paralel Heterogen), yang bertujuan untuk menyederhanakan pemrograman untuk sistem heterogen dan menyediakan alat untuk menghasilkan kode untuk CPU, GPU, FPGA, dan akselerator perangkat keras khusus domain (dukungan untuk FGPA dan akselerator tidak disertakan dalam rilis 1.0). Kode proyek didistribusikan di bawah lisensi Apache 2.0.

Ide utama HPVM adalah untuk menyediakan representasi terpadu dari program yang dapat dieksekusi secara paralel saat kompilasi, yang dapat digunakan untuk eksekusi menggunakan 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 berusaha menggabungkan tiga kemampuan untuk mengatur komputasi heterogen: representasi perantara yang tidak bergantung pada bahasa dan perangkat keras, arsitektur set instruksi virtual (ISA), dan penjadwalan waktu proses.

Representasi perantara (IR) target-independen HPVM dibangun berdasarkan representasi instruksi perantara LLVM 9.0 dan memperluasnya dengan grafik aliran data hierarkis untuk menangkap paralelisme tingkat tugas, data, dan saluran pipa. 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 (ISA) memungkinkan portabilitas antara berbagai jenis perangkat keras 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.

Pada tahap pengembangan saat ini, HPVM menawarkan generator kode yang mampu menerjemahkan node aplikasi yang ditentukan menggunakan ISA virtual untuk dieksekusi menggunakan GPU NVIDIA (cuDNN dan OpenCL), instruksi vektor Intel AVX, dan CPU multi-core x86. Saat runtime, HPVM menerapkan kebijakan penjadwalan proses komputasi yang fleksibel, diimplementasikan berdasarkan informasi program (struktur grafik) dan melalui kompilasi node program individual untuk dieksekusi pada perangkat komputasi target mana pun yang tersedia dalam sistem.

Perlu dicatat bahwa penggunaan HPVM dapat mencapai peningkatan produktivitas yang signifikan. Kinerja penerjemah HPVM sebanding dengan kode OpenCL tulisan tangan untuk GPU dan perangkat komputasi vektor.

Dibandingkan dengan rilis pratinjau pertama, HPVM 1.0 menyertakan dukungan untuk operasi tensor aljabar linier, frontend untuk Pytorch dan Keras, perkiraan operator konvolusi, dan kerangka penyetelan perkiraan yang secara otomatis memilih perkiraan optimal untuk operasi tensor tertentu dan memilih konfigurasi yang memberikan kinerja optimal.

Sumber: opennet.ru

Tambah komentar