Từ điển học thuật Kỹ thuật và công nghệ

Tính toán song song là gì? Kiến trúc, mô hình lập trình và hiệu năng

Tiếng Anhparallel computing

Tên gọi khácxử lý song songđiện toán song song

Tính toán song song là mô hình tính toán trong đó nhiều phép toán hoặc tác vụ độc lập được thực thi đồng thời trên nhiều đơn vị xử lý để tăng tốc độ giải quyết bài toán và tối ưu hóa hiệu năng tính toán.

234 lượt xem Cập nhật 2/9/2026

Tính toán song song (parallel computing) là một mô hình tính toán tiên tiến trong khoa học máy tính và kỹ thuật tính toán hiệu năng cao (HPC), trong đó một bài toán phức tạp được phân rã thành nhiều bài toán con độc lập hoặc có thể phối hợp đồng thời trên nhiều đơn vị xử lý (processing elements), giúp rút ngắn đáng kể tổng thời gian thực thi và mở rộng năng lực xử lý vượt qua giới hạn vật lý của một bộ vi xử lý đơn lẻ.

Phân loại kiến trúc song song theo Phân loại Flynn

Nền tảng lý thuyết về kiến trúc tính toán song song được Michael Flynn (1972) hệ thống hóa trên tạp chí IEEE Transactions on Computers dựa trên hai luồng thông tin cơ bản là luồng lệnh (instruction stream) và luồng dữ liệu (data stream):

  • SISD (Single Instruction, Single Data): Mô hình máy tính tuần tự cổ điển kiểu von Neumann, tại mỗi thời điểm chỉ thực thi một chỉ thị duy nhất trên một phần tử dữ liệu đơn lẻ.
  • SIMD (Single Instruction, Multiple Data): Một chỉ thị điều khiển duy nhất được phát đồng thời tới hàng ngàn đơn vị xử lý số học để thao tác trên các phần tử dữ liệu khác nhau trong cùng một chu kỳ xung nhịp. Đây là nguyên lý cốt lõi của các bộ xử lý đồ họa hiện đại (GPU) và các tập lệnh véc-tơ mở rộng (AVX, NEON).
  • MISD (Multiple Instruction, Single Data): Nhiều chỉ thị khác nhau cùng thao tác trên một luồng dữ liệu duy nhất, chủ yếu được ứng dụng trong các hệ thống dự phòng chịu lỗi đặc biệt hoặc kiểm tra an toàn hàng không vũ trụ.
  • MIMD (Multiple Instruction, Multiple Data): Mỗi bộ vi xử lý thực thi một luồng lệnh độc lập trên các tập dữ liệu riêng biệt. Hầu hết các siêu máy tính, máy chủ đa vi xử lý (multi-core SMP) và cụm máy tính phân tán (clusters) hiện nay đều thuộc kiến trúc MIMD.

Mô hình tổ chức bộ nhớ trong hệ thống song song

Cách thức tổ chức và truy xuất không gian địa chỉ bộ nhớ quyết định trực tiếp tới mô hình lập trình và hiệu năng giao tiếp giữa các đơn vị tính toán:

Kiến trúc bộ nhớ Nguyên lý tổ chức vật lý Cơ chế giao tiếp và đồng bộ Mô hình lập trình tiêu biểu
Bộ nhớ chia sẻ (Shared Memory) Mọi bộ xử lý cùng truy cập vào một không gian địa chỉ bộ nhớ vật lý chung (UMA hoặc NUMA) Giao tiếp trực tiếp qua đọc và ghi biến chung, đồng bộ bằng khóa mutex, semaphore, barrier OpenMP, POSIX Threads (pthreads), Intel TBB
Bộ nhớ phân tán (Distributed Memory) Mỗi nút tính toán sở hữu bộ nhớ riêng biệt, không thể truy cập trực tiếp bộ nhớ của nút khác Giao tiếp hoàn toàn thông qua truyền nhận các gói thông điệp qua mạng kết nối nội bộ Message Passing Interface (MPI)
Bộ nhớ lai (Hybrid Architecture) Kết hợp các cụm máy phân tán (cluster), trong đó mỗi nút lại là hệ thống đa lõi hoặc tăng tốc GPU Truyền thông điệp giữa các nút và xử lý đa luồng hoặc đa nhân bên trong mỗi nút tính toán Kết hợp MPI đa tiến trình + OpenMP đa luồng + CUDA tăng tốc phần cứng

Quy trình thiết kế thuật toán song song theo phương pháp luận PCAM

