1. Trang chủ
  2. » Công Nghệ Thông Tin

Tối ưu hóa truyền thông trong chương trình song song

57 175 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 57
Dung lượng 684,31 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong một chương trình song song SPMD Single Program Multiple Data hay còn gọi là mô hình lập trình song song Domain decomposition Phân chia miền tính toán, miền tính toán của bài toán d

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Trang 2

Luận văn thạc sĩ này do tôi nghiên cứu và thực hiện dưới sự hướng dẫn của

thầy giáo TS Vũ Văn Thiệu Để hoàn thành bản luận văn này, ngoài các tài liệu

thảm khảo đã liệt kê, tôi cam đoan không sao chép toàn văn các công trình hoặc thiết

kế tốt nghiệp của người khác

Tác giả luận văn

Nguyễn Thị Tố Loan

Trang 3

DANH MỤC CÁC CHỮ VIẾT TẮT 5

DANH MỤC CÁC HÌNH VẼ 6

DANH MỤC CÁC BẢNG 7

Mở đầu 1

Chương 1: Mô hình tính toán song song sử dụng thư viện MPI 3

1.1 Các mô hình tính toán song song 3

1.1.1 Mô hình Master/Slave 3

1.1.2 Mô hình Data pipelining 4

1.1.3 Mô hình Divide and conquer 4

1.1.4 Mô hình SPMD 4

1.2 Giới thiệu thư viện lập trình song song MPI 6

1.2.1 Giới thiệu 6

1.2.2 MPI tiêu chuẩn 6

1.2.3 Khái niệm cơ bản của MPI 7

1.3 Các Phương thức truyền thông trong MPI 15

1.3.1 Phương thức truyền thông blocking MPI 16

1.3.2 Phương thức truyền thông unblocking MPI 16

1.3.3 So sánh 2 phương thức truyền thông Blocking và Unblocking 17

Chương 2: Bài toán phương trình nước nông 18

2.1 Giới thiệu bài toán Shallow-Water Equations 18

2.2 Phương pháp số giải bài toán Shallow-Water Equations 19

2.2.1 Phương pháp rời rạc hóa theo không gian 19

2.2.2 Điều kiện biên 21

2.2.3 Phương pháp tích hợp theo thời gian 22

2.3 Cài đặt chương trình 23

Trang 4

2.3.3 Khởi tạo giá trị ban đầu 26

2.3.4 Chương trình chính 27

Chương 3 : Thiết kế giải thuật truyền thông tối ưu trong chương trình song song 28

3.1 Ý tưởng xây dựng giải thuật truyền thông tối ưu 28

3.2 Cài đặt chương trình song song thông thường 29

3.2.1 Giải thuật chia miền tính toán 30

3.2.2 Giải thuật Phân tán dữ liệu đầu vào tới tất cả các Processor 31

3.2.3.Tính toán 32

3.2.4 Tập hợp kết quả từ các Processor về Root 35

3.2.5 Cấu trúc hàm main của chương trình song song thông thường 35

3.3 Giải thuật truyền thông trong chương trình song song tối ưu 36

Chương 4 : Chạy thử nghiệm chương trình và đánh giá kết quả 44

4.1 Các nền tảng tính toán song song 44

4.2 Thử nghiệm và phân tích kết quả 45

4.2.1 Kiểm tra tính chính xác của chương trình: 45

4.2.2 Đánh giá hiệu quả của C so với MPI 45

4.2.3 Đánh giá hiệu quả của MPI trên nhiều nhân 46

4.2.4 Đánh giá hiệu quả của thuật toán truyền thông tối ưu 46

Kết luận 47

Trang 5

STT Viết tắt Tiếng Anh Tiếng Việt

1 CPU Center Processor Unit Bộ xử lý trung tâm

2 SPMD Single Program Multiple Data Mô hình lập trình song song SPMD

5 MPI Message Passing Interface Giao tiếp truyền dữ liệu

4 PDEs Partial Diffirential Equations Hệ phương trình đạo hàm riêng

5 SD Spatial discretization Rời rạc hóa không gian

6 TI Time integration Tích hợp theo thời gian

Trang 6

STT Hình Tên hình Trang

4 Hình 4 Phương thức truyền thông Blocking MPI 16

5 Hình 5 Phương thức truyền thông Unblocking MPI 16

6 Hình 6 Cách chia miền tính toán tại một điểm lưới 20

7 Hình 7a Điều kiện biên tuần hoàn theo chiều x 22

8 Hình 7b Điều kiện biên tuần hoàn theo chiều y 22

11 Hình 10 Cách chia miền tính toán thành các Subdomain 30

14 Hình 13 Truyền thông Blocking MPI và Unblocking MPI 37

Trang 7

STT Bảng Tên bảng Trang

4 Bảng 4 Thông số cơ bản của máy tính chạy thử nghiệm 44

5 Bảng 5 Kết quả thời gian chạy trong C và MPI thông thường 45

6 Bảng 6 Kết quả thời gian chạy trong MPI thông thường 46

7 Bảng 7 Kết quả thời gian chạy trong MPI thông thường và MPI

Trang 8

