Kết nối qua MCP →

Nhập phép tính

Công thức

Quảng cáo

Kết quả

Mức tăng tốc tổng thể
4,706×
lần nhanh hơn so với phiên bản tuần tự
Mức tăng tốc lý thuyết tối đa (s → ∞) 10×
Hiệu suất song song 58,82%

Đị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ự đ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ủa nó có thể chạy song song. Đây là một nền tảng quan trọng trong tính toán song song, giúp các kỹ sư quyết định liệu việc bổ sung thêm bộ xử lý, nhân (core) hay luồng (thread) có thực sự đáng công hay không. Điểm mấu chốt là: phần tuần tự (không thể song song hóa) của chương trình mới chính là yếu tố giới hạn tốc độ cuối cùng, dù bạn có dồn bao nhiêu tài nguyên vào phần song song đi nữa.

Biểu đồ cột thể hiện phần tuần tự và song song của chương trình trước và sau khi song song hóa
Định luật Amdahl chia thời gian chạy thành phần tuần tự cố định \((1 - p)\) và phần song song \(p\) giảm dần khi có nhiều bộ xử lý hơn.

Cách sử dụng máy tính này

Hãy nhập hai giá trị: tỷ lệ song song của chương trình tính theo phần trăm (phần khối lượng công việc có thể chia ra cho nhiều bộ xử lý cùng xử lý), và mức tăng tốc của phần song song, thường chính là số bộ xử lý hoặc số nhân đang chạy phần đó. Máy tính sẽ trả về mức tăng tốc tổng thể, mức tăng tốc lý thuyết tối đa nếu tốc độ song song là vô hạn, cùng với hiệu suất song song.

Giải thích công thức

Phương trình có dạng

$$\text{Tăng tốc} = \dfrac{1}{(1 - p) + \dfrac{p}{s}}$$

trong đó p là tỷ lệ song song (nằm giữa 0 và 1) và s là mức tăng tốc áp dụng cho phần đó. Số hạng \((1 - p)\) chính là phần tuần tự không thể tăng tốc. Khi s tiến tới vô cực, mức tăng tốc hội tụ về \(\dfrac{1}{1-p}\) — đây chính là trần cứng do phần tuần tự áp đặt.

Các đường tăng tốc phẳng dần khi số bộ xử lý tăng với các tỷ lệ song song khác nhau
Tốc độ tăng chững lại khi số bộ xử lý tăng — phần tuần tự giới hạn mức cải thiện tối đa.

Ví dụ minh họa

Giả sử 90% chương trình có thể song song hóa (\(p = 0{,}9\)) và bạn chạy nó trên 8 bộ xử lý (\(s = 8\)). Khi đó mẫu số là

$$(1 - 0{,}9) + \dfrac{0{,}9}{8} = 0{,}1 + 0{,}1125 = 0{,}2125$$

cho mức tăng tốc \(\dfrac{1}{0{,}2125} \approx 4{,}71\times\). Ngay cả khi có vô số bộ xử lý, mức tăng tốc tối đa cũng chỉ đạt \(\dfrac{1}{0{,}1} = 10\times\), cho thấy rõ phần tuần tự 10% đã giới hạn hiệu năng như thế nào.

Diễn giải Kết quả của Bạn

Giá trị tăng tốc độ cho bạn biết chương trình chạy nhanh hơn bao nhiêu lần với \(s\) bộ xử lý so với chạy trên một bộ xử lý duy nhất. Một tăng tốc độ 4× có nghĩa là khối lượng công việc song song hoàn thành trong một phần tư thời gian ban đầu. Vì Định luật Amdahl giả định kích thước vấn đề cố định, tăng tốc độ bị giới hạn bởi phần tuần tự \(1-p\) không thể tăng tốc độ được.

Giới hạn trên bộ xử lý vô hạn, \(1/(1-p)\), là tăng tốc độ tối đa có thể đạt được với phần cứng không giới hạn. Ví dụ, nếu 95% công việc là song song, giới hạn là \(1/(1-0.95) = 20\times\); ngay cả một triệu lõi cũng không thể vượt qua 20×. Đây là con số quan trọng nhất duy nhất để lập kế hoạch: nó xác định giới hạn trên cho bất kỳ khoản đầu tư nào vào bộ xử lý bổ sung.

Hiệu quả song song đo lường mức độ tốt của việc sử dụng bộ xử lý và được định nghĩa là tăng tốc độ chia cho số lượng bộ xử lý, \(\text{hiệu quả} = \text{Tăng tốc độ}/s\). Hiệu quả 1,0 (100%) là mở rộng tuyến tính hoàn hảo; trong thực tế, nó giảm khi bạn thêm lõi. Ví dụ, mã song song 90% trên 8 lõi cho tăng tốc độ 4,71×, vì vậy hiệu quả là \(4.71/8 \approx 59\%\) — mỗi lõi được thêm vào làm ít công việc hữu ích hơn.

Thêm bộ xử lý sẽ không còn đáng giá khi tăng tốc độ cơ hội trên mỗi lõi bổ sung trở nên nhỏ so với chi phí của nó và khi hiệu quả giảm dưới ngưỡng chấp nhận được (thường là 50–70% trong thực tế). Một khi tăng tốc độ tiếp cận giới hạn của nó, phần cứng bổ sung sẽ mang lại hầu như không có gì. Để nâng cao chính giới hạn, bạn phải giảm phần tuần tự — bằng cách song song hóa thêm của thuật toán hoặc giảm đồng bộ hóa và I/O — thay vì mua thêm lõi. Cũng lưu ý rằng Định luật Amdahl bỏ qua chi phí giao tiếp và phối hợp, vì vậy tăng tốc độ trong thế giới thực thường thấp hơn các mức tối đa lý thuyết này.

Câu hỏi thường gặp

Vì sao tăng gấp đôi số bộ xử lý không làm tốc độ tăng gấp đôi? Vì phần tuần tự vẫn chạy với tốc độ như cũ bất kể số lượng bộ xử lý, nên thời gian của nó trở thành nút thắt cổ chai chi phối toàn bộ.

Hiệu suất song song là gì? Đó là mức tăng tốc chia cho số bộ xử lý, biểu diễn dưới dạng phần trăm — một thước đo cho biết bạn đang tận dụng nguồn tài nguyên bổ sung hiệu quả đến đâu.

Nó khác gì với định luật Gustafson? Định luật Gustafson giả định rằng kích thước bài toán sẽ tăng theo số lượng bộ xử lý, nên thường cho cái nhìn lạc quan hơn so với mô hình khối lượng công việc cố định của Amdahl.

Cập nhật lần cuối: