AMX, koprosesor tersembunyi pada Apple M1
(medium.com)Apple Matrix Coprocessor
-
Prosesor khusus matriks yang sama sekali tidak dibahas saat pengumuman M1
-
Matriks banyak digunakan dalam pemrosesan gambar, machine learning, pengenalan suara/tulisan tangan, pengenalan wajah, kompresi, serta pemrosesan media suara/video
-
Bukankah ini ditangani oleh Neural Engine? Apa bedanya dengan Neural Engine?
→ GPU atau Neural Engine adalah accelerator
→ CPU harus bekerja untuk mengisi ruang memori yang akan digunakan para accelerator, dan itu tidak efisien
→ Dalam situasi ini, sambil mengamati instruksi-instruksi tersebut (spy), coprocessor menangani pekerjaan itu sebagai gantinya
→ Untuk memanfaatkan ini, perlu didefinisikan instruction set tersendiri
→ ARM selama ini menolak penambahan instruksi kustom, tetapi sejak 2019 mulai menyediakan ekstensi yang memungkinkan hal itu
→ Itu mungkin alasan instruksi AMX tidak muncul di dokumentasi resmi
- Lalu apa bedanya dengan SIMD Vector Engine yang ada di ARM?
→ SIMD: Single Instruction Multiple Data
→ Cara untuk memperoleh performa tinggi saat menjalankan operation yang sama pada banyak data
→ Ini berkaitan dengan operasi matriks
→ Tetapi SIMD terintegrasi di dalam CPU seperti ALU dan FPU, sedangkan coprocessor berada di luar
→ FPU Intel 8087 dulu bahkan memiliki jumlah transistor lebih banyak daripada 8086, sehingga pada masa itu sulit menyatukannya. Seiring kemajuan teknologi, jumlah transistor meningkat dan FPU pun terintegrasi ke dalam CPU sehingga coprocessor semacam itu menghilang
- Tidak jelas mengapa AMX tidak dimasukkan ke dalam core Firestorm
→ Mungkin lebih mudah jika dipisahkan agar dapat bekerja paralel dengan CPU,
→ dan dari sudut pandang Apple, mungkin mereka juga ingin menempatkan hal-hal yang bukan standar ARM di luar.
- Lalu kenapa AMX disembunyikan?
→ Jika AMX tidak ada di dokumentasi resmi, bagaimana hal ini diketahui?
→ Dougal Johnson menemukannya lewat reverse engineering
→ Apple menyediakan beragam fungsi melalui Accelerate, framework untuk operasi matriks
⇨ vImage: pemrosesan gambar tingkat tinggi, konversi format, dan manipulasi gambar
⇨ BLAS: aljabar linear (operasi matriks dan vektor)
⇨ BNNS: jaringan saraf dan pembelajaran
⇨ vDSP: pemrosesan sinyal digital seperti transformasi Fourier, serta operasi matematika untuk pemrosesan gambar atau audio
⇨ LAPACK: fungsi aljabar linear tingkat tinggi, persamaan linear, dan lain-lain
→ Library Accelerate ini mempercepat komputasi dengan memanfaatkan AMX
→ Jika instruksinya dipublikasikan, ekosistem ARM bisa terfragmentasi (ini tidak diinginkan oleh ARM maupun Apple)
→ Dengan tidak membukanya secara langsung dan hanya mengeksposnya lewat framework, Apple bisa memberikan performa tinggi sambil tetap dapat mengubah instruction set kapan saja
⇨ Hal ini dimungkinkan karena Apple mengendalikan hardware dan software sekaligus
⇨ Developer cukup bekerja melalui Accelerate dan akan ikut menikmati peningkatan di masa depan
- Apa keunggulan Apple Matrix Coprocessor?
→ Menurut perbandingan Nod Labs dengan NEON, instruksi SIMD standar ARMv8.6, AMX lebih dari dua kali lebih cepat
→ Ini bukan berarti AMX unggul dalam segala hal, tetapi setidaknya untuk machine learning atau high-performance computing (HPC), AMX memiliki keunggulan
2 komentar
OpenCL menghilang dan selain akselerasi Metal, Accelerate memang tidak terlalu ditekankan,
namun karena setiap tahun pustakanya terus bertambah, cukup mengejutkan mengetahui bahwa ternyata ada koprosesor khusus untuk akselerasi perangkat keras yang disertakan.
Ini adalah artikel lanjutan dari insinyur yang menulis dua artikel di bawah ini. Saya sarankan untuk membacanya bersama-sama.
→ Dengarkan penjelasannya di YouTube: https://youtu.be/71LlixEBK0o
→ Dengarkan penjelasannya di YouTube: https://youtu.be/F5sIQZvlJc8