Định luật Amdahl là gì?
Định luật Amdahl do kiến trúc sư máy tính Gene Amdahl đưa ra vào năm 1967, dùng để dự đoán mức tăng tốc lý thuyết tối đa của một tác vụ khi chỉ có một phần công việc có thể chạy song song. Đây là nền tảng của lĩnh vực tính toán song song, giúp các kỹ sư đặt ra kỳ vọng thực tế trước khi đầu tư thêm bộ xử lý, lõi (core) hay luồng (thread).
Cách sử dụng máy tính
Bạn cần nhập hai giá trị: tỷ lệ song song (p) — phần chương trình (từ 0 đến 1) có thể chạy song song — và hệ số tăng tốc (s), thường chính là số bộ xử lý hoặc số lõi áp dụng cho phần song song đó. Máy tính sẽ trả về mức tăng tốc tổng thể, mức tăng tốc tối đa theo lý thuyết và hiệu suất song song.
Giải thích công thức
Công thức là $$\text{Tốc độ} = \frac{1}{(1 - p) + \dfrac{p}{s}}$$ Thành phần \((1 - p)\) là phần tuần tự không thể tăng tốc được. Khi \(s\) tăng lên rất lớn, \(p/s\) tiến dần về 0, nên mức tăng tốc bị giới hạn ở \(1/(1 - p)\). Đây chính là lý do một chương trình có 90% chạy song song cũng không bao giờ nhanh hơn quá 10 lần, dù bạn có thêm bao nhiêu bộ xử lý đi nữa.
Ví dụ minh họa
Giả sử 90% chương trình có thể chạy song song (\(p = 0{,}9\)) và bạn dùng 4 bộ xử lý (\(s = 4\)). Khi đó mẫu số $$(1 - 0{,}9) + \frac{0{,}9}{4} = 0{,}1 + 0{,}225 = 0{,}325$$ Mức tăng tốc $$\frac{1}{0{,}325} \approx 3{,}08 \text{ lần}$$ Mức tăng tốc tối đa có thể đạt là \(1 / 0{,}1 = 10\) lần, và hiệu suất là \(3{,}08 / 4 \approx 76{,}9\%\).
Diễn giải kết quả của bạn
Tăng tốc độ tổng thể là những gì bạn thực sự nhận được với số bộ xử lý \(s\) mà bạn đã nhập — chẳng hạn, kết quả 4,71× có nghĩa là chương trình song song hóa chạy khoảng 4,71 lần nhanh hơn phiên bản một bộ xử lý. Tăng tốc độ tối đa, \(1/(1-p)\), là giới hạn tuyệt đối mà bạn sẽ tiến gần với vô số bộ xử lý. Khoảng cách giữa hai giá trị này cho bạn biết còn bao nhiêu chỗ: nếu tăng tốc độ tổng thể của bạn đã gần với mức tối đa, việc thêm phần cứng sẽ hầu như không giúp gì.
Hiệu suất trả lời câu hỏi "Tôi đang sử dụng các bộ xử lý mà tôi phải trả tiền một cách tốt như thế nào?" Hiệu suất gần 100% có nghĩa là mỗi bộ xử lý đang góp phần gần một đơn vị tăng tốc độ — một sử dụng tài nguyên xuất sắc. Hiệu suất thấp (chẳng hạn, dưới 30%) có nghĩa là hầu hết các bộ xử lý đang ở trạng thái nhàn rỗi hoặc chờ đợi phần tuần tự, vì vậy bạn đang trả tiền cho phần cứng không làm việc hữu ích.
Phân số tuần tự \(1-p\) là giới hạn quyết định. Ngay cả một phân số tuần tự nhỏ cũng làm giới hạn hiệu suất cứng: ở \(p=0,95\) giới hạn chỉ là 20×, vì vậy vượt quá khoảng 16–32 bộ xử lý mỗi bộ xử lý mới thêm vào hầu như không thêm gì. Một quy tắc thực tế là dừng lại việc thêm bộ xử lý khi hiệu suất giảm dưới ngưỡng chấp nhận được của bạn (thường là 50–70% cho công việc nhạy cảm với chi phí), bởi vì sau điểm đó bạn đang chi tiền cho lợi ích biến mất. Để đẩy giới hạn cao hơn, bạn phải giảm chính phân số tuần tự — những thay đổi thuật toán tăng \(p\) thường mang lại nhiều lợi ích hơn việc đơn giản thêm các lõi.
Các thuật ngữ chính & Biến
- Phân số song song (\(p\)) — tỷ lệ công việc của chương trình có thể được thực hiện song song, được biểu thị dưới dạng số thập phân từ 0 đến 1. Giá trị 0,9 có nghĩa là 90% khối lượng công việc có thể được chia sẻ trên các bộ xử lý.
- Phân số tuần tự (\(1-p\)) — phần phải chạy tuần tự trên một bộ xử lý duy nhất và không thể được tăng tốc độ bằng song song hóa. Phân số này đặt giới hạn trên cứng của tăng tốc độ tổng thể.
- Tăng tốc độ của phần song song (\(s\)) — hệ số mà phần có thể song song hóa được tăng tốc, thường bằng số bộ xử lý hoặc lõi được áp dụng cho nó.
- Tăng tốc độ tổng thể — tỷ lệ của thời gian thực thi một bộ xử lý để thực thi song song, \(1/\big((1-p)+p/s\big)\). Đây là mức tăng hiệu suất trong thế giới thực.
- Tăng tốc độ tối đa — giới hạn lý thuyết \(1/(1-p)\) đạt được khi \(s\) phát triển không ràng buộc, được xác định solely bởi phân số tuần tự.
- Hiệu suất song song — tăng tốc độ tổng thể chia cho số bộ xử lý, \(\text{Tăng tốc độ}/s\), được biểu thị dưới dạng phần trăm; nó đo lường mức độ hiệu quả của mỗi bộ xử lý được sử dụng.
Câu hỏi thường gặp
Vì sao thêm bộ xử lý lại mang lại lợi ích giảm dần? Vì phần tuần tự trở thành điểm nghẽn. Một khi phần này chiếm ưu thế, việc bổ sung thêm bộ xử lý gần như không còn tác dụng.
Hiệu suất song song là gì? Đó là mức tăng tốc chia cho số bộ xử lý, biểu thị bằng phần trăm — cho biết mỗi bộ xử lý đang được khai thác hiệu quả đến mức nào.
Định luật này khác gì với định luật Gustafson? Định luật Amdahl giả định kích thước bài toán cố định; còn định luật Gustafson giả định bài toán mở rộng theo số bộ xử lý, nên cho kết quả lạc quan hơn.