Kỹ thuật tính toán song song trong một số ứng dụng cơ học Kỹ thuật tính toán song song trong một số ứng dụng cơ học Kỹ thuật tính toán song song trong một số ứng dụng cơ học luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Trang 2DANH MỤC HÌNH
28TUHình 1.1.1: Luật Moore về tốc độ của bộ xử lýU28T _ 7
28TUHình 1.1.2: Hiệu năng tính toán của các cấp độ trung tâm tính toán song songU28 T
_ 9
28TUHình 3.1: Mô hình máy tính cá nhân gồm một bộ xử lý và một bộ nhớU28T _ 15
28TUHình 3.2: Mô hình máy tính song song bộ nhớ chia sẻU28T 16
28TUHình 3.3: Sơ đồ đơn giản kiến trúc máy tính lõi đôi của PentiumU28 T 16
28TUHình 3.4: Sơ đồ kiến trúc máy tính lõi tứ của PentiumU28 T 17
28TUHình 3.5: Mô hình máy tính song song bộ nhớ phân tánU28 T _ 18
28TUHình 3.6: Hệ thống mạng kết nối từng cặp máy tính với nhauU 28T 19
28TUHình 3.7: Hệ thống mạng dạng lưới hai chiềuU28 T _ 20
28TUHình 3.8: Hệ thống mạng siêu lập phương ba chiềuU28 T 21
28TUHình 3.9: Phân rã theo miền cho bài toán trong không gian ba chiều.U28 T _ 21
28TUHình 3.10: Hệ thống mạng siêu lập phương bốn chiềuU28 T 22
28TUHình 3.11: Hệ thống mạng máy trạmU28 T 23
28TUHình 3.12: Hệ thống máy tính BeowulfU28 T 23
28TUHình 3.13: Số lượng cố định các tiến trình độc lập trongU28T _ 24
28TUHình 3.14: Lượng tiến trình động, độc lập trên nền PVMU28 T 25
28TUHình 3.15: Mô hình thực hiện của các tiến trình thu được trên nền PVMU28T 25
28TUHình 3.16: Đồng bộ hóa các tiến trình theo thuật giải butterfly sử dụng hàm barrierU2 8T _ 26
28TUHình 3.17: Tính tổng của 16 số hạng sử dụng giải thuật butterflyU28 T 27Hình 3.18: Tính tích phân số bằng tổng diện tích các hình thang 28
Trang 328TUHình 3.19: Tính số pi theo công thức tổng diện tích hình thangU28 T _ 28
28TUHình 3.20: Kỹ thuật tính toán song song pipelineU28T 29
28TUHình 3.21: Mô hình hóa bài toán giải phương trình truyền nhiệt hai chiềuU28T _ 30
28TUHình 3.22: Mô hình tính toán hệ số tăng tốcU28T 31
28TUHình 4.1: Cấu trúc cơ bản của một chương trình sử dụng giao thức MPIU28 T 34
28TUHình 4.2: Các tập hợp truyền thông trong MPIU28T 35
28TUHình 4.3: Chi tiết mô hình truyền thông điểm tới điểmU2 8T 37
28TUHình 4.4: Mô hình quảng bá truyền thôngU28T 39
28TUHình 4.5: Mô hình tổng hợp truyền thôngU28 T 40
28TUHình 4.6: Mô hình tập hợp dữ liệu truyền thôngU28T _ 41
28TUHình 4.7: Mô hình tích hợp quảng bá và tổng hợp truyền thôngU28 T _ 42
28TUHình 4.8: Mô hình phân tán dữ liệu truyền thôngU28 T 43
28TUHình 4.9: Tổng kết một số mô hình gói truyền thôngU28T _ 44
28TUHình 5.1: Các thư viện tính toán song song thông dụngU28T _ 50
28TUHình 5.2: Phân tán thành các tiến trình độc lậpU28 T 52
28TUHình 5.3: Song song hóa Matlab với giao thức truyền thông điệp MPIU28 T 54
28TUHình 5.4: Tính toán hiệu năng cao qua dịch vụ sử dụng các siêu máy tínhU28 T _ 56
28TUHình 5.5: Mô hình biên dịch mã Matlab thành mã thư viện tính toán song
28TUHình 5.6: Lượng băng thông của hệ thống song song sử dụng MatlabU28 T 61
28TUHình 5.7: Hiệu quả tăng tốc của MatlabMPI khi so với thuật giải tuần tự tốtU28 T
62
28TUHình 5.8: So sánh chi phí lập trình với hiệu quả tính toán của các công cụ lập trình song songU28T 63
28TUHình 6.1: Rời rạc hóa miền khảo sát để giải phương trình vi phânU28T _ 67
28TUHình 6.2: Sơ đồ tính toán tuần tự giải thuật lặp đơnU28T 72Hình 6.3: Sơ lược về các bước thiết kế giải thuật song song 73
Trang 428TUHình 6.4: Phân rã tối đa, mỗi tiến trình xử lý một nútU28T _ 74
28TUHình 6.5: Truyền thông giữa các tiến trình láng giềngU28T _ 75
28TUHình 6.6: Tích tụ bài toán vào p tiến trình, mỗi tiến trình xử lý m nútU28 T 76
28TUHình 6.8: Kết quả tính toán số tại một vài bước lặp của mô hình tính toán song songU28 T 78
28TUHình 6.9: Giao diện chương trình điều khiển tiến trìnhU28 T 79
28TUHình 6.10: Nhập vào tệp cần thực hiệnU28T 80
28TUHình 6.11: Nhập cấu hình máy phân tánU28T _ 80
28TUHình 6.12: Nhập cấu hình một máyU28 T _ 80
28TUHình 6.13: Danh sách các máy đã được khởi tạoU28 T _ 81
28TUHình 6.14: Kết quả sau khi tính toánU28T 81
28TUHình 6.15: Lỗi khi không nhập tệp cần thực hiệnU28 T 82
28TUHình 6.16: Lỗi khi không nhập vào cấu hình máy tính song songU28 T 82
Trang 5DANH MỤC BẢNG
28TUBảng 3.1: Một số hệ thống siêu máy tính giá rẻ hiện đang được sử dụngU28 T 23
28TUBảng 4.1: Các kiểu dữ liệu điển hình trong giao thức MPIU28 T _ 35
28TUBảng 4.2: Kiểu dữ liệu tương ứng với các tham số truyền vào các hàm MPIU28 T
36
28TUBảng 4.3: Các mô hình gửi thông điệp MPI hỗ trợU28 T _ 38
28TUBảng 4.4: Các thao tác tổng hợp dữ liệu hàm MPI_Reduce có thể thực hiện đượcU28T 40
28TUBảng 5.1: Bảng các câu lệnh được cung cấp với mpdU28 T _ 47
28TUBảng 5.2: Bảng các lựa chọn được cung cấp với smpdU28 T 47
28TUBảng 5.3: Các lựa chọn với câu lệnh mpiexecU28T _ 48
28TUBảng 5.4: Bảng các phần mềm hỗ trợ phân tán các tiến trình độc lập trên MatlabU28 T 53
28TUBảng 5.5: Bảng các phần mềm hỗ trợ truyền thông điệp trên MatlabU28T _ 55
28TUBảng 5.6: Bảng các dịch vụ hỗ trợ tính toán song song trên MatlabU28T 57
28TUBảng 5.7: Bảng các phần mềm giúp dịch và ứng dụng các chương trình song song mã MatlabU28 T _ 59
Trang 6Mở đầu
Khoảng hai năm trở lại đây, chúng ta bắt đầu nghe nhiều đến bộ xử lý lõi kép của Intel Bộ xử lý này chính làm một trong những kiến trúc máy tính song song đang được thương mại hoá bởi cả Intel và AMD, hai nhà sản xuất chíp lớn Điều đó vẫn chưa cho ta thấy rõ rằng đã có các siêu máy tính tích hợp đến hơn mười ngàn bộ xử lý do các công ty khổng lồ như IBM hay HP thiết
kế để thực hiện các dự án trọng điểm quốc gia Hiệu ứng nghiên cứu tính toán song song lan rất rộng khi xuất hiện các mô hình tính toán song song sử dụng mạng máy tính kết nối hàng ngàn bộ xử lý đơn để giải quyết một bài toán Các bài toán cơ học hiện đại thực hiện ngày càng nhiều trên máy tính Phương pháp phần tử hữu hạn, phương pháp số hay phương pháp phần tử biên ngày càng tăng nhu cầu tính toán khi giải quyết các bài toán cỡ lớn (số phần tử lớn) hay các bài toán phi tuyến Nhu cầu tất yếu là tìm một phương pháp tính toán có hiệu năng cao hơn để giải quyết các bài toán này
Luận văn trình bày về các kỹ thuật tính toán song song và cách thức sử dụng kỹ thuật này giải các bài toán cơ học sau đó đưa vào các kiến trúc máy tính song song chi phí thấp để thực hiện
Luận văn gồm gồm sáu chương, trình bày và đánh giá sự phát triển của
kỹ thuật tính toán song song cũng như nhu cầu ngày càng lớn của việc ứng dụng tính toán song song vào các bài toán kỹ thuật nói chung và các bài toán
cơ học nói riêng Ngoài ra luận văn mô tả chi tiết và khá đầy đủ về các kỹ thuật tính toán song song hiện tại từ đơn giản đến phức tạp hơn Ngoài việc xây dựng một thư viện các mô đun ma trận sử dụng giải thuật tính toán song song, luận văn còn giải quyết một bài toán cơ học cụ thể, bài toán này có thể
áp dụng vào thực tiễn ngay hay phát triển thêm để tận dụng triệt để hơn các
Trang 7lợi thế của tính toán song song hay tận dụng được cơ sở hạ tầng công nghệ thông tin hiện có Luân văn cũng có mục đích phát triển tính toán song song theo một hướng mới là sử dụng Matlab được song song hoá để giải quyết các bài toán kỹ thuật
Chương một trình bày sơ lược về nhu cầu tính toán song song trên thế giới hiện nay, qua đó mô tả sự cần thiết áp dụng các kỹ thuật tính toán song song vào các bài toán thực tế là rất cấp thiết
Chương hai trình bày một bài toán dao động cơ bản, phân tích phương pháp ma trận dạng riêng quen thuộc để tìm các yếu tố có khả năng phân rã, qua đó tìm được phương pháp áp dụng tính toán song song vào bài toán trên
Để hiểu được các khái niệm cũng như sử dụng được các kỹ thuật sẵn có, chương ba, chương bốn, chương năm lần lượt trình bày các kiến trúc, mô hình lập trình và các tài nguyên tính toán song song sẵn có Phần này chủ yếu trình bày các thông tin để có thể lập trình tính toán song song theo tiêu chuẩn hiện hành và các trào lưu mới nhất hiện có Luận văn mô phỏng phần này bằng một số ví dụ như tính tích phân số, nhân ma trận với một véc tơ, nhân hai ma trận và giải phương trình truyền nhiệt hai chiều
Chương sáu trình bày cụ thể cách giải quyết bài toán đã nêu ra trong chương một Các bước từ chọn cấu hình phần cứng, thiết kế và cài đặt chương trình được trình bày rất kỹ Chương này tổng hợp và sử dụng các lý thuyết và tài nguyên của năm chương trước Ngoài ra chương sáu cũng trình bày một bảng điều khiển được lập trình để chạy các ứng dụng trong toàn bộ luận văn
Trang 8CHƯƠNG 1
NHU CẦU TÍNH TOÁN SONG SONG TRONG KHOA HỌC TÍNH TOÁN
VÀ CƠ HỌC
1.1 Định luật Moore về sự phát triển tốc độ của bộ xử lý
Ngay từ những ngày đầu trong quá trình phát triển của máy tính điện tử, năm
1965, Gordon Moore đã đưa ra định luật nêu rằng tốc độ xử lý của máy tính
sẽ tăng lên gấp đôi sau mỗi một năm Đây chính là luật Moore nổi tiếng
Hình 1.1.1 : Luật Moore về tốc độ của bộ xử lý
Ban đầu máy tính điện tử tỏ ra khá mạnh khi giải quyết các bài toán kỹ thuật đương thời, tuy nhiên nhu cầu tính toán đã phát triển nhanh hơn tốc độ
Trang 9phát triển của vi xử lý theo định luật Moore Gần như ngay sau đó các ý tưởng
về tính toán song song đã xuất hiện, tuy nhiên phải đến thập niên 90 thì các ứng dụng tính toán song song mới tỏ ra hiệu quả trên các siêu máy tính đắt tiền của các hãng máy tính nổi tiếng như IBM hay HP Đến thời điểm hiện nay số lượng đèn điện tử tích hợp trong một chíp điện tử gần như bão hoà (kích thước chíp điện tử đã đạt đến 60 nanomet và có khả năng khó phát triển thêm thì các nhà cung cấp chíp bắt đầu xu hướng tích hợp nhiều lõi trong một
bộ xử lý như bộ xử lý Intel dual core hay AMD dual core Rõ ràng ta thấy xu hướng áp dụng tính toán song song là xu hướng khó đảo ngược
Trong phương pháp số các bài toán yêu cầu lượng tính toán lớn như giải
hệ phương trình đại số tuyến tính cỡ lớn, giải hệ phương trình đại số phi tuyến, giải phương trình vi phân tuyến tính và phi tuyến cũng rất cần ứng dụng tính toán song song
Trang 10Các bài toán về phương pháp phần tử hữu hạn hay phần tử biên cũng đòi hỏi lượng lớn tính toán khi số phần tử trong bài toán lớn, làm cho số ẩn cần giải quyết tăng theo
Trên đây chỉ là những ứng dụng có thể áp dụng tính toán song song theo tầm hiểu biết của tác giả, còn rất nhiều ứng dụng khác nữa như trong công nghệ nano, hoá học, y tế, năng lượng, quân sự đều đòi hỏi kỹ thuật tính toán hiệu năng cao Bằng chứng là sự phát triển của các siêu máy tính của các cơ quan quốc phòng của Mỹ là rất mạnh mẽ Sau đây là mô hình phát triển tính toán song song tại Mỹ
Trung tâm nghiên cứu
quốc gia Viện nghiên cứu lớn
Bộ phận nhóm nghiên cứu
Hình 1.1.2: Hiệu năng tính toán của các cấp độ trung tâm tính toán song song
4
Pflops
Trang 12Để cho phương trình đại số tuyến tính thuần nhất (2.4) có nghiệm không tầm thường, điều kiện cần là
Các nghiệm ωR k R (k = 1, …, n) của phương trình đặc trưng (2.5) được gọi là các tần số riêng
Thế n giá trị ωR k R (k = 1, …, n) lần lượt vào (2.5) ta thu được n phương trình
đại số tuyến tính thuần nhất n nghiệm aR k R(k = 1, …, n) của n hệ phương trình
tuyến tính này sai khác nhau một hằng số nhân Gọi n nghiệm aR k R(k = 1, …, n)
vừa tìm được là n véc tơ vR k R(k = 1, …, n)
Ma trận V được gọi là ma trận dạng riêng của hệ dao động Ý nghĩa của V
đơn giản là cho ta biết tất cả các dạng dao động riêng có thể của hệ dao động
2.1.2 Tính chất trực giao của các véc tơ riêng
Nếu phương trình dao động tự do không cản của hệ n bậc tự do (2.2) có các
ma trận khối lượng M và ma trận độ cứng C là các ma trận thực đối xứng thì các véc tơ riêng vR k R tương ứng với các tần số riêng ωR k R sẽ trực giao với ma trận
khối lượng M và ma trận độ cứng C
Trang 13j i T
- p được gọi là véc tơ các tọa độ chính của hệ (2.1)
Áp dụng phép biến đổi tọa độ (2.9) vào hệ (2.1) ta thu được hệ sau
Trang 14Trong đó B là ma trận cản của cơ hệ
Trong một số bài toán thực tế ma trận cản B thường được biểu diễn dưới dạng
ma trận cản Rayleigh
Trong đó α và δ là các hằng số, ma trận (2.17) được gọi là ma trận cản
Rayleigh Khi đó các véc tơ riêng vR k R tương ứng với các tần số riêng ωR k R cũng
Trang 16CHƯƠNG 3
SƠ LƯỢC VỀ TÍNH TOÁN SONG SONG
3.1 Các khái niệm cơ bản
3.1.1 Kiến trúc máy tính song song
a) Máy tính cá nhân
Các máy tính cá nhân thông dụng thường có cấu trúc gồm hai bộ phận chính
bộ xử lý và bộ nhớ Bộ xử lý sẽ nhận các chỉ thị lệnh, các dữ liệu từ bộ nhớ, sau khi tính toán thì lại lưu lại bộ nhớ
Bộ nhớ
Bộ xử lý
Dữ liệuDòng lệnh
Hình 3.1 : Mô hình máy tính cá nhân gồm một bộ xử lý và một bộ nhớ
Bộ nhớ của máy tính sử dụng một không gian địa chỉ Một không gian địa chỉ lưu trữ được 2P
Trang 17b) Hai kiểu máy tính song song cơ bản
Máy tính đa xử lý bộ nhớ chia sẻ
Các bộ nhớ thành phần
Các bộ xử lý thành phần
Một không gian địa chỉ
Hệ thống mạng
Hình 3.2 : Mô hình máy tính song song bộ nhớ chia sẻ
Máy tính đa xử lý chia sẻ bộ nhớ mô phỏng theo kiến trúc của máy tính
cá nhân bình thường Các thành phần bộ nhớ tách rời nhau nhưng sử dụng chỉ một không gian địa chỉ Bất kỳ bộ xử lý nào cũng có thể truy cập vào bất kỳ phần nào của bộ nhớ Chính vì vậy ta gọi là máy tính chia sẻ bộ nhớ
Máy tính lõi đôi và lõi tứ của Pentium là loại máy tính đặc trưng cho loại hình máy tính song song này
Các bộ xử lý thành phần Các bộ nhớ thành phần
Hình 3.3: Sơ đồ đơn giản kiến trúc máy tính lõi đôi của Pentium
Trang 18Vào ra
bus vào raChia sẻ bộ nhớ
Ghép bus
Bộ xử lýCache L1Cache L2
Ghép bus
Bộ xử lýCache L1Cache L2
Ghép bus
Bộ xử lýCache L1Cache L2
Hình 3.4: Sơ đồ kiến trúc máy tính lõi tứ của Pentium
Máy tính lõi đôi (dual core) đã được sử dụng rộng rãi trong tính toán 32 bít và 64 bít, máy tính lõi tứ (quad core) cũng sẽ được phổ cập chỉ trong một hai năm nữa Sử dụng các môi trường lập trình song song trên nền các hệ thống này đạt kết quả khá tốt Đây là mô hình đơn giản, chi phí thấp và đang
có xu hướng phát triển mạnh
Máy tính lõi đơn và máy tính lõi tứ là các loại máy tính chia sẻ bộ nhớ phổ dụng mà ta có thể tiếp xúc Trên thực tế có rất nhiều loại máy tính chia sẻ
bộ nhớ với lượng bộ xử lý tích hợp và lượng bộ nhớ lớn, các máy tính chia sẻ
bộ nhớ có ưu điểm nổi bật là có sẵn hệ thống điều khiển phần cứng do nhà sản xuất cung cấp và tốc độ truyền thông của hệ thống máy này là lớn do sử dụng các bus địa chỉ để truyền thông chứ không sử các giao thức mạng thông thường
Trang 19 Máy tính đa xử lý bộ nhớ phân tán
Hình 3.5: Mô hình máy tính song song bộ nhớ phân tán
Máy tính đa xử lý với bộ nhớ phân tán là loại máy tính song song rất phổ biến, loại siêu máy tính này có giá thành rẻ hơn rất nhiều so với máy tính chia
sẻ bộ nhớ có cùng số lượng bộ xử lý vào bộ nhớ Do đó loại máy tính phân tán được sử dụng rất mạnh để nghiên cứu tính toán song song Ngoài ra hiệu năng của chúng cũng rất cao trong những máy tính có mạng truyền thông tốc
độ cao Loại máy tính này còn có ưu điểm là có thể nâng cấp các đời bộ xử lý mới một cách đơn giản với số lượng ít sự biến đổi hệ thống
Do tính linh hoạt và đa dạng của loại hình siêu máy tính này mà người sử dụng phải tự xây dựng hệ thống quản lý phần cứng và các tiến trình giải quyết trên các phần cứng đó
Có nhiều hệ thống giúp ta phần nào công việc quản lý tiến trình trên hệ thống máy này như PVM tuy nhiên không thể quản lý hết do đó người sử dụng phải thâm nhập vào các hệ thống mã nguồn mở này để thay đổi nhằm khai thác hiệu quả cấu hình hệ thống máy tính hiện có
Trang 203.1.2 Kiến trúc mạng tĩnh
Các máy tính trong một hệ thống xử lý song song được kết nối với nhau bằng các đường dẫn trực tiếp từ máy này sang máy khác theo các cấu trúc khác nhau
Hệ thống mạng liên kết các máy tính
Máy tính
Hình 3.6: Hệ thống mạng kết nối từng cặp máy tính với nhau
Các liên kết này được phân bổ theo một mô hình cho trước nhằm sử dụng hiệu quả được các thuật giải truyền thông qua đó giảm bớt thời gian truyền thông và giảm chi phí xây dựng hệ thống khi tiết kiệm được dây dẫn cũng như diện tích của chúng
Sau đây chúng ta sẽ tìm hiểu một vài hệ thống mạng thông dụng trong các hệ thống phân tán
Trang 21- Hệ thống mạng dạng lưới hai chiều
Bộ xử lý
Hình 3.7: Hệ thống mạng dạng lưới hai chiều
Mỗi một máy tính (hay bộ xử lý) được nối với nhau theo mô hình một mảng hai chiều Quản lý dưới dạng này khá đơn giản nhưng chỉ sử dụng được với một lớp các bài toán hai chiều là hiệu quả, các bài toán ba chiều trở lên sử dụng mô hình này khá bất tiện
Trang 22- Hệ thống mạng lập phương:
Hình 3.8 : Hệ thống mạng siêu lập phương ba chiều
Hệ thống mạng lập phương được sử dụng nhiều khi ánh xạ các bài toán phân rã ba chiều Ta sẽ xem xét lớp bài toán được phân rã theo miền để tìm hiểu quá trình ánh xạ bài toán vào các mạng phân tán
Hình 3.9: Phân rã theo miền cho bài toán trong không gian ba chiều
Bài toán phân rã trong không gian ba chiều có thể đơn giản hiểu là mỗi một máy tính thành phần (bộ xử lý) thực hiện một nhiệm vụ Liên kết giữa các nhiệm vụ tương tự liên kết giữa các máy tính trong mạng, lúc này việc ánh xạ tỏ ra đơn giản và hiệu quả
Trang 23- Hệ thống mạng siêu lập phương bốn chiều
Hình 3.10: Hệ thống mạng siêu lập phương bốn chiều
Vậy các bài toán sau khi phân rã các nhiệm vụ có số chiều lớn hơn ba thì sao? Hoặc ta có thể ánh xạ trên các mô hình mạng lưới hai chiều hay lập phương ba chiều như trên, tuy nhiên cách này khá phức tạp do phát sinh các phép toán trước khi truyền thông cũng như tăng chi phí khi không thể truyền trực tiếp trên các máy tính cần và cung cấp dữ liệu Mô hình siêu lập phương được cung cấp nhằm giảm thiểu các quá trình truyền dữ liệu thừa qua đó giảm chi phí truyền thông
3.1.3 Mô hình bó máy tính mô phỏng hệ thống máy tính song song
Mô hình bó máy tính để mô phỏng hệ thống máy tính song song trở nên rất phổ biến vì
- Người sử dụng có thể tiếp cận được với các tính năng ưu việt của tính toán hiệu năng cao với chi phí thấp hơn nhiều so với một cấu hình máy tính song song thực
- Các bộ xử lý đời mới có thể dễ dàng được cập nhật vào nền tảng hệ thống
bó máy tính hiện có để có thể nâng cấp hiệu năng tính toán dễ dàng
Trang 24- Các phần mềm hiện đang sử dụng có thể kế thừa vì kiến trúc bó máy tính gần như vẫn được giữ nguyên
Có hai mô hình bó máy tính thông dụng và hiệu quả được sử dụng hiện nay được mô tả sơ lược theo bảng sau
Bảng 3.1: Một số hệ thống siêu máy tính giá rẻ hiện đang được sử dụng
Bó siêu máy tính có thành phần là các
máy trạm
Bó siêu máy tính Beowulf
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Máy trạm Máy trạm Máy trạm
Bó siêu máy tính
Hình 3.11 : Hệ thống mạng máy trạm
Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút Nút
Hình 3.12: Hệ thống máy tính Beowulf
Các hệ thống bó máy tính trên sử dụng mạng nội bộ tốc độ cao Gigabit để kết nối các máy thành phần Ngoài ưu điểm về tốc độ, các mạng này còn rất dễ dàng trong việc cập nhật thêm các thành phần mới do đó rất dễ dàng trong việc
nâng cấp hệ thống
Trang 253.2 Một số kỹ thuật áp dụng
3.2.1 Ánh xạ thành các tiến trình độc lập
Có hai mô hình ánh xạ trên hai môi trường PVM và MPI, các mô hình này khác nhau lớn nhất ở chỗ, mô hình trên PVM có khả năng cấp phát động số lượng các tiến trình cũng như quản lý, kết thúc các tiến trình trong bất cứ thời điểm nào còn trên môi trường MPI thì không, các tiến trình (kể cả tiến trình chủ) phải đồng thời được khởi tạo và đồng thời kết thúc
Môi trường MPI
Trang 26Môi trường PVM
Tiến trình chủ khởi tạo ra
các tiến trình thực hiện
Tiến trình thực hiện
Dữ liệu khởi tạo
Kết quả nhận được
Hình 3.14 : Lượng tiến trình động, độc lập trên nền PVM
3.2.2 Kỹ thuật chia để trị và truyền thông đồng bộ
- Đồng bộ hóa truyền thông
Đồng bộ hoá truyền thông là quá trình điều tiết các tiến trình thực hiện đồng
bộ với nhau Để tìm hiểu rõ ta sẽ xem xét các tiến trình tính toán song song trên thực tế bằng một phần mềm quản lý tiến trình trên nền PVM
Thời gian
Tính toán Đợi Các hàm truyền thông điệp Thông điệp
Tiến trình 1 Tiến trình 2 Tiến trình 3
Hình 3.15: Mô hình thực hiện của các tiến trình thu được trên nền PVM
Trang 27Rõ ràng các tiến trình tính toán xong ở các thời điểm khác nhau, thời gian rỗi
và thời gian truyền thông cũng lệch nhau nên ta phải đồng bộ hoá các tiến trình
này để có thể thực hiện như sơ đồ sau
Hình 3.16 : Đồng bộ hóa các tiến trình theo thuật giải butterfly sử dụng hàm barrier
Trong từng bước các tiến trình sau khi tính toán và truyền thông phải đợi nhau, tức là đồng bộ hoá các quá trình truyền thông Việc này được thực hiện bằng các hàm barrier trong cả PVM và MPI
- Tính tổng theo giải thuật butterfly và đồng bộ hoá truyền thông
Kỹ thuật tính toán song song phổ biến và hiệu quả nhất là kỹ thuật chia để trị
Kỹ thuật này chi nhỏ bài toán ra thành các phần độc lập nhau, sử dụng truyền thông đồng bộ để đồng bộ hoá quá trình tính toán và truyền thông, qua đó tìm
ra thuật giải để tối thiểu hoá thời gian tính toán Ta sẽ hiểu được kỹ thuật này thông qua thuật giải butterfly tìm tổng của một dãy số
Trang 28Hình 3.17: Tính tổng của 16 số hạng sử dụng giải thuật butterfly
Rõ ràng theo mô hình trên để cộng 16 số hạng ta chỉ cần 3 đơn vị thời gian tính toán và 3 đơn vị thời gian truyền thông thay vì 16 đơn vị thời gian tính toán như trong tính toán tuần tự Đặc biệt kỹ thuật này được sử dụng trong hàm ReduceAll của MPI và PVM Điều này chứng tỏ các thư viện hàm của PVM và MPI đã được tối ưu ở một mức độ nào đó
- Thuật giải tính tổng cho bài toán tính tích phân số bằng xấp xỉ hình thang Như ta đã biết thực chất tích phân của một hàm số là tổng vô hạn của hàm số
đó Do đó để tính tích phân số (giá trị dưới dạng số) trên máy tính ta phải rời rạc hoá miền lấy tích phân rồi cộng các phần lại với nhau Ở đây ta sử dụng phương pháp hình thang Tức là tích phân số bằng tổng diện tích của các hình thang thành phần
Trang 29Hình 3.18 : Tính tích phân số bằng tổng diện tích các hình thang
Sau khi ánh xạ các miền nhỏ cho từng bộ xử lý ta sẽ thực hiện thuật giải lấy tổng butterfly như trên để tính tích phân này
Ví dụ là số pi được tính theo công thức sau: 1 2
0
4dx
1 x
+
∫Rời rạc hoá miền khảo sát ta thu được
Hình 3.19 : Tính số pi theo công thức tổng diện tích hình thang
Cuối cùng công thức tính gần đúng số pi là tổng sau
Trang 30Về bản chất ánh xạ dồn không hoàn toàn là một kỹ thuật tính toán song song
vì thời gian thực hiện một công việc đơn của kỹ thuật này so với tính toán tuần tự là bằng nhau, tuy nhiên trong tính toán song song, rất nhiều thời điểm
có các bộ xử lý rỗi do phải đợi các tiến trình khác cung cấp dữ liệu cho nó, nên đây là một mô hình rất thích hợp để tận dụng các bộ xử lý rỗi này Ngoài
ra kỹ thuật này còn được sử dụng để thực hiện một chuỗi các công việc rất hiệu quả
Tiến trình chủ
Các tiến trình thực hiện
i 1
d
i 1
d
i 1
d
∑Tổng
Hình 3.20: Kỹ thuật tính toán song song pipeline
3.2.4 Kỹ thuật sai phân
Kỹ thuật sai phân được sử dụng để song song hoá các ứng dụng sử dụng phương pháp lưới Phương pháp lưới là phương pháp rất mạnh trong phương pháp số, được sử dụng để giải các phương trình vi phân hay phương trình vi phân đạo hàm riêng rất hiệu quả
[3] đã sử dụng phương pháp lưới để giải bài toán truyền nhiệt một chiều (giải phương trình vi phân đạo hàm riêng cấp 2) Luận văn này chuyển đổi môi trường lập trình và thực hiện giải bài toán truyền nhiệt hai chiều
Trang 31Bài toán truyền nhiệt là phương trình vi phân đạo hàm riêng với các điều kiện biên như hình vẽ
Phóng toĐiều kiện biên
Hình 3.21 : Mô hình hóa bài toán giải phương trình truyền nhiệt hai chiều
Giải phương trình truyền nhiệt bằng phương pháp lưới sử dụng nR x Rn nút Phương pháp lưới sử dụng phép lặp để tính giá trị tại các nút, để tính được giá trị tại nút (i, j) ở lớp k + 1 ta phải biết giá trị tại 4 nút là (i – 1, j), (i +
3.3 Đo hiệu năng của tính toán song song
Trong các chỉ tiêu đánh giá giải thuật song song như thời gian thực hiện giải thuật (gồm thời gian tính toán, thời gian truyền thông, và thời gian trễ), hiệu
Trang 32quả (tính hiệu quả so với giải thuật tuần tự), tính quy mô (hiệu quả tăng theo kích thước của bài toán) và tăng tốc thì yếu tố tăng tốc đóng vai trò chủ đạo
để xác định, lựa chọn thuật giải song song tối ưu cho bài toán
Tăng tốc (SR p R) được định nghĩa là tỷ lệ giảm của thời gian thực hiện song song trên p bộ xử lý so với thời gian thực hiện song song trên một bộ xử lý
1
p
TT
p
Thêi gian thùc hiÖn song song trª n mét bé xö lýS
Thêi gian thùc hiÖn song song víi p bé xö lý (3.3)
Amdahl đã đưa ra công thức của tăng tốc như sau
Hình 3.22 : Mô hình tính toán hệ số tăng tốc
Trang 33CHƯƠNG 4
GIAO THỨC TRUYỀN THÔNG ĐIỆP MPI - MESSAGE PASSING INTERFACE
Giao thức truyền thông điệp MPI (Message Passing Interface) là một tiêu
chuẩn quan trọng và đang được phát triển rất nhanh do MPI tích hợp một hệ thống truyền thông rất linh hoạt và chi phí tài nguyên thấp MPI giúp các nhà khoa học tiếp cận và phát triển một số lượng lớn các lớp ứng dụng kỹ thuật với hiệu quả cao và chi phí thấp
MPI là một hệ thống truyền thông chuẩn và linh hoạt được thiết kế bởi một viện nghiên cứu nhằm thực hiện tính toán song song trên một lớp lớn các
mô hình máy tính song song Mã nguồn của MPI được viết bằng hai phiên bản Fortran và C nên rất thuận tiện cho các nhà khoa học đã sử dụng Fortran
và C là ngôn ngữ trong các nghiên cứu của họ Do MPI là mã nguồn mở nên
đã có rất nhiều các dự án thương mại hoá MPI, phát triển MPI thành các phần mềm thương mại rành cho các mục đích cụ thể Ví dụ Distribution Toolbox
do công ty Mathworks phát triển tích hợp và phần mềm Matlab để thực hiện song song một lớp các phép tính trong Matlab Ngoài ra, các dịch vụ tính toán hiệu năng cao đang được phát triển rất mạnh Người sử dụng muốn giải quyết một bài toán có kích thước lớn có thể mô tả bài toán và gửi đến trang web có dịch vụ tính toán này Trang web này sẽ sử dụng các siêu máy tính để giải bài toán và gửi trả kết quả cho người sử dụng Hầu hết các mô hình tính toán song song đang sử dụng hiện nay đều sử dụng giao thức tính toán MPI là lõi
Trang 34Giao thức MPI là giao thức chuẩn được xây dựng bởi hơn 40 tổ chức ở
Mỹ và Châu Âu Sau 2 năm thống nhất các tiêu chuẩn (1992 – 1994) phiên bản đầu tiên 1.0 được công nhận vào tháng 6 năm 1994 Phiên bản 2.0 hỗ trợ thêm lập trình hướng đối tượng (Fortran 90 và C++) và các giao thức vào ra mới
4.1 Giới thiệu
Truyền thông điệp là mô hình lập trình phổ biến trong các mô hình máy tính song song phân cấp (SPCs - Scalable Parallel Computers) hoặc trong các mạng liên kết các bó máy tính (NOWs - Network of WorkStations) Để tiết kiệm chi phí, một thư viện các hàm truyền thông điệp được tiêu chuẩn hoá đánh dấu sự ra đời của MPI MPI có thể thực hiện được trên các siêu máy tính của IBM, Intel hay mạng các máy tính phân tán Do đó có thể nghiên cứu các ứng dụng song song trên máy tính phân tán (để giảm chi phí) rồi khi ứng dụng
có thể sử dụng trên các siêu máy tính hiện có (hiệu năng lớn hơn) MPI thực hiện ngầm một phần lớn các quá trình truyền thông điệp giữa các bộ xử lý do
đó có giao diện thân thiện với người sử dụng Tính linh hoạt của MPI cho phép thực hiện cùng một mã nguồn trên nhiều cấu hình máy tính song song khác
nhau
MPI thực hiện được trên cả mô hình MIMD (Multi Instruction – Multi
D ata) và đặc biệt là MPMD (Multi Program – Multi Data) Tất nhiên MPI cũng thực hiện được trên cả mô hình SPMD (Single Program – Single Data)
Khác với PVM (Parallel Virtual Machine) hay các môi trường lập trình song song khác, MPI không hỗ trợ quản lý động các tiến trình như tạo hay kết thúc tiến trình
Trang 35MPI hỗ trợ các quá trình truyền thông sau:
- Khởi tạo, quản lý và kết thúc các quá trình truyền thông điệp,
- gửi và nhận các thông điệp từ các cặp tiến trình,
- quản lý, gửi và nhận các thông điệp từ các nhóm tiến trình khác nhau,
- sử dụng các kiểu dữ liệu riêng biệt cho truyền thông
Khi sử dụng MPI, chúng ta cần chú ý MPI không hỗ trợ các kỹ thuật sau:
- Chia sẻ bộ nhớ,
- các công cụ quản lý tiến trình như ngắt, điều độ tiến trình,
- công cụ xây dựng cũng như tìm lỗi khi lập trình,
- quản lý vào ra I/O
4.1.1 Tổng quan về một chương trình MPI
Một chương trình tính toán song song chuẩn MPI2.0 sử dụng ngôn ngữ C++
Hình 4.1: Cấu trúc cơ bản của một chương trình sử dụng giao thức MPI
Trang 364.1.2 Các tập hợp truyền thông
MPI sẽ tự cung cấp một tổ hợp truyền thông cơ bản là
MPI_COMM_WORLD có thể giao tiếp với nhau Người sử dụng có thể chia nhỏ MPI_COMM_WORLD thành các tổ hợp nhỏ hơn như hình vẽ
1
3 0
3 0
2
3
0
1 2
Truyền thông:
MPI_COMM_WORLD
Comm1 Comm2
Hình 4.2: Các tập hợp truyền thông trong MPI
4.1.3 Kiểu dữ liệu trong MPI
Bảng 4.1: Các kiểu dữ liệu điển hình trong giao thức MPI
Kiểu dữ liệu trong MPI Mô tả kiểu dữ liệu tương ứng ngôn ngữ C
MPI_UNSIGNED,
Trang 37MPI_FLOAT Số thực: 4-byte
MPI_DOUBLE,
MPI_UNSIGNED_LONG_LONG Số nguyên không dấu mở rộng: 8-byte
Bảng 4.2: Kiểu dữ liệu tương ứng với các tham số truyền vào các hàm MPI
Kiểu dữ liệu trong MPI Mô tả kiểu dữ liệu tương ứng ngôn ngữ C
MPI_DOUBLE, MPI_LONG_DOUBLE
MPI_SHORT_INT, MPI_LONG_DOUBLE_INT
MPI_LAND (logic AND),
MPI_LOR (logic OR),
MPI_LXOR (logic XOR)
MPI_INT, MPI_LONG, MPI_SHORT, MPI_UNSIGNED_SHORT,
MPI_UNSIGNED, MPI_UNSIGNED_LONG
MPI_BAND (logic nhị phân AND),
MPI_BOR (logic nhị phân OR),
MPI_BXOR (logic nhị phân XOR)
MPI_INT, MPI_LONG, MPI_SHORT, MPI_UNSIGNED_SHORT,
MPI_UNSIGNED,
Trang 38MPI_UNSIGNED_LONG, MPI_BYTE
4.2 Truyền thông từ điểm tới điểm
Đây là quá trình truyền thông cơ bản và đơn giản nhất trong MPI Quá trình này truyền trực tiếp một thông điệp từ một tiến trình tới một tiến trình khác
Tiến trình 0 Đệm dữ liệuKiểu lượngSố Tiến trình 1
Thông điệp
Hình 4.3: Chi tiết mô hình truyền thông điểm tới điểm
Trong MPI, thông điệp gồm biến đệm chứa giá trị cần gửi, kiểu dữ liệu
và số lượng biến cần gửi
Do kiểu dữ liệu là riêng biệt của MPI nên không có các kiểu dữ liệu như mảng một chiều hay hai chiều nên để gửi một mảng trong một gói thông điệp
ta kết hợp 3 thành phần trên
Trang 39Giả sử hai tiến trình phải gửi nhận nhiều lần thì phải phân biệt các lần gửi và nhận trên bằng các thẻ khi gửi Ví dụ tiến trình 0 gửi hai thông điệp có hai biến kiểu số nguyên và kiểu character với hai thẻ là 100 và 101 Khi đó tiến trình 1 nhận thông điệp có thẻ 100 vào biến nguyên và thẻ 101 vào biến
kiểu character
Khi thực hiện truyền thông điểm tới điểm cần tránh tính trạng khoá cứng Tình trạng khoá cứng xảy ra khi 2 tiến trình khoá lẫn nhau khiến chương trình không hoạt động và cũng không thực hiện được việc gửi thông điệp Để giảm xảy ra tình trạng này nhiều ta hạn chế đồng thời đọc và đồng thời ghi trên một
bộ nhớ, cũng như đồng bộ hoá việc truyền thông bằng cách sử dụng các hàm chặn việc gửi và nhận thông điệp
Hàm mặc định trong MPI để gửi từ điểm tới điểm sẽ khoá tiến trình gửi đến khi tiến trình nhận thu được dữ liệu MPI cũng hỗ trợ các hàm gửi chỉ để khởi tạo dữ liệu vào vùng đệm hay gửi mà không khoá tiến trình gửi lại để sử dụng tuỳ vào bài toán cụ thể
Tóm lại ta có 8 hàm thực hiện gửi trong MPI như sau:
Bảng 4.3: Các mô hình gửi thông điệp MPI hỗ trợ
Mô hình gửi Khoá tiến trình gửi Không khoá tiến trình gửi
4.3 Các gói truyền thông
MPI hỗ trợ các gói truyền thông được sử dụng để gửi và nhận giữa một lớp các tiến trình Mặc dù các câu lệnh gửi từ điểm tới điểm của MPI là đủ để sử dụng
Trang 40trong các bài toán nhưng MPI hỗ trợ thêm các hàm để thực hiện nhiều quá trình truyền thông Các hàm này sử dụng các thuật toán tối ưu giữa tính toán
và truyền thông để thu được hiệu quả tính toán cao Chính vì vậy mỗi hàm chỉ được sử dụng với một mục đích cụ thể và để sử dụng được các hàm này ta phải
am hiểu thuật giải truyền thông và tính toán của chúng, qua đó mới truyền
được các tham số chính xác cho chúng
4.3.1 Gói quảng bá truyền thông (MPI_BCAST)
MPI_BCAST thực hiện sao chép dữ liệu từ tiến trình gốc tới cùng vị trí ô nhớ
trong các tiến trình đích
Hình 4.4 : Mô hình quảng bá truyền thông
Tiến trình p0 gửi giá trị A ở vị trí thứ nhất trong bộ nhớ của mình sang các tiến trình p1, p2, p3 và biến A cũng được lưu ở vị trí đầu tiên trong bộ nhớ của các
tiến trình tương ứng
4.3.2 Gói tổng hợp thông điệp (MPI_Reduce)
Hàm MPI_Reduce thực hiện các công việc sau:
Thu nhận các dữ liệu từ các tiến trình,