Ví dụ từ sách giáo khoa "Công nghệ lập trình song song MPI và OpenMP". Các kiểu dữ liệu dẫn xuất Hoạt động điểm-điểm

Chú thích: Bài giảng tập trung vào việc xem xét công nghệ MPI như một tiêu chuẩn lập trình song song cho các hệ thống bộ nhớ phân tán. Các phương thức truyền dữ liệu chính được xem xét. Các khái niệm như nhóm quy trình và người giao tiếp được giới thiệu. Bao gồm các loại dữ liệu cơ bản, hoạt động điểm-điểm, hoạt động tập thể, hoạt động đồng bộ hóa và đo thời gian.

Mục đích của bài giảng: Bài giảng nhằm mục đích nghiên cứu phương pháp phát triển chung thuật toán song song.

Quay video bài giảng - (khối lượng - 134 MB).

5.1. MPI: các khái niệm và định nghĩa cơ bản

Chúng ta hãy xem xét một số khái niệm và định nghĩa cơ bản của tiêu chuẩn MPI.

5.1.1. Khái niệm chương trình song song

Dưới chương trình song song trong khuôn khổ MPI, chúng tôi hiểu một tập hợp các nhiệm vụ được thực hiện đồng thời quy trình. Các tiến trình có thể chạy trên bộ xử lý khác nhau, nhưng một số quy trình có thể được đặt trên một bộ xử lý (trong trường hợp này, chúng được thực thi ở chế độ chia sẻ thời gian). Trong trường hợp cực đoan, một bộ xử lý duy nhất có thể được sử dụng để thực thi chương trình song song - theo quy định, phương pháp này được sử dụng để kiểm tra ban đầu tính đúng đắn của chương trình song song.

Mỗi tiến trình của một chương trình song song được sinh ra từ một bản sao của cùng một mã chương trình ( mô hình SPMP). Các Mã chương trình, được trình bày dưới dạng chương trình thực thi, phải có sẵn tại thời điểm chương trình song song được khởi chạy trên tất cả các bộ xử lý được sử dụng. Mã nguồn cho chương trình thực thi được phát triển bằng ngôn ngữ thuật toán C hoặc Fortran bằng cách sử dụng cách triển khai này hoặc cách triển khai khác của thư viện MPI.

Số lượng quy trình và số lượng bộ xử lý được sử dụng được xác định tại thời điểm chương trình song song được khởi chạy bằng môi trường thực thi chương trình MPI và không thể thay đổi trong quá trình tính toán (tiêu chuẩn MPI-2 cung cấp khả năng thay đổi năng động số tiến trình). Tất cả các tiến trình của chương trình được đánh số tuần tự từ 0 đến p-1, Ở đâu P là tổng số tiến trình Số tiến trình được gọi thứ hạng quá trình.

5.1.2. Hoạt động truyền dữ liệu

MPI dựa trên các hoạt động truyền tin nhắn. Trong số các chức năng được cung cấp như một phần của MPI, có những chức năng khác nhau đôi (điểm-điểm) hoạt động giữa hai quá trình và tập thể (tập thể) các hành động giao tiếp để tương tác đồng thời của một số quy trình.

Có thể được sử dụng để thực hiện các hoạt động ghép nối chế độ khác nhau truyền, bao gồm đồng bộ, chặn, v.v. - xem xét đầy đủ các khả năng có thể phương thức truyền tải sẽ được thực hiện trong tiểu mục 5.3.

Như đã lưu ý trước đó, tiêu chuẩn MPI quy định nhu cầu triển khai hầu hết các hoạt động truyền dữ liệu chung cơ bản - xem tiểu mục 5.2 và 5.4.

5.1.3. Khái niệm về người giao tiếp

Các tiến trình của một chương trình song song được kết hợp thành các nhóm. Dưới người giao tiếp MPI đề cập đến một đối tượng dịch vụ được tạo đặc biệt để kết hợp một nhóm quy trình và một số thông số bổ sung (bối cảnh) được sử dụng khi thực hiện các thao tác truyền dữ liệu.