Ngày nay, môi trường bị ô nhiễm nặng nề, khí hậu thay đổi không lường Những năm gần đây thế giới đã và đang chịu ảnh hưởng của sóng thần, lũ lụt Vẫn còn đó những đau thương do sóng thần và lũ lụt gây ra Việt nam có gần 7000 hồ chứa lớn, nhỏ đã và đang được xây dựng nên an toàn đập đang trở thành một vấn đề cấp thiết trong quản lý nguồn nước

Tuy nhiên, việc triển khai ứng dụng còn gặp nhiều khó khăn như khó cài đặt chương trình, số CPU cho một máy tính để chạy chương trình có hạn Nhưng em hy vọng với nghiên cứu này sẽ góp phần tính toán các thông số thủy lực của dòng chảy lũ như: mực nước, vận tốc,… tương ứng với các kịch bản vỡ đập để từ đó đưa ra các cảnh báo sớm cũng như đánh giá rủi ro và phương án đề phòng

Em xin chân thành cảm ơn thầy giáo TS Vũ Văn Thiệu đã nhiệt tình giúp đỡ để em hoàn thành đề tài này

Hà nội, tháng 4 năm 2015

Học viên

Nguyễn Thị Tố Loan

Trang 9

Học viên: Nguyễn Thị Tố Loan 1 Luận văn thạc sĩ

Mở đầu

Rất nhiều bài toán trong khoa học cũng như trong kỹ thuật có khối lượng tính toán rất lớn Ví dụ như bài toán dự báo thời tiết, bài toán nhận dạng vân tay, bài toán mô phỏng động lực học chất lỏng, Trong dự báo thời tiết, để dự báo cho ngày kế tiếp cần thực hiện khoảng một triệu tỷ (1015) phép toán Khi muốn kéo dài thời gian dự báo hoặc tăng độ chính xác của bản tin dự báo thì khối lượng tính toán tăng theo cấp số nhân Các bài toán có khối lượng tính toán lớn như kể trên gọi là các bài toán tính toán hiệu năng cao

Trước đây các bài toán tính hiệu năng cao chủ yếu được thực hiện song song trên các hệ thống siêu máy tính Trong những năm gần đây, các nền tảng cho phép thực hiện các chương trình song song trở nên đa dạng hơn Ngoài các siêu máy tính còn có các hệ thống khác như Cluster, Grid, Cloud, GPGPU, hay các máy tính cá nhân sử dụng chip đa lõi

Trong rất nhiều bài toán tính toán hiệu năng cao, ví dụ như bài toán dự báo thời tiết và bài toán phương trình nước nông, để tính toán tại một điểm lưới yêu cầu thông tin (hay dữ liệu) tại các điểm lưới khác Chúng tôi gọi những bài toán như vậy là bài toán có sự phụ thuộc dữ liệu trong tính toán

Trên hệ thống máy tính song song có bộ nhớ phân tán, mỗi CPU có một bộ nhớ riêng CPU này không thể truy cập dữ liệu trên bộ nhớ của CPU khác

Trong một chương trình song song SPMD (Single Program Multiple Data) hay còn gọi là mô hình lập trình song song Domain decomposition (Phân chia miền tính toán), miền tính toán của bài toán (domain) được chia thành các miền con (subdomain) Mỗi miền con được gán cho một CPU Do các CPU không thể truy cập bộ nhớ của nhau, nếu có sự phụ thuộc trong tính toán thì cần phải truyền thông giữa các CPU Cụ thể hơn, nếu việc tính toán trên CPU A cần dữ liệu lưu trữ trong

Trang 10

Học viên: Nguyễn Thị Tố Loan 2 Luận văn thạc sĩ

bộ nhớ riêng của CPU B, CPU B sẽ gửi và CPU A sẽ nhận dữ liệu này Quá trình

đó gọi là truyền thông

Việc cần phải truyền thông làm tăng thời gian thực hiện của chương trình song song Nếu dữ liệu truyền thông lớn hoặc tốc độ của mạng kết nối giữa các CPU nhỏ, thời gian truyền thông sẽ rất lớn, làm giảm hiệu quả của chương trình song song Trong khi đó, trong lúc truyền thông, các bộ vi xử lý hoạt động ở chế độ chờ, làm giảm hiệu suất của viêc tận dụng hệ thống Vì vậy, việc đưa ra một phương pháp truyền thông tối ưu để giảm thời gian truyền thông trở nên rất quan trọng trong tính toán song song Tuy nhiên, cho đến nay có ít nghiên cứu đề cập đến vấn

đề này

Luận văn này sẽ nghiên cứu xây dựng thuật toán để tối ưu hóa việc truyền dữ liệu trong chương trình tính toán song song dựa trên ý tưởng chồng chéo giứa tính toán với truyền thông: trong khi truyền dữ liệu, thực hiện phần tính toán mà dữ liệu vào ra không phụ thuộc vào dữ liệu đang được truyền thông Sau đó chúng tôi sẽ

áp dụng thử nghiệm thuật toán này vào bài toán phương trình nước nông

Luận văn bao gồm các chương chính sau:

Chương 1: Tìm hiểu các mô hình tính toán song song và thư viện lập trình

