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

Para pengembang proyek LLVM telah merilis kompiler HPVM 1.0 (Heterogeneous Parallel Virtual Machine), 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 FPGA dan akselerator tidak termasuk dalam rilis 1.0). Kode proyek didistribusikan di bawah lisensi Apache 2.0.

Ide inti di balik HPVM adalah menggunakan representasi terpadu dari program paralel selama kompilasi, yang dapat digunakan untuk eksekusi pada berbagai jenis perangkat keras yang mendukung komputasi paralel, termasuk GPU, instruksi vektor, prosesor multi-inti, FPGA, dan berbagai chip akselerator khusus. Tidak seperti sistem lain, HPVM berupaya menggabungkan tiga kemampuan untuk mengatur komputasi heterogen: representasi perantara yang independen dari bahasa dan perangkat keras, arsitektur set instruksi virtual (ISA), dan penjadwalan runtime.

Representasi perantara (IR) independen target HPVM didasarkan pada representasi perantara instruksi (IR) LLVM 9.0 dan memperluasnya dengan grafik aliran data hierarkis, memungkinkan paralelisme pada tingkat tugas, data, dan pipeline. IR HPVM juga mencakup instruksi vektor dan memori bersama. Tujuan utama IR adalah untuk memungkinkan pembangkitan kode yang efisien dan optimasi untuk sistem heterogen.

Arsitektur set instruksi virtual (ISA) memungkinkan portabilitas di berbagai jenis perangkat keras komputasi paralel dan memastikan kinerja yang konsisten di berbagai elemen sistem heterogen. ISA virtual juga dapat digunakan untuk menghasilkan kode eksekusi universal yang dapat dijalankan pada CPU, GPU, FPGA, dan berbagai akselerator.

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

Perlu dicatat bahwa penggunaan HPVM memungkinkan peningkatan kinerja yang signifikan. Kinerja penerjemah HPVM sebanding dengan kode OpenCL yang ditulis tangan untuk GPU dan perangkat komputasi vektor.

Dibandingkan dengan rilis pratinjau pertama, HPVM 1.0 menyertakan dukungan untuk operasi aljabar linear tensor, antarmuka pengguna untuk PyTorch dan Keras, aproksimasi operator konvolusi, dan kerangka kerja penyetelan aproksimasi yang secara otomatis memilih aproksimasi optimal untuk operasi tensor tertentu dan memilih konfigurasi yang memberikan kinerja optimal.

Sumber: opennet.ru

Beli hosting yang andal untuk situs dengan perlindungan DDoS, server VPS VDS 🔥 Beli hosting website andal dengan perlindungan DDoS, server VPS VDS | ProHoster