Thông thường, các hoạt động truyền dữ liệu ghép đôi được thực hiện cho các tiến trình thuộc cùng một bộ truyền tin. Các hoạt động tập thể được áp dụng đồng thời cho tất cả các quy trình giao tiếp. Do đó, việc chỉ định bộ giao tiếp sẽ sử dụng là bắt buộc đối với các hoạt động truyền dữ liệu trong MPI.

Trong quá trình tính toán, các nhóm quy trình và bộ truyền thông mới có thể được tạo và các nhóm quy trình và bộ truyền thông hiện có có thể bị xóa. Quá trình tương tự có thể thuộc về các nhóm và người giao tiếp khác nhau. Tất cả các quy trình có trong chương trình song song đều được bao gồm trong bộ giao tiếp được tạo theo mặc định với mã định danh MPI_COMM_WORLD.

Nếu bạn cần chuyển dữ liệu giữa các tiến trình từ các nhóm khác nhau cần phải tạo ra một công cụ giao tiếp toàn cầu ( máy liên lạc).

Thảo luận chi tiết về khả năng làm việc với nhóm và người truyền thông của MPI sẽ được trình bày trong tiểu mục 5.6.

5.1.4. Loại dữ liệu

Khi thực hiện các thao tác chuyển tin nhắn, bạn phải chỉ định dữ liệu được gửi hoặc nhận trong các hàm MPI. kiểu dữ liệu đã gửi. MPI chứa bộ lớn các loại cơ bản dữ liệu phần lớn trùng khớp với các kiểu dữ liệu trong ngôn ngữ thuật toán C và Fortran. Ngoài ra, MPI còn có khả năng tạo mới các loại dẫn xuất dữ liệu chính xác hơn và mô tả ngắn gọn nội dung của các tin nhắn được chuyển tiếp.

Thảo luận chi tiết về khả năng làm việc với các kiểu dữ liệu dẫn xuất của MPI sẽ được trình bày trong tiểu mục 5.5.

5.1.5. Cấu trúc liên kết ảo

Như đã lưu ý trước đó, các hoạt động truyền dữ liệu được ghép nối có thể được thực hiện giữa bất kỳ quy trình nào của cùng một bộ giao tiếp và tất cả các quy trình của bộ giao tiếp đều tham gia vào một hoạt động chung. Về vấn đề này, cấu trúc liên kết logic của các đường truyền thông giữa các tiến trình có cấu trúc của một biểu đồ hoàn chỉnh (bất kể sự hiện diện của thực tế). kênh vật lý giao tiếp giữa các bộ xử lý).

Đồng thời (và điều này đã được lưu ý trong Phần 3), để trình bày và phân tích tiếp theo một số thuật toán song song, nên có một biểu diễn logic của thuật toán hiện có. cộng đồng mạng dưới dạng các cấu trúc liên kết nhất định.

MPI có khả năng biểu diễn nhiều tiến trình dưới dạng lưới sắt kích thước tùy ý (xem tiểu mục 5.7). Trong trường hợp này, các quá trình biên của các mạng có thể được khai báo lân cận và do đó, dựa trên các mạng, các cấu trúc thuộc loại hình xuyến.

Ngoài ra, MPI còn có các công cụ để tạo cấu trúc liên kết logic (ảo) thuộc bất kỳ loại nào được yêu cầu. Thảo luận chi tiết về khả năng làm việc với cấu trúc liên kết của MPI sẽ được trình bày trong tiểu mục 5.7.

Và cuối cùng hàng cuối cùng Lưu ý trước khi bắt đầu đánh giá MPI:

  • Mô tả chức năng và tất cả các ví dụ về chương trình được cung cấp sẽ được trình bày bằng ngôn ngữ thuật toán C; Đặc điểm của việc sử dụng MPI cho thuật toán ngôn ngữ Fortran sẽ được đưa ra trong khoản 5.8.1,
  • Mô tả ngắn gọn về các triển khai có sẵn Thư viện MPImô tả chung thời gian chạy chương trình MPI sẽ được thảo luận ở khoản 5.8.2,
  • Phần trình bày chính về các khả năng của MPI sẽ tập trung vào tiêu chuẩn phiên bản 1.2 ( MPI-1); thuộc tính bổ sung phiên bản tiêu chuẩn 2.0 sẽ được trình bày tại mục 5.8.3.

