14 คะแนน โดย xguru 2021-01-18 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

Apple Matrix Coprocessor

  • โปรเซสเซอร์เฉพาะทางสำหรับเมทริกซ์ที่ไม่เคยถูกพูดถึงเลยตอนเปิดตัว M1

  • เมทริกซ์ถูกใช้อย่างมากในงานประมวลผลภาพ, แมชชีนเลิร์นนิง, การรู้จำเสียง/ลายมือ, การจดจำใบหน้า, การบีบอัด, การประมวลผลสื่อเสียง/วิดีโอ เป็นต้น

  • แบบนี้ไม่ใช่ว่า Neural Engine เป็นคนจัดการอยู่แล้วหรือ? แล้วมันต่างจาก Neural Engine ยังไง?

→ GPU หรือ Neural Engine เป็น Accelerator (ตัวเร่ง)

→ การที่ CPU ต้องมาคอยเติมพื้นที่หน่วยความจำให้ตัวเร่งเหล่านี้ใช้งานนั้นไม่มีประสิทธิภาพ

→ ในจังหวะนี้ มีการคอยดูคำสั่งอยู่ (spy) แล้วให้ Coprocessor จัดการแทน

→ หากจะใช้งานสิ่งนี้ จำเป็นต้องกำหนดชุดคำสั่งแยกต่างหาก

→ ARM เคยปฏิเสธการใส่คำสั่งแบบคัสตอมมาโดยตลอด แต่ตั้งแต่ปี 2019 ก็เริ่มมีส่วนขยายที่ทำให้ทำได้

→ นั่นน่าจะเป็นเหตุผลที่คำสั่ง AMX ไม่ปรากฏในเอกสารทางการ

  • แล้วมันต่างจาก SIMD Vector Engine ที่อยู่ใน ARM ยังไง?

→ SIMD : Single Instruction Multiple Data

→ เป็นวิธีที่ให้ประสิทธิภาพสูงเมื่อรัน Operation เดียวกันกับข้อมูลหลายชุด

→ เกี่ยวข้องกับการคำนวณเมทริกซ์

→ แต่ SIMD เป็นส่วนที่ฝังอยู่ใน CPU เหมือน ALU, FPU ขณะที่ coprocessor เป็นหน่วยแยกภายนอก

→ ในอดีต Intel 8087 (FPU) มีจำนวนทรานซิสเตอร์มากกว่า 8086 เสียอีก จึงยากที่จะใส่รวมกันในยุคนั้น ต่อมาเมื่อเทคโนโลยีพัฒนา จำนวนทรานซิสเตอร์เพิ่มขึ้นและมีการฝัง FPU ไว้ใน CPU จึงทำให้รูปแบบนี้หายไป

  • ยังไม่ชัดเจนว่าทำไม AMX ถึงไม่ได้อยู่ภายในคอร์ Firestorm

→ อาจเป็นเพราะการแยกออกมาต่างหากทำให้ทำงานแบบขนานกับ CPU ได้ง่ายกว่า

→ และในมุมของ Apple อาจต้องการให้สิ่งที่ไม่ใช่มาตรฐาน ARM อยู่ภายนอก

  • แล้วทำไม AMX ถึงถูกซ่อนไว้?

→ ถ้า AMX ไม่มีอยู่ในเอกสารทางการ แล้วรู้ได้ยังไงว่ามันมี?

→ Dougal Johnson ค้นพบมันผ่านการทำ reverse engineering

→ Apple มีฟีเจอร์หลากหลายผ่าน Accelerate ซึ่งเป็นเฟรมเวิร์กสำหรับการคำนวณเมทริกซ์

⇨ vImage : การประมวลผลภาพระดับสูง, การแปลงฟอร์แมต และการปรับแต่งภาพ

⇨ BLAS : พีชคณิตเชิงเส้น (การคำนวณเมทริกซ์และเวกเตอร์)

⇨ BNNS : โครงข่ายประสาทและการเรียนรู้

⇨ vDSP : การประมวลผลสัญญาณดิจิทัล เช่น ฟูเรียร์ทรานส์ฟอร์ม และการคำนวณทางคณิตศาสตร์สำหรับภาพหรือเสียง

⇨ LAPACK : ฟังก์ชันพีชคณิตเชิงเส้นระดับสูง, สมการเชิงเส้น เป็นต้น

→ ไลบรารี Accelerate นี้ใช้ AMX เพื่อเร่งการคำนวณ

→ หากเปิดเผยตัวคำสั่งโดยตรง ก็อาจทำให้อีโคซิสเต็ม ARM แตกเป็นเสี่ยง ๆ (ซึ่งทั้ง ARM และ Apple ต่างก็ไม่ต้องการ)

→ Apple เลือกไม่เปิดเผยสิ่งนี้และเปิดให้ใช้ผ่านเฟรมเวิร์กแทน จึงให้ประสิทธิภาพสูงได้พร้อมกับสามารถแก้ไขชุดคำสั่งได้ทุกเมื่อ

⇨ สิ่งนี้เป็นไปได้เพราะ Apple ควบคุมทั้งฮาร์ดแวร์และซอฟต์แวร์พร้อมกัน

⇨ นักพัฒนาเพียงทำงานผ่าน Accelerate ก็จะได้รับประโยชน์จากการปรับปรุงในอนาคตด้วย

  • ข้อดีของ Apple Matrix Coprocessor คืออะไร?

→ จากการเปรียบเทียบของ Nod Labs กับ NEON ซึ่งเป็นชุดคำสั่ง SIMD มาตรฐานของ ARMv8.6 พบว่า AMX เร็วกว่าเกิน 2 เท่า

→ ไม่ได้หมายความว่า AMX ดีกว่าในทุกอย่าง แต่อย่างน้อยในงานแมชชีนเลิร์นนิงหรือคอมพิวเตอร์สมรรถนะสูง (HPC) นั้น AMX มีความได้เปรียบ

2 ความคิดเห็น

 
godrm 2021-01-19

OpenCL หายไปแล้ว และนอกจากการเร่งความเร็วด้วย Metal แล้ว แม้จะไม่ได้เน้น Accelerate มากนัก

แต่ก็เพิ่มไลบรารีขึ้นทุกปีอยู่แล้ว พอรู้ว่ามีโคโปรเซสเซอร์เฉพาะทางสำหรับการเร่งความเร็วด้วยฮาร์ดแวร์เข้ามาด้วยก็น่าทึ่งครับ

 
xguru 2021-01-18

นี่คือบทความติดตามจากวิศวกรคนเดียวกับที่เขียนสองบทความด้านล่างนี้ แนะนำให้อ่านควบคู่กันไปครับ

→ ฟังคำอธิบายทาง YouTube : https://youtu.be/71LlixEBK0o

→ ฟังคำอธิบายทาง YouTube : https://youtu.be/F5sIQZvlJc8