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

Giải song song các bài toán có mô hình toán học là các hệ phương trình đạo hàm riêng bằng phương pháp số

63 334 2

Đ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 63
Dung lượng 1,39 MB

Nội dung

Chính vì vậy, trong luận văn này tôi sẽ nghiên cứu và trình bày thuật toán song song giải bài toán có mô hình toán học là phương trình đạo hàm riêng bằng phương pháp số trên nền tảng siê

Trang 1

BỘ GIÁO DỤCVÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

PHÙNG THỊ HOÀNG

GIẢI SONG SONG CÁC BÀI TOÁN CÓ MÔ HÌNH TOÁN HỌC

LÀ CÁC HỆ PHƯƠNG TRÌNH ĐẠO HÀM RIÊNG

BẰNG PHƯƠNG PHÁP SỐ

Chuyên ngành: CÔNG NGHỆ THÔNG TIN

LUẬN VĂN THẠC SĨ KỸ THUẬT

CÔNG NGHỆ THÔNG TIN

Hà nội - 2015

NGƯỜI HƯỚNG DẪN

TS VŨ VĂN THIỆU

Trang 2

LỜI CAM ĐOAN

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 luận văn này, ngoài các tài liệu

tham 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

Phùng Thị Hoàng

Trang 3

MỤC LỤC

DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT

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

DANH MỤC CÁC BẢNG

Chương 1: Mở đầu 1

Chương 2: Cơ sở lý thuyết 4

2.1 Phương pháp số giải hệ phương trình PDEs 4

2.2 Mô hình lập trình song song SPMD 6

2.3 Thư viện MPI 7

2.3.1 MPI tiêu chuẩn 7

2.3.2 Các khái niệm cơ bản của MPI 8

2.3.3 MPI lớn hay nhỏ? 16

2.3.4 Các API MPI 17

Chương 3: Bài toán phương trình truyền nhiệt(HeatEquations) 21

3.1.Giới thiệu bài toán Heat Equations 21

3.2 Phương pháp số giải bài toán Heat Equations 23

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

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

3.3 Cài đặt chương trình 26

3.3.1 Cài đặt hàm rời rạc theo không gian 26

3.3.2 Cài đặt hàm tích hợp theo thời gian 29

Chương 4: Phân tích sự phụ thuộc dữ liệu, thiết kế giải thuậttruyền thông và cài đặt chương trình song song 30

4.1 Phân tích sự phụ thuộc dữ liệu 30

4.2 Thiết kế giải thuật song song 30

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

5.1 Hệ thống tính toán song song 41

Trang 4

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

Chương 6 : Kết luận 44

TÀI LIỆU THAM KHẢO 45

PHỤ LỤC 46

Trang 5

DANH MỤC CÁC THUẬT NGỮ VIẾT TẮT

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

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

3 RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên

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

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

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

9 FDM Finite Difference Method Phương pháp sai phân hữu hạn

10 FVM Finite Volume Method Phương pháp thể tích hữu hạn

Trang 6

9 Hình 4.2 Gửi dữ liệu đầu vào từ Root đến các CPU 33

Trang 7

DANH MỤC CÁC BẢNG

5 Bảng 5 Thời gian chạy chương trình C và MPI (ms) 41

6 Bảng 6 Thời gian chạy chương trình MPI với NP khác nhau 42

Trang 8

LỜI NÓI ĐẦU

Trong thực tế có rất nhiều bài toán có mô hình toán học là các hệ phương trình đạo hàm riêng có khối lượng tính toán rất lớn như các bài toán dự báo thời tiết, dự báo bão, dự báo lũ lụt sóng thần; bài toán mô phỏng các hệ sinh thái biển; bài toán mô hình phát triển vi sinh vật; bài toán mô phỏng khí động lực học

Thông thường các bài toán có khối lượng tính toán lớn trên được xử lý song song trên các (hệ thống) máy tính có khả năng tính toán cao như các siêu máy tính, cluster, grid Các hệ thống này thường bao gồm nhiều bộ vi xử lý (CPU) kết nối với nhau theo một cấu hình nhất định, sử dụng các công cụ (phần mềm) quản lý giao tiếp phù hợp