Khi bắt đầu nghiên cứu MPI, có thể lưu ý rằng, một mặt, MPI khá phức tạp - tiêu chuẩn MPI cung cấp sự hiện diện của hơn 125 chức năng. Mặt khác, cấu trúc của MPI được tính toán cẩn thận - việc phát triển các chương trình song song có thể bắt đầu sau khi chỉ xem xét 6 chức năng của MPI. Tất cả Tính năng bổ sung MPI có thể được làm chủ khi độ phức tạp của các thuật toán và chương trình được phát triển tăng lên. Cụ thể, theo phong cách này - từ đơn giản đến phức tạp - toàn bộ Tài liệu giáo dục theo MPI.

5.2. Giới thiệu về phát triển chương trình song song sử dụng MPI

5.2.1. Cơ bản về MPI

Chúng tôi trình bày tập hợp các hàm MPI tối thiểu cần thiết, đủ để phát triển các chương trình song song khá đơn giản.

5.2.1.1 Khởi tạo và kết thúc chương trình MPI

Hàm đầu tiên được gọi MPI phải là một hàm:

int MPI_Init (int *agrc, char ***argv);

để khởi tạo môi trường thực thi chương trình MPI. Tham số của hàm là số lượng đối số trong dòng lệnh và văn bản của chính dòng lệnh.

Hàm cuối cùng được gọi MPI phải là một hàm:

int MPI_Finalize(void);

Do đó, có thể lưu ý rằng cấu trúc của một chương trình song song được phát triển bằng MPI phải có dạng sau:

#include "mpi.h" int main (int argc, char *argv) (<программный код без использования MPI функций>MPI_Init(&agrc, &argv);<программный код с использованием MPI функций>MPI_Finalize();<программный код без использования MPI функций>trả về 0; )

Cần lưu ý:

  1. Tài liệu mpi.h chứa các định nghĩa về hằng số được đặt tên, nguyên mẫu hàm và kiểu dữ liệu của thư viện MPI,
  2. Chức năng MPI_InitMPI_Hoàn thiện là bắt buộc và phải được thực thi (và chỉ một lần) bởi mỗi tiến trình của chương trình song song,
  3. Trước cuộc gọi MPI_Init chức năng có thể được sử dụng MPI_Khởi tạođể xác định xem cuộc gọi trước đó đã được thực hiện chưa MPI_Init.

Các ví dụ về hàm được thảo luận ở trên đưa ra ý tưởng về cú pháp đặt tên hàm trong MPI. Tên hàm đứng trước tiền tố MPI, theo sau là một hoặc nhiều từ trong tên, từ đầu tiên trong tên hàm bắt đầu bằng ký tự vốn, các từ được phân tách bằng dấu gạch dưới. Tên của các hàm MPI thường giải thích mục đích của các hành động mà hàm đó thực hiện.

Cần lưu ý:

  • Người giao tiếp MPI_COMM_WORLD, như đã lưu ý trước đó, được tạo theo mặc định và đại diện cho tất cả các tiến trình của chương trình song song đang được thực thi,
  • Xếp hạng thu được bằng cách sử dụng hàm MPI_Comm_rank, là thứ hạng của quá trình thực hiện lệnh gọi hàm này, tức là Biến đổi ProcRank sẽ lấy các giá trị khác nhau trong các tiến trình khác nhau.

Song song hóa trong ngôn ngữ C
Ví dụ 3b. Song song hóa ở Fortran
Ví dụ 4a. Xác định đặc điểm của bộ đếm thời gian hệ thống bằng ngôn ngữ C
Ví dụ 4b. Xác định đặc điểm hẹn giờ của hệ thống trong Fortran

