Bahasa Pemrograman Baru Untuk Akselerator Perangkat Keras – Saat memprogram akselerator proses di mana aplikasi memindahkan tugas tertentu ke perangkat keras sistem terutama untuk mempercepat tugas itu Anda harus membangun dukungan perangkat lunak yang sama sekali baru.

Akselerator perangkat keras dapat menjalankan tugas-tugas tertentu dengan urutan besarnya lebih cepat daripada CPU, tetapi mereka tidak dapat digunakan di luar kotak. Perangkat lunak perlu menggunakan instruksi akselerator secara efisien agar kompatibel dengan seluruh sistem aplikasi.

Bahasa Pemrograman Baru Untuk Akselerator Perangkat Keras

Ini berarti banyak pekerjaan rekayasa yang kemudian harus dipertahankan untuk chip baru yang Anda kompilasi kodenya, dengan bahasa pemrograman apa pun.

Sekarang, para ilmuwan dari MIT Computer Science and Artificial Intelligence Laboratory (CSAIL) menciptakan bahasa pemrograman baru yang disebut “Exo” untuk menulis kode kinerja tinggi pada akselerator perangkat keras.

Exo membantu insinyur kinerja tingkat rendah mengubah program yang sangat sederhana yang menentukan apa yang ingin mereka hitung, menjadi program yang sangat kompleks yang melakukan hal yang sama seperti spesifikasi, tetapi jauh lebih cepat dengan menggunakan chip akselerator khusus ini.

Insinyur, misalnya, dapat menggunakan Exo untuk mengubah perkalian matriks sederhana menjadi program yang lebih kompleks, yang menjalankan orde besarnya lebih cepat dengan menggunakan akselerator khusus ini.

Tidak seperti bahasa pemrograman dan kompiler lainnya, Exo dibangun di sekitar konsep yang disebut “Exocompilation.” “Secara tradisional, banyak penelitian berfokus pada otomatisasi proses pengoptimalan untuk perangkat keras tertentu,” kata Yuka Ikarashi, Ph.D. mahasiswa teknik elektro dan ilmu komputer dan afiliasi CSAIL yang merupakan penulis utama di makalah baru tentang Exo.

“Ini bagus untuk sebagian besar pemrogram, tetapi untuk insinyur kinerja, kompiler menghalangi sesering itu membantu. Karena pengoptimalan kompiler otomatis, tidak ada cara yang baik untuk memperbaikinya ketika melakukan hal yang salah dan memberi Anda 45 persen efisiensi bukannya 90 persen.”

Dengan Exocompilation, insinyur kinerja kembali ke kursi pengemudi. Tanggung jawab untuk memilih pengoptimalan mana yang akan diterapkan, kapan, dan dalam urutan apa dieksternalkan dari kompiler, kembali ke insinyur kinerja. Dengan cara ini, mereka tidak perlu membuang waktu melawan kompiler di satu sisi, atau melakukan semuanya secara manual di sisi lain.

Pada saat yang sama, Exo bertanggung jawab untuk memastikan bahwa semua pengoptimalan ini benar. Akibatnya, insinyur kinerja dapat menghabiskan waktu mereka untuk meningkatkan kinerja, daripada men-debug kode yang kompleks dan dioptimalkan.

“Bahasa Exo adalah kompiler yang diparameterisasikan pada perangkat keras yang ditargetkan; kompiler yang sama dapat beradaptasi dengan banyak akselerator perangkat keras yang berbeda,” kata Adrian Sampson, asisten profesor di Departemen Ilmu Komputer di Universitas Cornell.

“Alih-alih menulis banyak kode C++ yang berantakan untuk dikompilasi untuk akselerator baru, Exo memberi Anda cara abstrak dan seragam untuk menuliskan ‘bentuk’ perangkat keras yang ingin Anda targetkan. Kemudian Anda dapat menggunakan kembali kompiler Exo yang ada untuk beradaptasi untuk deskripsi baru itu alih-alih menulis sesuatu yang sama sekali baru dari awal.

Potensi dampak pekerjaan seperti ini sangat besar: Jika inovator perangkat keras dapat berhenti mengkhawatirkan biaya pengembangan kompiler baru untuk setiap ide perangkat keras baru, mereka dapat mencoba dan mengirimkan lebih banyak ide.

Chip komputer berperforma tertinggi yang dibuat saat ini, seperti TPU Google, Neural Engine Apple, atau Tensor Cores NVIDIA, mendukung komputasi ilmiah dan aplikasi pembelajaran mesin dengan mempercepat sesuatu yang disebut “sub-program utama”, kernel, atau komputasi kinerja tinggi (HPC) subrutin.

Selain jargon yang kikuk, programnya sangat penting. Misalnya, sesuatu yang disebut Subrutin Aljabar Linier Dasar (BLAS) adalah “perpustakaan” atau kumpulan subrutin semacam itu, yang didedikasikan untuk perhitungan aljabar linier, dan memungkinkan banyak tugas pembelajaran mesin seperti jaringan saraf, prakiraan cuaca, komputasi awan, dan penemuan obat.

(BLAS sangat penting sehingga memenangkan Jack Dongarra Penghargaan Turing pada tahun 2021.) Namun, chip baru ini yang membutuhkan ratusan insinyur untuk mendesain hanya sebaik yang diizinkan oleh pustaka perangkat lunak HPC ini.

Namun, saat ini, pengoptimalan kinerja semacam ini masih dilakukan dengan tangan untuk memastikan bahwa setiap siklus terakhir komputasi pada chip ini digunakan.

Bahasa Pemrograman Baru Untuk Akselerator Perangkat Keras

Subrutin HPC secara teratur berjalan pada 90 persen-plus efisiensi teoritis puncak, dan insinyur perangkat keras berusaha keras untuk menambahkan tambahan lima atau 10 persen kecepatan ke puncak teoritis ini. Jadi, jika perangkat lunak tidak dioptimalkan secara agresif, semua kerja keras itu akan sia-sia itulah yang harus dihindari oleh Exo.

Bagian penting lain dari Exocompilation adalah bahwa insinyur kinerja dapat menggambarkan chip baru yang ingin mereka optimalkan, tanpa harus memodifikasi kompiler. Secara tradisional, definisi antarmuka perangkat keras dipertahankan oleh pengembang kompiler, tetapi dengan sebagian besar chip akselerator baru ini, antarmuka perangkat keras adalah milik.

Perusahaan harus memelihara salinan (garpu) mereka sendiri dari keseluruhan kompiler tradisional, yang dimodifikasi untuk mendukung chip khusus mereka. Ini membutuhkan perekrutan tim pengembang kompiler selain insinyur kinerja.