Chính vì vậy, trong luận văn này tôi sẽ nghiên cứu và trình bày thuật toán song song giải bài toán có mô hình toán học là phương trình đạo hàm riêng bằng phương pháp số trên nền tảng siêu máy tính, cluster, hoặc grid.Bài toán cụ thể được trình bày

là bài toán phương trình truyền nhiệt

Luận văn được hoàn thành dưới sự hướng dẫn của thầy giáo TS Vũ Văn Thiệu

Em xin được bày tỏ lòng cảm ơn chân thành nhất tới Thầy đã nhiệt tình giúp đỡ và hướng dẫn em trong suốt quá trình để hoàn thành luận văn

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

Học viên

Phùng Thị Hoàng

Trang 9

Hoc viên: Phùng Thị Hoàng 1 Luận văn thạc sĩ

Chương 1: Mở đầu

Hệ phương trình đạo hàm riêng (PDEs: Partial Differential Equations) được sử dụng trong nhiều lĩnh vực khoa học và kỹ thuật khác nhau Ví dụ,hệ phương trình PDEs thường xuất hiện trong các mô hình toán học mô phỏng các hiện tượng trong các lĩnh vực như khí tượng thủy văn, môi trường, sinh học, hóa học, khí động lực học, hay trong ngành khoa học vật liệu, vật lý

Có rất nhiều bài toán trong thực tế có mô hình toán học là các hệ phương trình đạo hàm riêng có khối lượng tính toán rất lớn và/hoặc yêu cầu được xử lý trong một khoảng thời gian nhất định Ví dụ như các bài toán dự báo thời tiết, dự báo báo, dự báo

lũ lụt sóng thần; bài toán mô phỏng các hệ sinh thái biển; bài toán mô hình phát triển vi sinh vật; bài toán mô phỏng khí động lực học Thông thường các bài toán có khối lượng tính toán lớn trên được xử lý song song trên các (hệ thống) máy tính có khả năng tính toán cao như các siêu máy tính, cluster, grid Các hệ thống này thường bao gồm nhiều bộ vi xử lý (CPU) kết nối với nhau theo một cấu hình nhất định, sử dụng các công cụ (phần mềm) quản lý giao tiếp phù hợp

Mặc dù các nguyên lý cơ bản của tính toán song song rất rõ ràng, nhưng việc xây dựng các chương trình xử lý song song thường phức tạp và tốn nhiều thời gian, đặc biệt là các chương trình song song giải các bài toán phức tạp

Rất khó có thể tìm được nghiệm chính xác của các hệ phương trình đạo hàm riêng PDEs.Thông thường người ta sẽ dùng phương pháp số (Numerical Method) để giải các hệ phương trình PDEs.Theo cách này, miền tính toán của bài toán (Domain) được chia thành một lưới điểm Các hàm, đạo hàm, …, được tính toán một cách rời rạc tại từng điểm lưới Để tính đạo hàm ta có thể dùng một số phương pháp như sai phân thuận, sai phân ngược, sai phân trung tâm,… Các phương pháp này yêu cầu thông tin

Trang 10

Hoc viên: Phùng Thị Hoàng 2 Luận văn thạc sĩ

(dữ liệu) bổ sung từ các điểm lưới xung quanh để tính toán đạo hàm tại một điểm lưới Người ta gọi vấn đề này là sự phụ thuộc dữ liệu trong tính toán

Trongmột chương trình tuần tự thực hiện trên một CPU, tất cả dữ liệu được lưu trong cùng một bộ nhớ nên chúng ta không cần quan tâm đến vấn đề phụ thuộc dữ liệu

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ên nếu có sự phụ thuộc dữ liệu 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 bộ nhớ riêng của CPU B, CPU B sẽ gửi và CPU A sẽ nhận dữ liệu này Tiến trình đó gọi là truyền thông