1.4. Gửi và nhận tin nhắn giữa các tiến trình riêng biệt

1.4.1. Hoạt động điểm-điểm

1.4.2. Gửi và nhận tin nhắn bị chặn

Ví dụ 5a. Trao đổi tin nhắn giữa hai tiến trình trong ngôn ngữ C
Ví dụ 5b. Trao đổi tin nhắn giữa hai tiến trình trong Fortran
Ví dụ 6a. Trao đổi thông điệp giữa các tiến trình chẵn và lẻ trong C
Ví dụ 6b. Trao đổi tin nhắn giữa các tiến trình chẵn và lẻ trong Fortran
Ví dụ 7a. Chuyển tiếp tới một quy trình không tồn tại trong C
Ví dụ 7b. Chuyển tiếp tới một quy trình không tồn tại ở Fortran
Ví dụ 8a. Gửi dữ liệu vào bộ đệm bằng ngôn ngữ C
Ví dụ 8b. Gửi dữ liệu vào bộ đệm bằng ngôn ngữ Fortran
Ví dụ 9a. Lấy thông tin về thuộc tính tin nhắn trong ngôn ngữ C
Ví dụ 9b. Lấy thông tin về thuộc tính tin nhắn trong Fortran
Ví dụ 10a. Định nghĩa độ trễ và băng thông bằng ngôn ngữ C
Ví dụ 10b. Xác định độ trễ và thông lượng trong Fortran

1.4.3. Gửi và nhận tin nhắn mà không bị chặn

Ví dụ 11a. Trao đổi bằng cấu trúc liên kết vòng sử dụng các thao tác không chặn trong ngôn ngữ C
Ví dụ 11b. Trao đổi cấu trúc liên kết vòng bằng cách sử dụng các hoạt động không chặn trong Fortran
Ví dụ 12a. Sơ đồ giao tiếp "master - Workers" bằng ngôn ngữ C
Ví dụ 12b. Sơ đồ giao tiếp “master – Workers” bằng ngôn ngữ Fortran
Ví dụ 13a. Chuyển vị ma trận trong ngôn ngữ C
Ví dụ 13b. Chuyển đổi ma trận ở Fortran

1.4.4. Yêu cầu tương tác đang chờ xử lý

Ví dụ 14a. Sơ đồ của một phương pháp lặp với trao đổi dọc theo cấu trúc liên kết vòng bằng cách sử dụng các truy vấn trì hoãn trong ngôn ngữ C
Ví dụ 14b. Sơ đồ phương pháp lặp với trao đổi qua cấu trúc liên kết vòng bằng cách sử dụng các truy vấn trì hoãn trong Fortran

1.4.5. Tình huống bế tắc

Ví dụ 15a. Trao đổi cấu trúc liên kết vòng bằng thủ tục MPI_Sendrecv trong ngôn ngữ C
Ví dụ 15b. Trao đổi cấu trúc liên kết vòng bằng thủ tục MPI_SENDRECV trong Fortran

1.5. Tương tác quá trình tập thể

1.5.1. Các quy định chung

1.5.2. Rào chắn

Ví dụ 16a. Mô hình hóa đồng bộ hóa rào cản trong ngôn ngữ C
Ví dụ 16b. Mô hình đồng bộ hóa rào cản ở Fortran

1.5.3. Hoạt động truyền dữ liệu tập thể

1.5.4. Hoạt động toàn cầu

Ví dụ 17a. Mô hình hóa tổng toàn cục bằng sơ đồ nhân đôi và phép toán tập thể MPI_Reduce trong ngôn ngữ C
Ví dụ 17b. Mô hình hóa tổng toàn cục bằng sơ đồ nhân đôi và phép toán chung MPI_Reduce ở Fortran

1.5.5. Hoạt động toàn cầu tùy chỉnh

Ví dụ 18a. Hàm toàn cầu tùy chỉnh trong ngôn ngữ C
Ví dụ 18b. Chức năng toàn cầu tùy chỉnh trong Fortran