song song MPI, tìm hiểu các phương thức truyền thông trong MPI

Chương 2: Tìm hiểu bài toán Shallow-Water Equations (Phương trình nước

nông), xây dựng phương pháp số giải bài toán Shallow-Water Equations, cài đặt chương trình

Chương 3: Thiết kế giải thuật truyền thông tối ưu trong chương trình song

song

Chương 4: Chạy thử nghiệm chương trình song song trên các hệ thống như

cluster, siêu máy tính, phân tích kết quả, đánh giá hiệu quả của thuật toán truyền thông

Trang 11

Học viên: Nguyễn Thị Tố Loan 3 Luận văn thạc sĩ

Chương 1: Mô hình tính toán song song sử dụng thư viện MPI

1.1 Các mô hình tính toán song song

Hiện có rất nhiều mô hình lập trình song song Tuy nhiên, các mô hình sau đây hay được sử dụng nhất:

 Master/Slave

 Single Program Multiple Data (SPMD)

 Data pipelining

 Divide and conquer

Các mô hình tính toán song song được trình bày chi tiết trong [5,6,7] Trong phần sau tôi sẽ trình bày tóm tắt các mô hình tính toán song song trên

1.1.1 Mô hình Master/Slave

Mô hình Master/ Slave bao bồm: một tiến trình Master và nhiều tiến trình Slave Tiến trình tổng thể Master chia bài toán thành các nhiệm vụ nhỏ cho các tiến trình Slave xử lý Sau đó thu thập và kết hợp các kết quả từ các tiến trình Slave Mỗi tiến trình Slave nhận một nhiệm vụ từ tiến trình master, thực hiện nhiệm vụ đó

và gửi kết quả về tiến trình Master Việc truyền thông chỉ cần thiết giữa các tiến trình Master và Slave

Mô hình Master/Slave này phù hợp cho các ứng dụng là một thuật toán tuần tự

có thể được thực hiện đồng thời và độc lập trên các tiến trình khác nhau với dữ liệu đầu vào và dữ liệu đầu ra khác nhau Mô hình này cũng có thể thực hiện với nhiều chương trình khác nhau sử dụng cùng một dữ liệu đầu vào

Trang 12

Học viên: Nguyễn Thị Tố Loan 4 Luận văn thạc sĩ

1.1.2 Mô hình Data pipelining

Trong mô hình Data Pipelining, một nhóm các tiến trình hình thành nên một pipeline ảo Mỗi luồng dữ liệu liên tục được đưa vào các pipeline, các tiến trình thực hiện tại các công đoạn khác nhau của pipeline theo mô hình đồng thời một cách chồng chéo Mô hình này thường được áp dụng trong các ứng dụng giảm dữ liệu và xử lý ảnh

1.1.3 Mô hình Divide and conquer

Mô hình chia để trị: Một bài toán được chia thành nhiều bài toán con Các bài toán con được giải quyết một cách độc lập và tổng hợp kết quả cho kết quả cuối cùng Khác với mô hình Master / Slave giao tiếp giữa tiến trình tổng thể và tiến trình con là cần thiết Mô hình chia để trị không đòi hỏi sự thông tin liên lạc nào giữa các tiến trình vì các bài toán trong mô hình này là độc lập

1.1.4 Mô hình SPMD

Trong mô hình SPMD, miền tính toán của bài toán (Domain) được chia thành các miền con (Subdomain), các miền con được tính toán bởi cùng một chương trình trên các bộ xử lý (Process) khác nhau Mô hình lập trình song song SPMD được mô tả như trong Hình 1

Trang 13

Học viên: Nguyễn Thị Tố Loan 5 Luận văn thạc sĩ

Hình 1: Mô hình lập trình song song SPMD

Một chương trình song song sử dụng mô hình SPMD bao gồm các bước chính sau:

 Phân chia miền tính toán (Domain decomposition)

 Phân tán dữ liệu đầu vào (Data distribution)

 Truyền thông dữ liệu (Communication)

 Tính toán (Computation)

 Tập hợp dữ liệu đầu ra (Result collection)

Việc lựa chọn mô hình lập trình song song dựa trên kiến trúc hệ thống tính toán song song cũng như kiểu dữ liệu và tính toán của bài toán Trong các mô hình trên, mô hình SPMD là phổ biến nhất do phù hợp với các hệ thống tính toán có bộ nhớ phân tán và các bài toán có dữ liệu phân tán Do đó trong luận văn này tôi sẽ chọn SPMD làm mô hình tính toán song song

Trang 14

Học viên: Nguyễn Thị Tố Loan 6 Luận văn thạc sĩ

1.2 Giới thiệu thƣ viện lập trình song song MPI

Thư viện lập trình song song MPI được trình bày chi tiết trong [4,5,7] Trong phần sau tôi sẽ giới thiệu sơ lược một số nội dung liên quan đến Luận văn này

1.2.1 Giới thiệu

