Các câu trả lời được trình bày cho đến nay là rất hay, nhưng tôi cũng mong đợi sự nhấn mạnh vào một sự khác biệt cụ thể giữa xử lý song song và xử lý phân tán: mã được thực thi. Xem xét các quá trình song song, mã được thực hiện là như nhau, bất kể mức độ song song (hướng dẫn, dữ liệu, nhiệm vụ). Bạn viết một mã duy nhất và nó sẽ được thực thi bởi các luồng / bộ xử lý khác nhau, ví dụ, trong khi tính toán các sản phẩm ma trận hoặc tạo hoán vị.
Mặt khác, điện toán phân tán liên quan đến việc thực hiện các thuật toán / chương trình khác nhau cùng một lúc trong các bộ xử lý khác nhau (từ một hoặc nhiều máy). Các tính toán như vậy sau đó được hợp nhất thành kết quả trung gian / cuối cùng bằng cách sử dụng các phương tiện truyền thông / đồng bộ hóa dữ liệu có sẵn (bộ nhớ dùng chung, mạng). Hơn nữa, điện toán phân tán rất hấp dẫn để xử lý BigData, vì nó cho phép khai thác song song đĩa (thường là nút cổ chai cho cơ sở dữ liệu lớn).
Cuối cùng, đối với mức độ song song, nó có thể được coi là một ràng buộc đối với việc đồng bộ hóa. Ví dụ, trong GPGPU, là đa dữ liệu một lệnh (SIMD), sự song song xảy ra bằng cách có các đầu vào khác nhau cho một lệnh, mỗi cặp (data_i, lệnh) được thực thi bởi một luồng khác nhau. Đó là hạn chế rằng, trong trường hợp các nhánh khác nhau, cần phải loại bỏ rất nhiều tính toán không cần thiết, cho đến khi các chủ đề tập hợp lại. Tuy nhiên, đối với các luồng CPU, chúng thường phân kỳ; tuy nhiên, người ta có thể sử dụng các cấu trúc đồng bộ hóa để cấp phép thực thi đồng thời các phần cụ thể của mã.