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 1BỘ 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 2LỜ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 3MỤ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 45.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 5DANH 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 69 Hình 4.2 Gửi dữ liệu đầu vào từ Root đến các CPU 33
Trang 7DANH 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 8LỜ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 9Hoc 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 10Hoc 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 11Hoc 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 12Hoc 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 13Hoc 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 14Hoc 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 15Hoc 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 16Hoc 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 17Hoc 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 18Hoc 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 19Hoc 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 20Hoc 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 21Hoc 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 22Hoc 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 23Hoc 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 24Hoc 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 25Hoc 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 26Hoc 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 27Hoc 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 28Hoc 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 29Hoc 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 30Hoc viên: Phùng Thị Hoàng 22 Luận văn thạc sĩ
( ) ( ) [3.2]
Trang 31Hoc 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,