MPI là viết tắt của các chữ Message Passing Interface MPI là bộ thư viện hỗ trợ việc lập trình song song với các ngôn ngữ như C, Fortran, Tập MPI thi hành bao gồm một thư viện các thủ tục sao cho có thể gọi được từ các chương trình Fortran, C, C++ hay Ada Lợi thế của MPI so với các thư viện cũ là nó vừa thuận tiện (vì MPI thực thi cho hầu hết các kiến trúc bộ nhớ phân tán) vừa nhanh (vì mỗi thủ tục được tối ưu hóa cho phần cứng mà nó đang chạy)

1.2.2 MPI tiêu chuẩn

MPI tiêu chuẩn hỗ trợ cho nhiều ngôn ngữ lập trình như C, C++, Fortran, chạy trên nhiều nền tảng phần cứng khác nhau Điều nay đem lại nhiều lời ích, bao gồm:

- Giảm thời gian viết chương trình;

- Cho phép phát triển một ứng dụng (ví dụ, chạy trên một mạng lưới các máy trạm làm việc) có thể chạy hiệu quả trên nhiều hệ thống khác nhau (ví dụ như chạy trên các hệ thống song song chuyên biệt)

Mục tiêu chính của các đặc điểm này của MPI là để cho phép người dùng không không cần phải băn khoăn về hiệu quả, tính năng linh hoạt, và chức năng của chương trình Điều này có nghĩa rằng người ta có thể viết các chương trình chạy linh hoạt trên nhiều hệ thống mà vẫn có thể tận dụng lợi thế của các phần cứng chuyên dụng và phần mềm được cung cấp bởi các nhà cung cấp cá nhân Đồng thời, các tính năng tiên tiến, chẳng hạn như tập rộng lớn của các hoạt động tập thể, có thể được dự kiến trong mỗi MPI và có thể được sử dụng trong tất cả các chương trình ứng dụng song

Trang 15

Học viên: Nguyễn Thị Tố Loan 7 Luận văn thạc sĩ

MPI không phải là một cuộc cách mạng mới của máy tính lập trình song song, đúng hơn, nó là một nỗ lực để thu thập các tính năng tốt nhất của nhiều hệ thống đi qua hiện có, cải thiện chúng ở nơi thích hợp, và chuẩn hóa chúng

1.2.3 Khái niệm cơ bản của MPI

Các khái niệm cơ bản của các MPI tiêu chuẩn là tiến trình và các truyền thông Trong khi truyền thông kiểu điểm – điểm (point-to point) và kiểu tập hợp (Collective)

là trung tâm của MPI, nhóm tiến trình, gói dữ liệu, các kiểu dữ liệu, và topo ảo là những khái niệm quan trọng khác của MPI tiêu chuẩn

1.2.3.1 Gói dữ liệu và các tiến trình

Một tiến trình MPI là một thực thể tham gia vào thực hiện một số nhiệm vụ tính toán Trong mô hình lập trình cơ bản MPI, mỗi tiến trình được liên kết với một bộ nhớ duy nhất, được gọi là bộ nhớ cục bộ của nó, mà nó chỉ có thể truy cập và cập nhật trực tiếp Một gói dữ liệu bao gồm một phần nội dung thông tin, cùng với một số dữ liệu

bổ sung được gọi là một nhãn Nhãn của một gói tin chỉ rõ để người nhận tiến trình có thể đọc nội dung thông tin của các tin nhắn vào bộ nhớ địa phương của mình Nhãn chứa thêm thông tin có thể được sử dụng bởi các tiến trình nhận để quyết định hay không và khi mở các tin nhắn cũng như làm thế nào để truy cập dữ liệu trong một tin nhắn nó đã được nhận

Việc trao đổi thông điệp giữa các tiến trình được gọi là truyền thông tin và là phương tiện duy nhất mà các tiến trình MPI có thể truy cập dữ liệu trong bộ nhớ cục bộ của nhau hay đồng bộ với nhau Truyền thông trong MPI được thực hiện bởi các hàm (C hoặc Fortran) xây dựng sẵn trong MPI [4]

1.2.3.1.1 Nhóm tiến trình

Một nhóm tiến trình trong MPI là một tập hợp các tiến trình mà các thành viên đều được đánh số liên tiếp bắt đầu từ 0 Các số liên quan đến một tiến trình

Trang 16

Học viên: Nguyễn Thị Tố Loan 8 Luận văn thạc sĩ

trong một nhóm được gọi là thứ hạng (Rank) của nó trong nhóm Nhóm được thành lập trên cơ sở nhiệm vụ để thực hiện; đó là, một nhóm tiến trình MPI thường cùng thực hiện một nhiệm vụ chung Một tiến trình có thể thuộc về bất

kỳ số lượng nào của các nhóm Nhóm MPI được cho là tĩnh bởi vì tất cả họ đều xuất phát từ các nhóm ban đầu và không có tiến trình mới có thể được tạo ra trong tiến trình thực hiện chương trình Ngoài hạn chế này, MPI cung cấp một

loạt các thiết bị quản lý nhóm tiến trình

1.2.3.1.2 Phương thức truyền thông

