Cĩ rất nhiều ngơn ngữ lập trình và các thư viện được xây dựng nên để dành cho lập trình song song. Những điều này khác nhau ở cách nhìn của chúng về khơng gian địa chỉ dành cho người lập trình, mức đồng bộ trong các chỉ thị song song và sựđa dạng của các chương trình. Mơ hình lập trình truyền thơng điệp là một trong các mơ hình cổ nhất và được sử dụng rộng rãi nhất trong các mơ hình dùng cho lập trình trên các máy tính song song. Lý do chính cho việc này là vì nĩ yêu cầu tối thiểu về phần cứng bên dưới.
Hình 2-7 : Mơ hình truyền thơng điệp
Cĩ 2 tính chất quan trọng tạo nên bản chất của mơ hình truyền thơng điệp là: thứ nhất là nĩ giả sử khơng gian địa chỉđược phân chia và thứ hai là nĩ chỉ hỗ trợ song song hĩa tường minh.
Cấu trúc của những chương trình truyền thơng điệp
Các chương trình truyền thơng điệp thường được viết bằng cách sử dụng mơ hình bất đồng bộ hay ít đồng bộ. Trong mơ hình bất đồng bộ, tất cả các tác vụ song song được thực thi một cách bất đồng bộ. Điều này cho phép ta cĩ thể triển khai bất cứ thuật tốn song song nào. Tuy nhiên những chương trình như vậy thường gặp khĩ khăn hơn để suy ra và bên cạnh đĩ cách thể hiện của nĩ cũng khĩ mà đốn trước do những điều kiện về thực thi. Ngược lại những chương trình ít đồng bộ cĩ thể kết hợp tốt cả hai thái cực này. Trong những chương trình như vậy, các tác vụ và những tập hợp con các tác vụ được đồng bộ hĩa để thực hiện những tương tác. Tuy nhiên giữa những tương tác này, các tác vụđược thực thi hồn tồn bất đồng bộ. Bởi vì những tương tác xảy ra một cách đồng bộ, nên việc suy ra chương trình như vậy cũng khá dễ dàng. Nhiều thuật tốn song song phổ biến cũng được thực hiện một cách tự nhiên bằng cách sử dụng những chương trình ít đồng bộ hơn.
Trong dạng phổ biến nhất của mình, mơ hình truyền thơng điệp hỗ trợ thực thi cho các chương trình khác nhau trên từng bộ xử lý. Điều này cung cấp tính mềm dẻo tối đa trong lập trình song song, nhưng điều này cũng làm cho cơng việc viết các chương trình song song khơng thể mở rộng một cách hiệu
viết bằng cách sử dụng phương pháp single program multiple data (SPMD). Trong những chương trình SPMD, các tiến trình khác nhau thực thi đoạn code tương tự nhau ngọai trừ một số nhỏ các tiến trình (là những tiến trình “gốc”). Điều này khơng cĩ nghĩa là những tiến trình làm việc theo lock-step. Các chương trình SPMD cĩ thể là ít đồng bộ hay là hồn tồn bất đồng bộ.