14 điểm bởi xguru 2021-01-18 | 2 bình luận | Chia sẻ qua WhatsApp

Apple Matrix Coprocessor

  • Bộ xử lý chuyên dụng cho ma trận mà hoàn toàn không được nhắc đến trong buổi công bố M1

  • Ma trận được dùng rất nhiều trong xử lý ảnh, machine learning, nhận dạng giọng nói/chữ viết tay, nhận diện khuôn mặt, nén, xử lý media âm thanh/video, v.v.

  • Chẳng phải việc đó do Neural Engine xử lý sao? Nó khác gì với Neural Engine?

→ GPU hay Neural Engine là các accelerator (bộ tăng tốc)

→ CPU phải làm công việc lấp đầy không gian bộ nhớ để các bộ tăng tốc dùng đến là không hiệu quả

→ Lúc này, bộ đồng xử lý sẽ theo dõi (spy) các lệnh và xử lý thay phần đó

→ Để dùng được cách này thì cần định nghĩa một tập lệnh riêng

→ ARM trước đây đã từ chối việc thêm lệnh tùy biến, nhưng từ năm 2019 bắt đầu cung cấp các phần mở rộng cho phép điều đó

→ Đây có lẽ cũng là lý do các lệnh AMX không xuất hiện trong tài liệu chính thức

  • Vậy nó khác gì với SIMD Vector Engine có trong ARM?

→ SIMD: Single Instruction Multiple Data

→ Một phương pháp cho hiệu năng cao khi thực thi cùng một operation trên nhiều dữ liệu

→ Có liên quan đến các phép toán ma trận

→ Nhưng SIMD được tích hợp trong CPU như ALU, FPU, còn coprocessor là thành phần bên ngoài

→ Intel 8087 (FPU) trước đây còn có số transistor nhiều hơn cả 8086, nên thời đó rất khó tích hợp chung. Khi công nghệ phát triển, số lượng transistor tăng lên và FPU được tích hợp vào CPU nên nó biến mất

  • Vẫn chưa rõ vì sao AMX không được đưa vào trong lõi Firestorm

→ Có lẽ việc tách riêng sẽ giúp nó làm việc song song với CPU dễ hơn,

→ và từ góc nhìn của Apple, họ cũng có thể muốn đặt những thứ không thuộc chuẩn ARM ra bên ngoài.

  • Vậy tại sao AMX lại bị giấu đi?

→ AMX không có trong tài liệu chính thức, vậy người ta biết đến nó bằng cách nào?

→ Dougal Johnson đã phát hiện ra điều đó thông qua reverse engineering

→ Apple cung cấp nhiều chức năng khác nhau thông qua Accelerate, framework dành cho tính toán ma trận

⇨ vImage: xử lý ảnh cấp cao, chuyển đổi định dạng và thao tác ảnh

⇨ BLAS: đại số tuyến tính (phép toán ma trận và vector)

⇨ BNNS: mạng nơ-ron và học máy

⇨ vDSP: xử lý tín hiệu số như biến đổi Fourier, các phép toán cho xử lý ảnh hoặc âm thanh

⇨ LAPACK: các hàm đại số tuyến tính cấp cao, phương trình tuyến tính, v.v.

→ Thư viện Accelerate này tăng tốc tính toán bằng cách sử dụng AMX

→ Nếu công khai chính các lệnh đó thì hệ sinh thái ARM có thể đã bị phân mảnh (điều mà cả ARM lẫn Apple đều không mong muốn)

→ Apple không công khai nó mà mở ra dưới dạng framework, nhờ đó vừa cung cấp hiệu năng cao vừa có thể thay đổi tập lệnh bất cứ lúc nào

⇨ Điều này khả thi vì Apple kiểm soát đồng thời cả phần cứng lẫn phần mềm

⇨ Nhà phát triển chỉ cần làm việc thông qua Accelerate là cũng sẽ được hưởng các cải tiến trong tương lai

  • Ưu điểm của Apple Matrix Coprocessor là gì?

→ Theo so sánh của Nod Labs với NEON, tập lệnh SIMD tiêu chuẩn của ARMv8.6, AMX nhanh hơn hơn 2 lần

→ Không phải trong mọi trường hợp AMX đều tốt hơn, nhưng ít nhất trong machine learning hay high-performance computing (HPC), AMX đang chiếm ưu thế

2 bình luận

 
godrm 2021-01-19

OpenCL đã biến mất, ngoài tăng tốc bằng Metal thì họ cũng không nhấn mạnh Accelerate đến vậy,

nhưng mỗi năm vẫn liên tục bổ sung thêm thư viện, nên khá bất ngờ khi biết rằng đã có thêm một bộ đồng xử lý chuyên dụng để tăng tốc phần cứng.

 
xguru 2021-01-18

Đây là bài viết tiếp theo của kỹ sư đã viết hai bài dưới đây. Mình khuyên bạn nên đọc cùng nhau.

→ Nghe giải thích trên YouTube: https://youtu.be/71LlixEBK0o

→ Nghe giải thích trên YouTube: https://youtu.be/F5sIQZvlJc8