Một tiến trình MPI đơn có thể lựa chọn có hoặc không có thông báo, tùy thuộc vào nhãn của thông báo đó Nhận được tin nhắn làm thay đổi bộ nhớ cục bộ của tiến trình và là một hoạt động không thể đảo ngược Một lỗi phổ biến trong lập trình MPI là một tiến trình nhận được một tin nhắn gửi bởi tiến trình sai hoặc một tin nhắn gửi bởi đúng tiến trình nhưng dự định cho một giai đoạn khác của tính toán Vấn đề này đặc biệt liên quan khi các nhiệm vụ được giao cho một tiến trình liên quan đến các cuộc gọi đến một thủ tục thư viện song song Vấn đề ở đây là giao tiếp trực tiếp khởi xướng bởi người sử dụng và thông tin liên lạc được tiến hành trong các cuộc gọi đến một thủ tục thư viện thuộc các ngữ cảnh khác nhau

1.2.3.1.3 Topo ảo

Cách sắp xếp vật lý của các CPU không phải lúc nào cũng phù hợp một cách tự nhiên với các mô hình bài toán Ví dụ các CPU được sắp xếp trong không gian 2 chiều nhưng bài toán lại là không gian 3 chiều Hoặc CPU được xếp theo hàng nhưng mô hình bài toán được xếp theo mô hình vòng tròn Trong những trường hợp này ta dùng Topo ảo

Trang 17

Học viên: Nguyễn Thị Tố Loan 9 Luận văn thạc sĩ

1.2.3.1.4 Comminicator

Comminicator trong MPI gắn với các khái niệm của nhóm tiến trình, bối cảnh giao tiếp, và topology ảo Một giao tiếp luôn gắn liền với một nhóm tiến trình, một bối cảnh giao tiếp và một topology ảo Nhóm và Comminicator là các đối tượng đục, họ chỉ có thể được thông qua như là đối số cho hàm MPI và có thể xuất hiện trong các biểu thức Boolean Tất cả thông tin liên lạc trong MPI liên quan đến ít nhất một người giao tiếp Tất cả các tiến trình liên quan đến một thông tin phải cung cấp các comminicator giống như một đối số trong các MPI cuộc gọi thủ tục tương ứng

1.2.3.2 Kiểu dữ liệu MPI

Hệ thống kiểu dữ liệu trong ngôn ngữ lập trình, như C và Fortran, cho trình biên dịch như thế nào để giải thích dữ liệu và có thể như thế nào dữ liệu sẽ được đặt ra trong bộ nhớ chính Đó là thông tin rất quan trọng để MPI định nghĩa một kiểu hệ thống tin nhắn trên đầu trang của các hệ thống kiểu dữ liệu của C và các ngôn ngữ Fortran Các kiểu dữ liệu MPI đơn giản chủ yếu là sự kết hợp của các kiểu dữ liệu nguyên bản của C và Fortran cộng với một tiền tố MPI ở trước

MPI cung cấp thủ tục MPI để xác định kiểu dữ liệu MPI có nguồn gốc Một dữ liệu MPI thu được quy định cụ thể các định dạng của một chuỗi các giá trị và bao gồm:

số lượng các thành phần trong chuỗi, các kiểu dữ liệu MPI của mỗi phần tử và khoảng cách trong byte giữa các yếu tố của chuỗi

Trang 18

Học viên: Nguyễn Thị Tố Loan 10 Luận văn thạc sĩ

Thủ tục truyền thông MPI được gọi là không khóa (Unblocking MPI) nếu cuộc gọi đến nó trở lại ngay lập tức khi việc truyền và nhận dữ liệu kết thúc Unblocking MPI bổ sung các thủ tục kiểm tra hoặc chờ cho phép tái sử dụng các nguồn lực xác định trong cuộc gọi của họ

1.2.3.3.1 Truyền thông Point-to-point

Truyền thông Point-to-point chỉ liên quan đến hai tiến trình: một tiến trình gửi một tin nhắn và một tiến trình tiếp nhận thông điệp đó Mọi thủ tục truyền thông MPI Point-to-point có một phiên bản đồng bộ và một phiên bản không đồng bộ

Mỗi MPI gửi thủ tục hoạt động trong một trong bốn chế độ: đồng bộ, đệm, tiêu chuẩn và sẵn sàng Các chế độ truyền thông xác định thời gian hoàn thành các hoạt động gửi và khi có cuộc gọi đến thủ tục gửi tương ứng có thể được ban hành một cách

an toàn Lưu ý rằng một cuộc gọi đến một thủ tục không đồng bộ gửi thủ tục có thể trở lại trước khi chính nó được hoàn thành Vì lý do đó, các thủ tục không đồng bộ có một tham số bổ sung: một để xử lý một yêu cầu gửi trả lại bởi các thủ tục không đồng bộ

Xử lý mà có thể được sử dụng để kiểm tra hoặc chờ đợi để hoàn thành các hoạt động gửi

Một cuộc gọi đến, một gửi đồng bộ là hoàn toàn chỉ sau khi một cuộc gọi để phù hợp với một thủ tục nhận đã được ban hành Một các thủ tục gửi không đồng bộ hoàn

Hình 2: Truyền thông point to point

Trang 19

Học viên: Nguyễn Thị Tố Loan 11 Luận văn thạc sĩ

thành hay không một cuộc gọi để phù hợp với một thủ tục nhận đã được ban hành Các tiêu chuẩn của MPI xác định các thủ tục để quản lý không gian đệm và người sử dụng

có trách nhiệm cung cấp đủ không gian đệm để lưu trữ các tin nhắn gửi đi Sự lựa chọn giữa gọi một đồng bộ hoặc một thủ tục gửi không đồng bộ từ một số thỏa hiệp giữa các không gian đệm và thời gian thực hiện Các chế độ tiêu chuẩn của truyền thông chuyển tiếp các phân tích của các bản MPI thương mại Vì vậy, một cuộc gọi đến một thủ tục gửi hoạt động trong chế độ tiêu chuẩn có thể hoặc có thể không hoàn thành trước khi một cuộc gọi đến một kết hợp nhận thủ tục đã được ban hành Một cuộc gọi đến bất kỳ thủ tục gửi hành trong tiêu chuẩn, chế độ hoặc đệm đồng bộ có thể được ban hành một cách an toàn ngay cả khi không phù hợp với nhận cuộc gọi đã được ban hành Điều đó

là không đúng đối với các cuộc gọi để gửi hành thủ tục ở chế độ sẵn sàng Các hoạt động chính xác của các thủ tục gửi dựa trên các lập trình để đảm bảo rằng gửi sẽ được kết hợp bởi nhận được một cách phù hợp Những chỉ là một phương thức hoạt động cho các thủ tục MPI nhận được một tin nhắn

Điều kiện hoàn thành Gửi đồng bộ Chỉ hoàn thành khi nhận được đã được ban hành

Gửi bộ đệm Luôn hoàn thành (trừ khi có lỗi xảy ra), không phân biệt là

nhận đã hoàn thành Tiêu chuẩn gửi Hoặc là đồng bộ hoặc đệm

Sẵn sàng gửi Luôn hoàn thành (trừ khi có lỗi xảy ra), không phân biệt là

nhận đã hoàn thành

Nhận Hoàn thành khi một tin nhắn đã đến

Bảng 1: Phương thức giao tiếp MPI

Trang 20

Học viên: Nguyễn Thị Tố Loan 12 Luận văn thạc sĩ

Tất cả bốn chế độ tồn tại trong cả hai phương thức đồng bộ và không đồng bộ Trong các hình thức đồng bộ (blocking MPI), trở về từ các thói quen hoàn thành nghĩa Trong các hình thức non-blocking, tất cả các chế độ được thử nghiệm để hoàn thành với thói quen thông thường MPI_Test, MPI_Wait, vv)

Bảng 2: Giao tiếp MPI thông thường

1.2.3.3.2 Hàm gửi dữ liệu MPI_Send

Tiêu chuẩn gửi có dạng như sau:

int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest,int tag,

MPI_Comm comm)

Trong đó:

- buf là địa chỉ của các dữ liệu được gửi đi

- count là số phần tử của các kiểu dữ liệu MPI mà buf chứa

- datatype là kiểu dữ liệu MPI

- dest là quá trình điểm đến cho các tin nhắn Điều này được quy định bởi các Rank của quá trình đích trong nhóm kết hợp với giao tiếp comm

Trang 21

Học viên: Nguyễn Thị Tố Loan 13 Luận văn thạc sĩ

- tag là một dấu hiệu được sử dụng bởi người gửi để phân biệt giữa các loại khác nhau của thông điệp

- comm là người giao tiếp được chia sẻ bởi các quá trình gửi và nhận Quy trình chỉ có mà chia sẻ cùng người giao tiếp có thể giao tiếp

1.2.3.3.3 Hàm nhận MPI_Recv:

Tiêu chuẩn nhận có dạng như sau:

int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source,int tag,

MPI_Comm comm, MPI_Status *status) Trong đó:

- buf là địa chỉ mà các dữ liệu cần được đặt một lần nhận được (buffer Receiv) Đối với các giao tiếp để thành công, các bộ đệm nhận phải đủ lớn để giữ tin nhắn mà không cần cắt ngắn Nếu nó không phải là, hành

vi là không xác định Tuy nhiên các bộ đệm có thể kéo dài hơn so với dữ liệu nhận được

- count là số phần tử của dữ liệu MPI bao gồm cả buf

- datatype là kiểu dữ liệu cho tin nhắn Điều này phải phù hợp với các kiểu

dữ liệu quy định tại MPI gửi thông thường

- Sounce là cấp bậc của các nguồn của thông điệp trong nhóm liên quan với các giao tiếp comm Thay vì quy định các thông điệp mã nguồn có thể được nhận được từ một trong một số nguồn bởi Chỉ định một ký tự đại diện, MPI_ANY_SOURCE, cho lập luận này

- Tag được sử dụng bởi các quá trình nhận gửi quy định đó Nó shoulds nhận chỉ có một bài với một số từ khóa Thay vì quy định các tag, các ký

tự đại diện MPI_ANY_TAG có thể được chỉ định cho lập luận này

Trang 22

Học viên: Nguyễn Thị Tố Loan 14 Luận văn thạc sĩ

- comm là người giao tiếp được chỉ định bởi việc gửi và nhận gửi Cả hai quá trình Không có tùy chọn để đại diện cho lập luận này

Nếu quá trình gửi nhận đã định ký tự đại diện cho cả vàng Dù nguồn gốc của thẻ vàng, Sau đó thông tin tương ứng từ các tin nhắn đó đã thực sự nhận được có thể cần thiết Thông tin này được trả về trong tình trạng, và có thể được truy vấn sử dụng status.MPI_SOURCE và status.MPI_TAG

1.2.3.3.4 Truyền thông tập hợp

Thông tin liên lạc tập thể được khởi xướng bởi tất cả các tiến trình trong các giao tiếp trong mà giao tiếp diễn ra Các tiêu chuẩn MPI cung cấp cho các loại chính của thông tin liên lạc tập thể gặp phải trong thực tế hiện nay Các tập thể MPI thủ tục truyền thông được ngăn chặn Các rào cản, mô tả sau, hoạt động trong đồng bộ chế độ; tất cả các thủ tục giao tiếp tập thể khác MPI có thể được coi là hoạt động trong chế độ tiêu chuẩn Các hình thức chủ yếu của thông tin liên lạc tập thể bao gồm trong tiêu chuẩn MPI

1.2.3.3.5 Broadcast, Scatter, Gather

Các hàm này cho phép gửi, phân phối và tập hợp các dữ liệu mà không thực hiện bất

cứ hoạt động trên dữ liệu Các hàm được thể hiện bằng sơ đồ ở Hình 3

Hàm MPI_Bcast:

int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype,

int root, MPI_Comm comm)

Hàm MPI_Bcast gửi dữ liệu từ tiến trình gốc đến các tiến trình khác

Trong đó:

- buffer : là địa chỉ dữ liệu gửi đi,

- count: Số lượng dữ liệu gửi tới mỗi tiến trình,

Trang 23

Học viên: Nguyễn Thị Tố Loan 15 Luận văn thạc sĩ

- datatype là kiểu dữ liệu MPI,

- comm là người giao tiếp được chia sẻ bởi các quá trình gửi và nhận Quy

trình chỉ có mà chia sẻ cùng người giao tiếp có thể giao tiếp

Hình 3: Broadcast, Scatter, Gather

Trang 24

Học viên: Nguyễn Thị Tố Loan 16 Luận văn thạc sĩ

1.3 Các Phương thức truyền thông trong MPI

1.3.1 Phương thức truyền thông blocking MPI

Phương thức truyền thông blocking MPI bao gồm các bước sau:

 Bên gửi (Sender) gửi thông báo sẽ gửi gói tin (message) cho bên nhận (receiver)

 Bên nhận (receiver) sẵn sàng nhận thì sẽ gửi thông báo phản hồi (Acknowledgment) đồng ý cho bên gửi (sender)

 Khi bên gửi (Sender) nhận được phản hồi đồng ý của bên nhận ( Receiver)

thì bên gửi (Sender) sẽ gửi dữ liệu (Send Data) cho bên nhận

1.3.2 Phương thức truyền thông unblocking MPI

Send envelope Acknowledgment Send Data

Hình 4: Phương thức truyền thông Blocking MPI

Trang 25

Học viên: Nguyễn Thị Tố Loan 17 Luận văn thạc sĩ

Phương thức truyền thông Unblocking MPI bao gồm các bước sau:

 Bên gửi (Sender) gửi thông báo gửi dữ liệu cho bên nhận (Receiver)

 Bên gửi (Sender) tiếp tục gửi dữ liệu (Data) và vùng đệm (Buffer) của bên nhận (Receiver)

1.3.3 So sánh 2 phương thức truyền thông Blocking và Unblocking

Đồng bộ Không cần đồng bộ giữa người

đợi

Chờ phản hồi của bên nhận đồng

ý mới gửi tin

Không cần thời gian chờ

Bảng 3 : Phương thức truyền thông của MPI

Trang 26

Học viên: Nguyễn Thị Tố Loan 18 Luận văn thạc sĩ

Chương 2: Bài toán phương trình nước nông

(Shallow-Water Equations)

Bài toán phương trình nước nông (Shallow – Water Equations) và phương pháp số giải bài toán phương trình nước nông được trình bày chi tiết trong [2,8,9] Trong Chương này tôi chỉ giới thiệu bài toán và một số phương pháp số đơn giản để giải bài toán

2.1 Giới thiệu bài toán Shallow-Water Equations

Mô hình Shallow-Water Equations [8] có dạng như sau:

y y x x

y y x

x y x

HV VH HU UH

t H

gH VV UV

f U t

V

gH VU UU

f V t U

Trong hệ phương trình (3.1):

- x và y là tọa độ trong không gian hai chiều,

- U và V là vận tốc của dòng nước theo hướng x và y tương ứng,

- H là độ cao của cột nước,

- t là tham số thời gian,

- g là lực trọng trường,

- f là lực xoáy Coriolis của trái đất

- Ux, Vx, Hx là đạo hàm tương ứng của U, V, H theo hướng x,

- Uy, Vy, Hy là đạo hàm tương ứng của U, V, H theo hướng y,