Để chuyển đổi một bài toán tuần tự sang kiến trúc song song hiệu quả, quy trình thiết kế thường tuân thủ bốn giai đoạn chuẩn hóa (phương pháp luận PCAM do Ian Foster đề xuất):

  1. Phân vùng (Partitioning): Chia nhỏ toàn bộ khối lượng tính toán và tập dữ liệu thành số lượng lớn các tác vụ nguyên tử nhỏ nhất có thể (theo phân vùng miền dữ liệu hoặc phân vùng chức năng tác vụ).
  2. Giao tiếp (Communication): Xác định các luồng truyền thông và trao đổi dữ liệu cần thiết giữa các tác vụ, tối ưu hóa nhằm giảm thiểu độ trễ mạng và tránh hiện tượng tắc nghẽn giao tiếp.
  3. Kết tụ (Agglomeration): Gộp các tác vụ nhỏ và dữ liệu liên quan thành các khối công việc lớn hơn để cân bằng giữa chi phí tính toán hữu ích và chi phí quản lý phụ trội (overhead).
  4. Ánh xạ (Mapping): Phân phối các khối công việc đã kết tụ vào các đơn vị xử lý vật lý cụ thể nhằm tối đa hóa mức độ cân bằng tải (load balancing) và giảm thiểu thời gian chờ rỗi của các bộ vi xử lý.

Các mô hình và công cụ lập trình song song phổ biến

Lập trình viên hiệu năng cao sử dụng nhiều giao diện lập trình ứng dụng (API) và ngôn ngữ chuẩn hóa:

  • OpenMP (Open Multi-Processing): Giao diện lập trình đa luồng dựa trên các chỉ thị tiền xử lý (compiler directives) dành cho C, C++ và Fortran trên kiến trúc bộ nhớ chia sẻ, giúp song song hóa vòng lặp một cách trực quan và tối ưu chi phí quản lý luồng.
  • MPI (Message Passing Interface): Chuẩn giao tiếp truyền thông điệp không phụ thuộc nhà sản xuất, là tiêu chuẩn công nghiệp thống trị trong phát triển phần mềm cho các siêu máy tính quy mô lớn hàng chục ngàn nút.
  • CUDA (Compute Unified Device Architecture): Nền tảng tính toán song song độc quyền do NVIDIA phát triển, cho phép tận dụng hàng ngàn nhân CUDA trên GPU để tăng tốc vượt bậc các thuật toán đại số tuyến tính, huấn luyện mạng nơ-ron sâu và mô phỏng động học phân tử.

Chỉ số đánh giá hiệu năng và các định luật giới hạn

Để đánh giá định lượng hiệu quả của một giải thuật hoặc hệ thống tính toán song song, cộng đồng khoa học sử dụng các chỉ số chuẩn hóa:

Tốc độ tăng tốc (speedup) được định nghĩa là tỷ số giữa thời gian thực thi trên một đơn vị xử lý đơn lẻ so với thời gian thực thi trên một hệ thống gồm nhiều đơn vị xử lý đồng thời. Được tính bằng công thức: S=T1TpS = \frac{T_1}{T_p} trong đó T1T_1 là thời gian thực thi bài toán trên một lõi tuần tự, và TpT_p là thời gian hoàn thành bài toán trên pp lõi xử lý. Trường hợp lý tưởng đạt tăng tốc tuyến tính hoàn hảo là S=pS = p, tuy nhiên trên thực tế tốc độ tăng tốc luôn bị giới hạn bởi độ trễ truyền thông, thời gian chờ đồng bộ và xung đột bộ nhớ.

Hiệu suất sử dụng tài nguyên (efficiency) phản ánh mức độ khai thác hữu ích công suất phần cứng, được xác định qua biểu thức: E=SpE = \frac{S}{p} Giá trị của EE nằm trong khoảng từ không đến một. Khi tăng số lượng đơn vị xử lý lên rất lớn mà kích thước bài toán giữ nguyên, hiệu suất thường có xu hướng suy giảm mạnh.

1. Định luật Amdahl

Gene Amdahl (1967) chứng minh rằng nếu một chương trình có một phần tuần tự không thể song song hóa, thì tốc độ tăng tốc tối đa của toàn bộ chương trình sẽ bị chặn trên bởi nghịch đảo của tỷ lệ tuần tự đó, bất kể số lượng bộ xử lý được bổ sung thêm nhiều đến mức nào.

2. Định luật Gustafson

John Gustafson (1988) đưa ra góc nhìn bổ khuyết quan trọng: trong thực tế, khi sở hữu hệ thống tính toán mạnh mẽ hơn, các nhà khoa học sẽ mở rộng quy mô bài toán (scaled problem size) thay vì giữ nguyên kích thước dữ liệu cố định. Khi đó, thời gian thực thi phần song song tăng lên trong khi thời gian phần tuần tự không đổi, giúp tốc độ tăng tốc thực tế tăng gần như tuyến tính theo số lượng bộ xử lý.