1.6. Nhóm và người giao tiếp

1.6.1. Các quy định chung

1.6.2. Hoạt động với các nhóm quy trình

Ví dụ 19a. Làm việc với nhóm bằng ngôn ngữ C
Ví dụ 19b. Làm việc với các nhóm ở Fortran

1.6.3. Hoạt động với người giao tiếp

Ví dụ 20a. Phá vỡ một bộ giao tiếp trong C
Ví dụ 20b. Phân vùng một người giao tiếp ở Fortran
Ví dụ 21a. Đánh số lại các tiến trình trong ngôn ngữ C
Ví dụ 21b. Đánh số lại các quy trình ở Fortran

1.6.4. Máy liên lạc

Ví dụ 22a. Sơ đồ thợ chính sử dụng bộ liên lạc bằng ngôn ngữ C
Ví dụ 22b. Mạch Master-worker sử dụng bộ liên lạc ở Fortran

1.6.5. Thuộc tính

1.7. Cấu trúc liên kết ảo

1.7.1. Các quy định chung

1.7.2. Cấu trúc liên kết Descartes

1.7.3. Cấu trúc liên kết đồ thị

Ví dụ 23a. Sơ đồ master-worker sử dụng cấu trúc liên kết đồ thị trong ngôn ngữ C
Ví dụ 23b. Sơ đồ công nhân bậc thầy sử dụng cấu trúc liên kết đồ thị ở Fortran

1.8. Gửi các loại dữ liệu khác nhau

1.8.1. Các quy định chung

1.8.2. Các kiểu dữ liệu dẫn xuất

Ví dụ 24a. Sắp xếp lại các cột ma trận thành thứ tự ngược lại bằng ngôn ngữ C
Ví dụ 24b. Sắp xếp lại các cột ma trận theo thứ tự ngược lại trong Fortran

1.8.3. Đóng gói dữ liệu

Ví dụ 25a. Gửi dữ liệu đóng gói bằng ngôn ngữ C
Ví dụ 25b. Gửi dữ liệu đóng gói ở Fortran

1.9. đối tượng thông tin

1.9.1. Các quy định chung

1.9.2. Làm việc với đối tượng thông tin

1.10. Kiểm soát quy trình động

1.10.1. Các quy định chung

1.10.2.Tạo các tiến trình

master.c
nô lệ.c
Ví dụ 26a. Sơ đồ thợ chính sử dụng quy trình sinh sản bằng ngôn ngữ C
chủ.f
nô lệ.f
Ví dụ 26b. Sơ đồ công nhân bậc thầy sử dụng quy trình sinh sản ở Fortran

1.10.3. Giao tiếp máy khách-máy chủ

máy chủ.c
khách hàng.c
Ví dụ 27a. Trao đổi dữ liệu giữa máy chủ và máy khách bằng tên công khai bằng ngôn ngữ C
máy chủ.f
khách hàng.f
Ví dụ 27b. Trao đổi dữ liệu giữa máy chủ và máy khách bằng tên công khai bằng ngôn ngữ Fortran

1.10.4. Xóa liên kết quy trình

1.10.5. Ổ cắm truyền thông

1.11. Truyền thông một chiều

1.11.1. Các quy định chung

1.11.2. Làm việc với một cửa sổ

1.11.3. Truyền dữ liệu

1.11.4. Đồng bộ hóa

Ví dụ 28a
Ví dụ 28b
Ví dụ 29a. Trao đổi qua cấu trúc liên kết vòng bằng cách sử dụng liên lạc một chiều trong C
Ví dụ 29b. Trao đổi qua cấu trúc liên kết vòng bằng cách sử dụng liên lạc một chiều ở Fortran
Ví dụ 30a. Trao đổi qua cấu trúc liên kết vòng bằng cách sử dụng liên lạc một chiều trong C
Ví dụ 30b. Trao đổi qua cấu trúc liên kết vòng bằng cách sử dụng liên lạc một chiều ở Fortran

1.12. Giao diện bên ngoài