- ∂U/∂t, ∂V/∂t, ∂H/∂t là đạo hàm tương ứng của U, V, H theo thời gian t

Trang 27

Học viên: Nguyễn Thị Tố Loan 19 Luận văn thạc sĩ

Yêu cầu của bài toán:

- Các tham số cho trước: g, f

- Đầu vào của bài toán: giá trị U, V, H tại thời điểm hiện tại (t = 0),

- Đầu ra của chương trình: giá trị U, V, H tại một thời điểm trong tương lai (t = T)

Hệ phương trình Shallow-Water Equations dùng để mô phỏng sự chuyển động (chảy) hoặc các hỗn loạn trong môi trường nước hoặc các chất lỏng khác

Nhờ vào việc giải được bài toán Shallow – Water Equations chúng ta dự báo được những khả năng có thể xẩy ra của dòng nước và có phương án tránh được các rủi ro không đáng có, cũng có thể dựa vào kết quả đó có phương án xả lũ tốt nhất vào đúng thời điểm cần thiết

2.2 Phương pháp số giải bài toán Shallow-Water Equations

Hệ phương trình Shallow-Water Equations là một hệ phương trình đạo hàm riêng (PDE: Partial Differential Equations) Để giải một hệ phương trình đạo hàm riêng bằng phương pháp số (Numerical method), ta cần thực hiện hai bước sau [9]:

- Rời rạc hóa theo không gian (Spatial discretization),

- Tích hợp theo thời gian (Time integration)

2.2.1 Phương pháp rời rạc hóa theo không gian

Giả sử cần giải bài toán Shallow-Water Equations trong không gian hai chiều

kích thước LxL Ta cần chia miền tính toán LxL này thành một lưới điểm Cho trước kích thước điểm lưới theo chiều x và y tương ứng là hx và hy, ta xác định được số điểm lưới theo chiều x (Nx) và theo chiều y (Ny) như sau :

Trang 28

Học viên: Nguyễn Thị Tố Loan 20 Luận văn thạc sĩ

) 1 2 3 ( /

/

hy L Ny

hx L Nx

Cách chia miền tính toán thành lưới điểm được mô tả như Hình 6 :

Sau khi đã chia miền tính thành một lưới điểm, ta có thể tính toán vế phải của bài toán Shallow-Water Equations một cách rời rạc trên từng điểm lưới

Các giá trị U, V, H sẽ thành : U(i,j), V(i,j), H(i,j)

Các đạo hàm của U, V, H theo hướng x hoặc y sẽ được tính tại từng điểm lưới theo công thức sai phân thuận, ví dụ: để tính Ux, Uy, Vx, Vy, Hx, Hy

ta dùng công thức rời rạc hóa theo không gian theo phương pháp sai phân thuận như sau:

Hình 6 Cách chia miền tính toán thành một lưới điểm.

Ngày đăng: 26/07/2017, 21:06

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Van Thieu Vu, Gerard Cats, Lex Wolters: Overlapping Communications With Calculations. CSREA Press, 2009 Sách, tạp chí
Tiêu đề: Overlapping Communications With Calculations
[2] Van Thieu Vu, Gerard Cats, and Lex Wolters, Automatic code generation for Finite Element Methods applied to the Shallow-Water equations, In Proceedings of the 2009 International Conference on Scientific Computing (CSC 2009), CSREA Press, pp 101-107, Las Vegas, USA, July 2009 Sách, tạp chí
Tiêu đề: Automatic code generation for Finite Element Methods applied to the Shallow-Water equations
[3] Van Thieu Vu, Opportunities for performance optimization of applications through code generation, PhD thesis, 2012 Sách, tạp chí
Tiêu đề: Opportunities for performance optimization of applications through code generation
[4] Tutorial Material on MPI, http://www.mcs.anl.gov/research/projects/mpi/tutorial/gropp/talk.html [5] M. Ashworth, Parallel Processing in Environmental Modelling, InProceedings of the 5th ECMWF Workshop on the use of parallel processors in Meteorology, pp 1-25, Reading, UK, November 1992 Sách, tạp chí
Tiêu đề: Tutorial Material on MPI," http://www.mcs.anl.gov/research/projects/mpi/tutorial/gropp/talk.html [5] M. Ashworth, "Parallel Processing in Environmental Modelling
[6] R. Buyya (editor), High Performance Cluster Computing: Programming and Applications, ISBN 0-13-013785-5, Prentice Hall PTR, NJ, USA, 1999 Sách, tạp chí
Tiêu đề: High Performance Cluster Computing: Programming and Applications
[7] Vipin Kumar, Ananth Grama, Anshul Gupta, and George Karpis, Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms, Addison-Wesley, 2003. ISBN 0-201-64865-2 Sách, tạp chí
Tiêu đề: Introduction to Parallel Computing: Design and Analysis of Parallel Algorithms
[8] J. Steppeler, Energy conserving Galerkin finite element schemes, for the primitive equation of numerical weather prediction, Journal of Computation Physics, Vol.69, No. 1,pp 258-264,1987 Sách, tạp chí
Tiêu đề: Energy conserving Galerkin finite element schemes, for the primitive equation of numerical weather prediction

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w