Các thách thức cốt lõi trong lập trình song song

Phát triển phần mềm tính toán song song đòi hỏi lập trình viên phải giải quyết nhiều thách thức kỹ thuật phức tạp:

  • Tranh chấp dữ liệu (Race Condition): Xuất hiện khi nhiều luồng cùng truy cập và chỉnh sửa một vùng nhớ chung mà không có cơ chế đồng bộ thích hợp, dẫn đến kết quả tính toán sai lệch bất định.
  • Bế tắc (Deadlock): Hiện tượng hai hay nhiều tiến trình bị chặn vĩnh viễn do mỗi tiến trình đều giữ một tài nguyên mà tiến trình kia đang chờ cấp phát.
  • Hiện tượng thắt cổ chai giao tiếp (Communication Bottleneck): Khi thời gian truyền dữ liệu qua mạng kết nối giữa các nút vượt quá thời gian tính toán hữu ích, làm triệt tiêu lợi ích của việc bổ sung thêm nút xử lý.
  • Tính nhất quán bộ nhớ đệm (Cache Coherence): Đòi hỏi các giao thức phần cứng phức tạp như MESI hoặc MOESI để đảm bảo mọi lõi CPU đều nhìn thấy giá trị mới nhất của dữ liệu được lưu tạm trong bộ nhớ đệm L1/L2/L3.

Ứng dụng thực tiễn của tính toán song song

Tính toán song song là động lực kỹ thuật đằng sau những đột phá khoa học và công nghệ hiện đại:

  1. Mô phỏng khoa học và kỹ thuật: Dự báo thời tiết và mô hình hóa biến đổi khí hậu toàn cầu; tính toán động lực học chất lưu (CFD) trong thiết kế máy bay và tàu thủy; mô phỏng phản ứng tổng hợp hạt nhân.
  2. Trí tuệ nhân tạo và Học sâu: Huấn luyện các mô hình ngôn ngữ lớn (LLM) chứa hàng trăm tỷ tham số đòi hỏi phân tán khối lượng tính toán ma trận khổng lồ trên hàng chục nghìn chip tăng tốc chuyên dụng.
  3. Tin sinh học và Dược học phân tử: Giải trình tự hệ gen thế hệ mới, mô phỏng quá trình cuộn gập protein để phát hiện thuốc mục tiêu chống lại các bệnh nan y.
  4. Xử lý dữ liệu lớn trong tài chính và công nghiệp: Mô phỏng rủi ro ngẫu nhiên Monte Carlo trong phân tích tài chính, phân tích hành vi người dùng thời gian thực và vận hành hệ thống thành phố thông minh.

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

Phân loại Flynn chia các kiến trúc máy tính song song thành những nhóm nào?

Phân loại Flynn chia kiến trúc máy tính thành bốn nhóm dựa trên luồng lệnh và luồng dữ liệu: SISD (đơn lệnh - đơn dữ liệu), SIMD (đơn lệnh - đa dữ liệu), MISD (đa lệnh - đơn dữ liệu) và MIMD (đa lệnh - đa dữ liệu).

Định luật Amdahl và định luật Gustafson có điểm khác biệt căn bản nào?

Định luật Amdahl giả định kích thước bài toán cố định và chỉ ra giới hạn tăng tốc do phần tuần tự; ngược lại, định luật Gustafson giả định quy mô bài toán mở rộng tương ứng với số lượng bộ xử lý, cho phép tăng tốc gần như tuyến tính.

Các công cụ lập trình song song phổ biến nhất hiện nay là gì?

Các công cụ chuẩn hóa gồm OpenMP cho hệ thống bộ nhớ chia sẻ, MPI cho hệ thống phân tán truyền thông điệp, và CUDA/OpenCL cho tính toán song song ồ ạt trên bộ xử lý đồ họa (GPU).

Tài liệu tham khảo

  1. Flynn, M. J. (1972). Some Computer Organizations and Their Effectiveness. IEEE Transactions on Computers, C-21(9), 948-960. DOI: 10.1109/TC.1972.5009071
  2. Amdahl, G. M. (1967). Validity of the single processor approach to achieving large scale computing capabilities. Proceedings of AFIPS '67, 483-485. DOI: 10.1145/1465482.1465560
  3. Gustafson, J. L. (1988). Reevaluating Amdahl's law. Communications of the ACM, 31(5), 532-533. DOI: 10.1145/42411.42415