Việc cài đặt một chương trình song song có sự phụ thuộc dữ liệu rất phức tạp, bởi vì, trước hết chúng ta phải xác định được dữ liệu phụ thuộc (hay dữ liệu cần truyền thông), lưu dữ liệu cần truyền thông vào các biến, sau đó thiết kế một giải thuật truyền thông phù hợp, cuối cùng sử dụng dữ liệu thu được một cách chính xác

Chính vì vậy, trong luận văn này tôi sẽ nghiên cứu và trình bày thuật toán song song giải bài toán có mô hình toán học là phương trình đạo hàm riêng bằng phương pháp số trên nền tảng siêu máy tính, cluster, hoặc grid.Trước tiên tôi tìm hiểu các phương pháp số giải hệ phương trình đạo hàm riêng, sau đó sẽ đi sâu nghiên cứu và đưa ra giải pháp để xây dựng các chương trình tính toán song song cho bài toán trên.Cuối cùng tôi sẽ áp dụng xây dựng chương trình song song cho một bài toán cụ thể như bài toán phương trình truyền nhiệt.Các chương trình song song này sẽ được chạy thử nghiệm trên máy tính trạm có nhiều CPU

Trang 11

Hoc viên: Phùng Thị Hoàng 3 Luận văn thạc sĩ

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

Chương 2:Tìm hiểu cơ sở lý thuyết về các phương pháp số giải hệ phương

trình PDEs,tìm hiểu mô hình tính toán song song SPMD và thư viện lập trình song song MPI

Chương 3: Tìm hiểu bài toán phương trình Heat Equations (Phương trình

truyền nhiệt

Chương 4:Phân tích sự phụ thuộc dữ liệu, thiết kế giải thuật truyền thông, cài

đặt chương trình song song

Chương 5: Chạy thử nghiệm chương trình,phân tích kết quả, đánh giá hiệu quả

của chương trình song song

Chương 6: Kết luận

Trang 12

Hoc viên: Phùng Thị Hoàng 4 Luận văn thạc sĩ

Chương 2: Cơ sở lý thuyết

2.1 Phương pháp số giải hệ phương trình PDEs

Nói chung, rất khó tìm được nghiệm chính xác của các hệ phương trình đạo hàm riêng PDEs Vì vậy, thông thường người ta sử dụng phương pháp số(Numerical Method) để giải các hệ phương trình PDEs

Ngày nay có nhiều phương pháp số để giải các hệ PDEs, ví dụ như phương phápDST(Direct Space-Time) hay phương pháp MOL (Method Of Line) Theo phương pháp MOL, hai bước rời rạc theo không gian và tích hợp theo thời gian được thực hiện riêng, trong khi đối với phương pháp DST, hai bước này được thực hiện đồng thời Phương pháp MOL có ưu điểm là đơn giản và linh hoạt hơn so với phương pháp DST,

do đó trong luận văn này tôi sẽ chọn MOL là phương pháp số giải các hệ PDEs

Phương pháp MOL giải các hệ PDEs bao gồm hai bước:

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

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

Có nhiều cách để rời rạc hóa hệ phương trình PDEs trong không gian, ví dụ, phương pháp phần tử hữu hạn (FEM: Finite Element Method), phương pháp sai phân hữu hạn (FDM: Finite Difference Method), và phương pháp thể tích hữu hạn (FVM: Finite Volume Method) Trong luận văn này tôi sẽ sử dụng phương pháp sai phân hữu hạn FDM

Trong phương pháp sai phân hữu hạn FDM, miền tính toán của bài toán (Domain) được chia thành một lưới điểm hình chữ nhật.Đạo hàm của các biến trong không gian thay vì được tính liên tục, sẽ được tính một cách rời rạc tại từng điểm lưới

Trang 13

Hoc viên: Phùng Thị Hoàng 5 Luận văn thạc sĩ

này.Có nhiều phương pháp số để tính đạo hàm trong không gian, trong luận văn này tôi

sẽ sử dụng các phương pháp như sai phân thuận hoặc sai phân trung tâm

Sau khi rời rạc hóa hệ phương trình PDEs trong không gian, ta sẽ thu được một

hệ phương trình vi phân thường (ODEs: Ordinary Differential Equations) có dạng như sau:

Trong đó :

ω là các biến của hệ phương trình PDEs,

F là hàm thu được từ bước rời rạc hóa theo không gian,

t là biến thời gian

Có nhiều phương pháp để giải hệ phương trình vi phân thường ODEs, trong luận văn này chúng tôi sẽ sử dụng phương pháp Euler thuận (Forward Euler)

Phương pháp Euler thuận giải phương trình vi phân thường ODEs có công thức như sau:

Trong đó :

n là bước tính toán thứ n,

ht là độ dài bước thời gian

Công thức Euler thuận có thể được tính toán lặp như sau:

……

Trang 14

Hoc viên: Phùng Thị Hoàng 6 Luận văn thạc sĩ

Trong đó ωo, to là các giá trị khởi tạo ban đầu

2.2 Mô hình lập trình song song SPMD

Hiện có rất nhiều mô hình lập trình song song.Tuy nhiên, mô hình lập trình song song SPMD (Single Program Multiple Data) là phổ biến nhất vì nó 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

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ư Hình 2.1

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

Domain decomposition & Distribute

Trang 15

Hoc viên: Phùng Thị Hoàng 7 Luận văn thạc sĩ

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)

2.3.1 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 này đ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ểnmộ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)

Trang 16

Hoc viên: Phùng Thị Hoàng 8 Luận văn thạc sĩ

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 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 song nơi mà họ có thể có ích

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

2.3.2 Các khái niệm cơ bản của MPI

Các khái niệm cơ bản của các MPItiê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 MPItiêu chuẩn

2.3.2.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ệubao 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à

Trang 17

Hoc viên: Phùng Thị Hoàng 9 Luận văn thạc sĩ

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

2.3.2.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 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

2.3.2.1.2Phươ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 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 parallels 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 produre thư viện thuộc các ngữ cảnh khác nhau, hoặc các vũ trụ Tin nhắn qua giao diện hỗ trợ

Trang 18

Hoc viên: Phùng Thị Hoàng 10 Luận văn thạc sĩ

cảnh báo làm cho nó có thể cho người sử dụng và các thông điệp thư viện để đi du lịch cùng một lúc mà không cần bất kỳ nguy cơ của họ là lẫn lộn

2.3.2.1.3 Topo ảo

Các bảng xếp hạng mặc định các tiến trình trong một nhóm không phải là luôn luôn tự nhiên nhất để viết các ứng dụng phần mềm.Ví dụ, các ứng dụng có thể mô hình một số hiện tượng trong không gian ba chiều.Vào những lúc khác, thuật toán hiệu quả hơn có thể được sử dụng nếu các tiến trình được biết để tạo thành một lưới hai chiều Trong tất cả những trường hợp này nó là tự nhiên để nghĩ về các tiến trình như được lập chỉ mục theo một số hệ tọa độ Đề-Các Như một hệ thống phối hợp có thể hoặc có thể không phản ánh kết nối vật lý thực tế giữa các bộ xử lý chạy các tiến trình trong nhóm.Tọa độ Đề-Các phối hợp hệ thống được gọi là topo Đề-Các và có thể có kích thướcbất kỳ.MPI cũng cung cấp topo đồ thị cho phép người sử dụng xác định rõ ràng mối quan hệ láng giềng giữa các tiến trình Tiến trình mà các láng giềng gần nhất theo một tiến trình cấu trúc liên kết không cần phải chạy trên vi xử lý mà kết nối vật lý; Do

đó cấu trúc liên kết Đề-Các và đồ thị được gọi là topo ảo

2.3.2.1.4 Comminicator

Comminicatortrong 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à Comminicatorlà 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

2.3.2.2Kiểu dữ liệu MPI

Trang 19

Hoc viên: Phùng Thị Hoàng 11 Luận văn thạc sĩ

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à Fortrancộ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 MPI loại dữ liệu 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

