AMX, Apple M1'in gizli yardımcı işlemcisi
(medium.com)Apple Matrix Coprocessor
-
M1 tanıtımında hiç bahsedilmeyen, matrise özel işlemci
-
Matrisler; görüntü işleme, makine öğrenimi, ses/el yazısı tanıma, yüz tanıma, sıkıştırma, ses/video medya işleme gibi alanlarda yaygın olarak kullanılır
-
Bunu Neural Engine işlemiyor mu? Neural Engine'dan farkı ne?
→ GPU veya Neural Engine birer hızlandırıcıdır
→ Hızlandırıcıların kullanacağı bellek alanını doldurmak için CPU'nun çalışması verimsizdir
→ Bu sırada komutları izleyip (spy) bunu coprocessor'un üstlenmesi sağlanır
→ Bunu kullanmak için ayrı bir komut seti tanımlamak gerekir
→ ARM, özel komut eklemeyi uzun süre reddetti ama 2019'dan itibaren mümkün olan genişletmeler sunmaya başladı
→ Muhtemelen AMX komutlarının resmi belgelerde yer almamasının nedeni de bu
-
Peki ARM içindeki SIMD Vector Engine'den farkı ne?
→ SIMD: Single Instruction Multiple Data
→ Birden çok veri üzerinde aynı operation çalıştırılırken yüksek performans sağlayan yöntem
→ Matris işlemleriyle ilişkilidir
→ Ancak SIMD, ALU/FPU gibi CPU'ya gömülüdür; coprocessor ise haricidir
→ Eski Intel 8087 (FPU), 8086'dan bile daha fazla transistöre sahipti; o dönemde bunu birlikte koymak zordu. Transistör sayısı arttıkça ve FPU CPU'ya gömüldükçe bu ayrım ortadan kalktı
-
AMX'in neden Firestorm çekirdeğinin içine konmadığı net değil
→ Muhtemelen ayrı tutularak CPU ile paralel çalışmasının daha kolay olması amaçlandı
→ Apple da ARM standardı dışındaki şeyleri dışarıda tutmak istemiş olabilir
-
O halde AMX neden gizlendi?
→ AMX resmi belgelerde yoksa, bu nasıl öğrenildi?
→ Dougal Johnson bunu reverse engineering ile ortaya çıkardı
→ Apple, matris işlemleri için Accelerate adlı framework üzerinden çeşitli işlevler sunuyor
⇨ vImage: yüksek seviyeli görüntü işleme. Format dönüştürme ve görüntü manipülasyonu ⇨ BLAS: lineer cebir (matris ve vektör işlemleri) ⇨ BNNS: sinir ağları ve öğrenme ⇨ vDSP: Fourier dönüşümü gibi dijital sinyal işleme. Görüntü veya ses işleme için matematiksel işlemler ⇨ LAPACK: yüksek seviyeli lineer cebir fonksiyonları, lineer denklemler vb.→ Bu Accelerate kütüphanesi, hesaplamayı hızlandırmak için AMX'i kullanıyor
→ Komutların kendisi açıklansaydı ARM ekosistemi parçalanabilirdi (bunu ne ARM ne de Apple ister)
→ Apple bunu doğrudan açığa çıkarmak yerine framework olarak sunarak yüksek performans sağlıyor ve aynı zamanda gerektiğinde komut setini değiştirebilmesini koruyor
⇨ Bu, Apple'ın donanım ve yazılımı aynı anda kontrol etmesi sayesinde mümkün ⇨ Geliştiriciler yalnızca Accelerate üzerinden çalışarak ilerideki iyileştirmelerden de yararlanabiliyor -
Apple Matrix Coprocessor'un avantajı ne?
→ Nod Labs'in ARMv8.6'nın standart SIMD komutu olan NEON ile karşılaştırmasına göre AMX 2 kattan daha hızlı
→ Bu, her konuda AMX'in daha iyi olduğu anlamına gelmese de en azından makine öğrenimi veya yüksek başarımlı hesaplama (HPC) alanlarında AMX'in üstünlük sağladığını gösteriyor
2 yorum
OpenCL ortadan kalktıktan ve Metal hızlandırması dışında Accelerate o kadar vurgulanmamış olsa da
her yıl kütüphaneleri artırıyorlardı; donanım hızlandırması yapan özel bir yardımcı işlemcinin eklenmiş olması şaşırtıcı.
Bu, aşağıdaki iki yazıyı yazan mühendisin devam yazısıdır. Birlikte okumanızı tavsiye ederim.
→ YouTube'da anlatımı dinleyin: https://youtu.be/71LlixEBK0o
→ YouTube'da anlatımı dinleyin: https://youtu.be/F5sIQZvlJc8