1.12.1. Truy vấn chung

1.12.2. Thông tin từ trạng thái

1.12.3. chủ đề

1.13. I/O song song

1.13.1. Các định nghĩa

1.13.2. Làm việc với tập tin

1.13.3. Truy cập dữ liệu

Ví dụ 31a. Đọc vào bộ đệm từ một tệp bằng ngôn ngữ C
Ví dụ 31b. Đọc vào bộ đệm từ một tệp ở Fortran
Ví dụ 32a. Đọc tập thể từ một tệp bằng ngôn ngữ C
Ví dụ 32b. Đọc tập thể từ một tập tin ở Fortran

1.14. Xử lý lỗi

1.14.1. Các quy định chung

1.14.2. Trình xử lý lỗi liên quan đến người giao tiếp

1.14.3. Trình xử lý lỗi liên quan đến cửa sổ

1.14.4. Trình xử lý lỗi liên quan đến tệp

1.14.5. Thủ tục bổ sung

1.14.6. Mã lỗi và lớp

1.14.7. Gọi trình xử lý lỗi

Ví dụ 33a. Xử lý lỗi trong ngôn ngữ C
Ví dụ 33b. Xử lý lỗi trong Fortran

Chương 2 Công nghệ lập trình song song OpenMP

2.1. Giới thiệu

2.2. Các khái niệm cơ bản

2.2.1. Biên dịch một chương trình

Ví dụ 34a. Biên dịch có điều kiện trong C
Ví dụ 34b
Ví dụ 34c. Biên dịch có điều kiện ở Fortran

2.2.2. Mô hình chương trình song song

2.2.3. Chỉ thị và thủ tục

2.2.4. Thực hiện chương trình

2.2.5. Thời gian

Ví dụ 35a. Làm việc với bộ tính giờ hệ thống trong C
Ví dụ 35b. Làm việc với bộ tính giờ hệ thống ở Fortran

2.3. Vùng song song và nối tiếp

2.3.1. chỉ thị song song

Ví dụ 36a. Vùng song song trong ngôn ngữ C
Ví dụ 36b. Vùng song song ở Fortran
Ví dụ 37a. Tùy chọn rút gọn trong ngôn ngữ C
Ví dụ 37b. Tùy chọn giảm ở Fortran

2.3.2. Ký hiệu viết tắt

2.3.3. Biến môi trường và thủ tục trợ giúp

Ví dụ 38a. Thủ tục Omp_set_num_threads và tùy chọn num_threads trong ngôn ngữ C
Ví dụ 38b. Quy trình omp_set_num_threads và tùy chọn num_threads trong ngôn ngữ Fortran
Ví dụ 39a. Thủ tục omp_set_dynamic và omp_get_dynamic trong ngôn ngữ C
Ví dụ 39b. Thủ tục omp_set_dynamic và omp_get_dynamic trong Fortran
Ví dụ 40a. Các vùng song song lồng nhau trong C
Ví dụ 40b. Các vùng song song lồng nhau ở Fortran
Ví dụ 41a. Hàm Omp_in_parallel trong ngôn ngữ C
Ví dụ 41b. Hàm omp_in_parallel trong ngôn ngữ Fortran

2.3.4. chỉ thị duy nhất

Ví dụ 42a. Tùy chọn chỉ thị duy nhất và hiện tại trong ngôn ngữ C
Ví dụ 42b. Tùy chọn chỉ thị duy nhất và hiện tại ở Fortran
Ví dụ 43a. Tùy chọn copyprivate trong ngôn ngữ C
Ví dụ 43b. tùy chọn copyprivate ở Fortran

2.3.5. chỉ thị chính

Ví dụ 44a. Chỉ thị chính trong ngôn ngữ C
Ví dụ 44b. chỉ thị tổng thể ở Fortran

2.4. Mô hình dữ liệu