Tên Kiểu dữ liệu C tương đương

Bảng 1: Các kiểu dữ liệu

Trang 20

Hoc viên: Phùng Thị Hoàng 12 Luận văn thạc sĩ

2.3.2.3 Các kiểu hàm tính toán của MPI

MPI_Init() Khởi tạo bộ môi trường thực thi MPI, hàm này phải

được gọi trước tất cả các hàm MPI khác, và chỉ được gọi một lần Hàm này có thể được dùng để truyền tham số dòng lệnh tới tất cả các tiến trình, cách dùng như sau: MPI_Init (&argc, &argv)

Trang 21

Hoc viên: Phùng Thị Hoàng 13 Luận văn thạc sĩ

MPI_Finalize() Dùng để kết thúc môi trường thực thi MPI Hàm này

phải được gọi cuối cùng trong tất cả các hàm MPI MPI_Comm_size

(MPI_COMM_WORLD,

&size)

Xác định số lượng tiến trình tham gia vào một bộ giao tiếp, thông thường, nó được dùng trong bộ giao tiếp MPI_COMM_WORLD bộ giao tiếp được xây dựng sẵn, bao gồm tất cả các tiến trình tham gia vào chương trình

MPI_Wtick() Xác định độ chính xác của thời gian hệ thống

MPI_Reduce

(void *local, void *global,

int count, MPI_Datatype

type, MPI_Op operator, int

Root, MPI_Comm comm)

Hàm tình gộp, dùng để gộp các kết quả của từng tiến trình vào kết quả chung Trong đó, local là kết quả cục bộ, global là kết quả nhận được sau khi tính gộp các kết quả cục bộ, type là kiểu dữ liệu tính gộp, operator là thao tác tính gộp, Root là thứ tự của tiến trình sẽ nhận được kết quả global, comm là bộ giao tiếp

Trang 22

Hoc viên: Phùng Thị Hoàng 14 Luận văn thạc sĩ

Một thủ tục truyền thông MPI là bị khóa nếu một cuộc gọi đến nó sẽ không trở lại trước khi nó là an toàn cho một tiến trình để tái sử dụng các nguồn tài nguyên quy định trong các cuộc gọi Thủ tục truyền thông Non-blocking MPI được 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ọ

2.3.2.4.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ộtphiê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ộ

Trang 23

Hoc viên: Phùng Thị Hoàng 15 Luận văn thạc sĩ

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 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ảnMPI 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

2.3.2.4.2 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

Trang 24

Hoc viên: Phùng Thị Hoàng 16 Luận văn thạc sĩ

2.3.3 MPI lớn hay nhỏ?

Có lẽ các quyết định cơ bản nhất cho các diễn đàn MPI là liệu MPI sẽ là "nhỏ và độc quyền, "kết hợp các giao điểm tối thiểu của các thư viện hiện có, hoặc" lớn và bao gồm, "kết hợp các công đoàn của các chức năng của hệ thống hiện có Cuối cùng, mặc

dù một số ý tưởng đã rời ra, một nỗ lực được thực hiện để bao gồm một số lượng tương đối lớn các tính năng đã được chứng minh rất hữu ích trong các thư viện khác nhau và các ứng dụng

2.3.3.1 MPI là lớn

Nhiều chức năng được mô tả trong phần cuối cùng có nghĩa là các tiêu chuẩn MPI có nhiều chức năng trong nó (khoảng 125).Điều này có nghĩa rằng MPI thì không thể phức tạp? Câu trả lời là không có vì hai lý do Thứ nhất, số lượng các chức năng trong MPI đến từ việc kết hợp một số lượng nhỏ khái niệm về trực giao.Số lượng các ý tưởng trong MPI là nhỏ Thứ hai, nhiều người trong số các thói quen

đại diện cho tính năng bổ sung có thể được bỏ qua cho đến khi cần thiết

int MPI_Comm_size(MPI_Comm comm, int *size)

int MPI_Comm_rank(MPI_Comm comm, int *rank)

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

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

MPI_Comm comm,MPI_Status *status)

Trang 25

Hoc viên: Phùng Thị Hoàng 17 Luận văn thạc sĩ

Các chức năng trên sẽ được mô tả, cũng như các chức năng khác có liên quan MPI, trong các kế tiếp chương

Với các chức năng này chỉ có một số lượng lớn các chương trình hữu ích và hiệu quả có thể được viết.Tất cả các chức năng khác thêm tính linh hoạt (kiểu dữ liệu), vững mạnh (nonblocking gửi / nhận), hiệu quả ("sẵn sàng" chế độ), mô đun (nhóm, truyền thông), hoặc tiện lợi (tập thể hoạt động, cấu trúc liên kết)

2.3.4 Các API MPI

2.3.4.1 Chuẩn

MPI bao gồm một thư viện Một quá trình MPI bao gồm một chương trình C hoặc Fortran77 mà giao tiếp với quá trình MPI khác bằng cách gọi thói quen MPI.Các thói quen MPI cung cấp các lập trình viên với một giao diện nhất quán trên nhiều nền tảng khác nhau

Tất cả các tên của thói quen MPI và các hằng số trong cả hai C, Fortran bắt đầu với tiền tố MPI để tránh tên collisions.Fortran tên thông thường là tất cả các trường hợp trên nhưng C tên thường được trộn lẫn trường hợp Sau khi tài liệu MPI, khi một tên thường xuyên được sử dụng trong một ngữ cảnh ngôn ngữ độc lập, các phiên bản chữ hoa được sử dụng Tất cả các hằng số được viết hoa trong cả Fortran và C

2.3.4.1.1 Khởi tạo MPI

Đầu tiên trong bất kỳ chương trình MPI được khởi tạo là MPI_Init, mỗi chương trình MPI phải gọi thói quen này một lần, trước khi bất kỳ thói quen MPI khác.Làm nhiều cuộc gọi đến MPI_Init là sai lầm.Các phiên bản C của các thói quen chấp nhận các đối số chính, tức là argc và argv như các đối số

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

2.2.4.1.2 MPI_COMM_WORLD và GIAO TIẾP

Trang 26

Hoc viên: Phùng Thị Hoàng 18 Luận văn thạc sĩ

MPI_Init xác định một cái gì đó gọi là MPI_COMM_WORLD cho mỗi quá trình gọi nó.MPI_COMM_WORLD là một người giao tiếp.Tất cả các cuộc gọi truyền thông MPI yêu cầu một tham số truyền và quá trình MPI chỉ có thể giao tiếp nếu họ chia sẻ một người giao tiếp

Một quá trình MPI có thể truy vấn một người giao tiếp để có thông tin về nhóm này, với MPI_Comm_rank và MPI_Comm_size

int MPI_Comm_rank (MPI_Comm comm, int rank *)

Trang 27

Hoc viên: Phùng Thị Hoàng 19 Luận văn thạc sĩ

MPI_Comm_rank trả trong rank cấp bậc của các quá trình gọi trong nhóm kết hợp với giao tiếp comm

int MPI_Comm_size(MPI_Comm comm, int *size)

MPI_Comm_size lợi nhuận trong size số lượng các quá trình trong nhóm kết hợp với truyền thông comm

2.3.4.1.3 Clean-Up của MPI

Một chương trình MPI nên gọi các thói quen MPI Finalize khi tất cả các thông tin liên lạc đã hoàn thành Thói quen này dọn sạch tất cả các MPI dữ liệu -cấu trúc, vv

Nó không hủy truyền thông xuất sắc, do đó, nó là trách nhiệm của các lập trình viên để đảm bảo tất cả các thông tin liên lạc đã hoàn thành Một khi thói quen này đã được gọi

là, không có cuộc gọi nào khác có thể được thực hiện cho thói quen MPI, thậm chí không MPI_Init, do đó, một quá trình có thể không muộn đăng ký lại MPI

int MPI_Finalize(void)

2.3.4.1.4 Hủy MPI

int MPI_Abort (MPI_Comm comm, int errcode)

Điều này thường cố gắng để hủy bỏ tất cả các quá trình trong nhóm chứa trong comm vì vậy mà với comm = MPI_COMM_WORLD toàn bộ chương trình sẽ chấm dứt

2.3.4.1.5 Timers và đồng bộ

MPI định nghĩa một bộ đếm thời gian Một giờ được quy định mặc dù nó không phải là "tin nhắn qua", bởi vì thời gian chương trình song song là quan trọng trong việc thực hiện gỡ lỗi và vì giờ hiện thời hoặc bất tiện hoặc không cung cấp quyền truy cập đầy đủ để tính giờ có độ phân giải cao

đôi MPI_Wtime (void)

Trang 28

Hoc viên: Phùng Thị Hoàng 20 Luận văn thạc sĩ

MPI_Wtime trả về một số điểm nổi giây, đại diện cho thời gian trôi qua tường đồng hồ kể từ khi một số thời điểm trong quá khứ.Giờ trở lại địa phương ở những nút

mà gọi họ.Không có yêu cầu rằng các nút khác nhau lại cùng một lúc

double MPI_Wtick(void)

MPI_Wtick trả về độ phân giải của MPI_Wtime trong vài giây Nghĩa là, nó trả

về số giây giữa đồng hồ liên tiếp theo

Trang 29

Hoc viên: Phùng Thị Hoàng 21 Luận văn thạc sĩ

Chương 3: Bài toán phương trình truyền nhiệt(HeatEquations)

3.1.Giới thiệu bài toán Heat Equations

Một quá trình khuếch tán, ví dụ như khuếch tán nhiệt trong chất rắn hoặc khuếch tán chất tan trong một dung dịch, có thể được mô hình hóa bằng một phương trình đạo hàm riêng

Xét một hợp chất hóa học có thể hòa tan trong chất lỏng Hợp chất hóa học này có nồng độ c (concentration) nhất định (số phần tử/m3) Giả sử rằng hợp chất chỉ di chuyển trong dung môi thông qua khuếch tán tự do (để loại đi trường hợp khuếch tán bằng dòng chảy của dung môi) Bây giờ ta đi tìm một phương trình mô tả nồng độ c trên một thể tích nhỏ thông qua định luật Fick (liên quan đến dòng khuếch tán tuyến tính với gradient nồng độ)

Hình 3.1: Gradient nồng độ c

Gọi J là thông lượng hay số phần tử đi qua một đơn vị bề mặt trong một thời gian xác định (số phần tử/m2s) Định luật Fick phát biểu rằng thông lượng J và gradient nồng độ c phụ thuộc tuyến tính với nhau theo công thức:

Mặt A

J

Trang 30

Hoc viên: Phùng Thị Hoàng 22 Luận văn thạc sĩ

( ) ( ) [3.2]

Trang 31

Hoc viên: Phùng Thị Hoàng 23 Luận văn thạc sĩ

Trong đó t là thời gian Chia Phương trình [3.2] cho dV và giả sử rằng dx, dy, dz

→ 0, ta có:

[3.3]

Cuối cùng, kết hợp [3.3] với phương trình Định luật Fick [1] ta được phương trình khuếch tán:

3.2 Phương pháp số giải bài toán Heat Equations

Ta sẽ giải phương trình Heat Equations bằng phương pháp số, theo đó bao gồm hai bước: rời rạc hóa theo không gian (Spatial discretization) và tích hợp theo thời gian (Time integration)

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

Xét bài toán Heat Equations trong không gian hai chiều kích thước MxM

Trong không gian hai chiều, phương trình Heat Equations có dạng:

Để giải bài toán trên bằng phương pháp số, trước tiên ta cần chia miền tính toán MxM 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 la dx và dy (giả sử dx=dy), ta xác định được số điểm lưới theo chiều x(m)

và y(n) như sau :

m = M/dx,

Ngày đăng: 26/07/2017, 20:59

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w