Ví dụ 45a. Tùy chọn riêng tư trong ngôn ngữ C
Ví dụ 45b. Tùy chọn riêng tư ở Fortran
Ví dụ 46a. Tùy chọn chia sẻ trong ngôn ngữ C
Ví dụ 46b. Tùy chọn chia sẻ ở Fortran
Ví dụ 47a. tùy chọn riêng tư đầu tiên trong ngôn ngữ C
Ví dụ 47b. tùy chọn riêng tư đầu tiên ở Fortran
Ví dụ 48a. chỉ thị threadprivate trong ngôn ngữ C
Ví dụ 48b. chỉ thị threadprivate ở Fortran
Ví dụ 49a. Tùy chọn Copyin trong ngôn ngữ C
Ví dụ 49b. tùy chọn sao chép ở Fortran

2.5. Phân phối công việc

2.5.1. Song song hóa cấp thấp

Ví dụ 50a. Thủ tục omp_get_num_threads và omp_get_thread_num trong ngôn ngữ C
Ví dụ 50b. Thủ tục omp_get_num_threads và omp_get_thread_num trong Fortran

2.5.2. Vòng lặp song song

Ví dụ 51a. cho lệnh trong ngôn ngữ C
Ví dụ 51b. Lệnh do ở Fortran
Ví dụ 52a. Tùy chọn lịch trình trong ngôn ngữ C
Ví dụ 52b. tùy chọn lịch trình ở Fortran
Ví dụ 53a. Tùy chọn lịch trình trong ngôn ngữ C

Lưu ý này hướng dẫn cách cài đặt MPI, kết nối nó với Visual Studio và sau đó sử dụng với tham số đã cho(số lượng nút tính toán). Bài viết này sử dụng Visual Studio 2015, vì... Đây là phiên bản mà học sinh của tôi gặp vấn đề (ghi chú này được học sinh viết cho học sinh), nhưng hướng dẫn có thể cũng áp dụng được cho các phiên bản khác.

Bước 1:
Bạn phải cài đặt HPC Pack 2008 SDK SP2 (trong trường hợp của bạn có thể đã có phiên bản khác), có sẵn trên trang web chính thức của Microsoft. Dung lượng bit của gói và hệ thống phải phù hợp.

Bước 2:
Bạn cần định cấu hình các đường dẫn; để thực hiện việc này, hãy chuyển đến tab Gỡ lỗi - Thuộc tính:

“C:\Program Files\Microsoft HPC Pack 2008 SDK\Include”

Trong trường Thư mục Thư viện:

“C:\Tệp chương trình\Microsoft HPC Pack 2008 SDK\Lib\amd64”

Trong lĩnh vực có thư viện, nếu có giá 32 phiên bản bit, thay vì AMD64 bạn cần đăng ký i386.

Msmpi.lib

:

Bước 3:

Để định cấu hình khởi chạy, bạn cần chuyển đến tab Gỡ lỗi và trong trường Lệnh, chỉ định:

“C:\Tệp chương trình\Microsoft HPC Pack 2008 SDK\Bin\mpiexec.exe"

Trong trường Đối số lệnh, hãy chỉ định, ví dụ:

N 4 $(Đường dẫn đích)

Số 4 chỉ số lượng tiến trình.

Để chạy chương trình bạn cần kết nối thư viện

Đường dẫn đến dự án không được chứa chữ Cyrillic. Nếu xảy ra lỗi, bạn có thể sử dụng Microsoft MPI, có sẵn trên trang web của Microsoft.

Để thực hiện việc này, sau khi cài đặt, chỉ cần nhập đường dẫn vào trường Lệnh của tab Gỡ lỗi:

“C:\Tệp chương trình\Microsoft MPI\Bin\mpiexec.exe”

Ngoài ra, trước khi chạy chương trình, đừng quên chỉ ra độ sâu bit của nó:

Ví dụ về chạy chương trình với MPI:

#bao gồm #bao gồm sử dụng không gian tên std; int main(int argc, char **argv) ( int xếp hạng, kích thước; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); cout<< "The number of processes: " << size << " my number is " << rank << endl; MPI_Finalize(); return 0; }

Chạy chương trình trên 2 nút: