Tải bản đầy đủ (.pdf) (69 trang)

Song song hoá bước biểu diễn cây bát phân trong thuật toán nhanh giải bài toán n body và tính toán thử nghiệm trên PC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (809.68 KB, 69 trang )

ĐẠI HỌC QUỐC GIA HÀ NỘI
KHOA CÔNG NGHỆ

TÀO THỊ THU PHƯỢNG

SONG SONG HÓA BƯỚC BIỂU DIỄN CÂY BÁT PHÂN TRONG
THUẬT TOÁN NHANH GIẢI BÀI TOÁN N – BODY VÀ TÍNH TOÁN
THỬ NGHIỆM TRÊN PC - CLUSTER

LUẬN VĂN THẠC SỸ

Người hướng dẫn: TS. Nguyễn Hải Châu

Hà nội - 2004


MỤC LỤC
LỜI CẢM ƠN ....................................................................................................... 1
DANH MỤC CÁC TỪ VIẾT TẮT ...................................................................... 2
DANH MỤC BẢNG BIỂU HÌNH VẼ.................................................................. 3
MỞ ĐẦU ............................................................................................................... 4
CHƯƠNG 1. BÀI TOÁN MÔ PHỎNG N-BODY VÀ MÔ HÌNH SONG SONG ............. 6

1.1. Bài toán mô phỏng N-body ............................................................................ 6
1.1.1. Giới thiệu......................................................................................................... 6
1.1.2. Các bước trong quy trình giải bài toán mô phỏng N-body................................. 7

1.2. Các giải pháp tăng tốc độ tính lực cho bài toán mô phỏng N-body ............. 9
1.2.1. Phần cứng đặc biệt........................................................................................... 9
1.2.2. Thuật toán nhanh ........................................................................................... 10
1.2.3. Thuật toán song song ..................................................................................... 12


1.2.4. Giải pháp kết hợp........................................................................................... 15

1.3. Mô hình tính toán hình song song ............................................................... 16
1.3.1. Kiến trúc hệ thống tính toán song song .......................................................... 16
1.3.2. Lập trình song song, các bước thiết kế chương trình song song ...................... 19
1.3.3. Hệ thống PC-Cluster...................................................................................... 21
1.3.4. Giao diện truyền thông điệp MPI ................................................................... 25
CHƯƠNG 2. THUẬT TOÁN KHAI TRIỂN ĐA CỰC NHANH VÀ PHƯƠNG PHÁP
CÂY BÁT PHÂN............................................................................................................ 28

2.1. Thuật toán khai triển đa cực nhanh FMM (Fast Multipole Method) ....... 28
2.1.1. Cơ sở vật lý và toán học................................................................................. 28
2.1.2. Thuật toán FMM............................................................................................ 32
2.1.3. Đòi hỏi song song hóa các thuật toán N-body................................................ 37

2.2. Biểu diễn cây bát phân................................................................................. 37
2.2.1. Biểu diễn cây bát phân ................................................................................... 37
2.2.2. Khóa và Bảng băm......................................................................................... 39

2.3. Cây bát phân tuần tự ................................................................................... 42
2.3.1. Mô tả chương trình ........................................................................................ 42
2.3.2. Kết quả thử nghiệm........................................................................................ 45
CHƯƠNG 3. SONG SONG HÓA CÂY BÁT PHÂN VÀ CÀI ĐẶT THỬ NGHIỆM ..... 47

3.1. Song song hóa thuật toán cây bát phân....................................................... 47
3.1.1. Phân chia dữ liệu ........................................................................................... 47
3.1.2. Xây dựng cây song song ................................................................................ 49
3.1.3. Duyệt cây song song ...................................................................................... 50
3.1.4. Một số giải pháp phân chia dữ liệu (ORB, SFC) ............................................ 55


3.2. Xây dựng chương trình thử nghiệm song song hóa thuật toán.................. 59
3.2.1. Hạ tầng tính toán............................................................................................ 59
3.2.2. Kết quả, đánh giá và so sánh .......................................................................... 59

KẾT LUẬN ......................................................................................................... 63


LỜI CẢM ƠN
Trong suốt thời gian học tập và hoàn thành luận văn, tôi đã may mắn được các
thầy cô chỉ bảo, dìu dắt và được gia đình, bạn bè quan tâm, động viên.
Tôi xin bày tỏ lòng biết ơn sâu sắc tới các thầy cô giáo trong Ban chủ nhiệm,
các thầy cô ở Khoa Công nghệ - ĐHQG Hà Nội, các thầy cô ở Viện Tin học - Trung
tâm Khoa học Tự nhiên và Công nghệ Quốc gia đã truyền đạt những kiến thức vô
cùng quý báu làm tiền đề cho tôi nghiên cứu luận văn này.
Cho phép tôi được gửi lời cảm ơn sâu sắc nhất đến TS.Nguyễn Hải Châu, người
thầy đã rất nhiệt tình chỉ bảo và hướng dẫn tôi trong suốt thời gian hoàn thành luận
văn.
Với tất cả tấm lòng mình, tôi xin bày tỏ lòng biết ơn chân thành đến các thầy,
các anh và các bạn trong bộ môn Các Hệ thống thông tin - Khoa Công nghệ ĐHQG Hà Nội đã dìu dắt và tạo điều kiện thuận lợi cho tôi rất nhiều trong thời gian
học tập và hoàn thành luận văn.
Tôi xin gửi tới TS.Hà Quang Thụy cùng các bạn trong nhóm seminar “Khai phá
dữ liệu và Tính toán song song” lời cảm ơn chân thành vì những ý kiến đóng góp và
những kiến thức quý báu tôi đã tiếp thu được trong suốt thời gian tham gia nghiên
cứu khoa học.
Tôi cũng xin gửi lời cảm ơn tới các thầy và các bạn trong Trung tâm Ứng dụng
Tin học trong Hóa học - Khoa Hóa - Trường Đại học Khoa học Tự nhiên Hà Nội đã
tạo điều kiện máy móc cho tôi chạy thử nghiệm chương trình.
Cuối cùng tôi xin cảm ơn gia đình, bạn bè và tập thể lớp cao học K8T1, những
người đã luôn ở bên cổ vũ và động viên tôi rất nhiều.
Hà Nội, 1/2004

Tác giả

Tào Thị Thu Phượng

1


DANH MỤC CÁC TỪ VIẾT TẮT

Viết tắt
BH
FMM
MAC
MPI
MPMP
MPP
SFC
SMP
SPMP
ORB
VXL

Tiếng Việt
Thuật toán Barnes-Hut
Thuật toán khai triển đa cực
Tiêu chuẩn thừa nhận quyết định
Giao diện truyền thông điệp
Đa chương trình - Đa dữ liệu
Hệ thống xử lý song song dạng khối
Phương pháp đường cong phủ

khoảng trống
Hệ thống đa xử lý đối xứng
Đơn chương trình - Đa dữ liệu
Phương pháp chia đôi đệ quy trực
giao
Bộ vi xử lý

2

Tiếng Anh
Barnes-Hut Algorithm
Fast Multipole Mothod
Decision acceptance criterion
Message Passing Interface
Multiple Program Multiple Data
Massively Parallel Processor
Spacing-Fillong Curve
Symmetric MultiProcessor
Single Program Multiple Data
Orthogonal Recursive Bisection
Microprocessor


DANH MỤC BẢNG BIỂU HÌNH VẼ
Bảng 1 - Thời gian tính lực trực tiếp (chương trình tuần tự).................................. 14
Bảng 2 - Thời gian tính lực trực tiếp (chương trình song song) ............................. 14
Bảng 3 - Thời gian tạo cây bát phân (chương trình tuần tự) .................................. 45
Bảng 4 - Thời gian xây tạo bát phân song song (số BXL=4)................................. 59
Bảng 5 - Thời gian xây tạo bát phân song song (theo BXL, N=2048) ................... 60
Bảng 6 - Tỷ lệ thời gian tạo cây và tổng thời gian trong một bước........................ 60

Hình 1.1 - Thời điểm bắt đầu mô phỏng................................................................ 8
Hình 1.2 - Thời điểm ngay trước khi va chạm....................................................... 8
Hình 1.3 - Thời điểm sau khi va chạm .................................................................. 9
Hình 1.4 - Hệ thống GRAPE ................................................................................ 10
Hình 1.5 - Trọng tâm thích hợp............................................................................. 11
Hình 1.6 - Phân chia N body cho p BXL .............................................................. 13
Hình 1.7 - Truyền thông và tính lực ...................................................................... 14
Hình 1.8 - Biểu đồ thời gian tính lực trực tiếp và song song ................................. 15
Hình 1.9 - Tiến trình đơn luồng và tiến trình đa luồng .......................................... 17
Hình 1.10 - Truyền thông điệp .............................................................................. 18
Hình 1.11 - Thiết kế chương trình song song ........................................................ 21
Hình 1.12 - Kiến trúc máy tính cụm...................................................................... 22
Hình 2.1 - Các tập tách rời.................................................................................... 29
Hình 2.2 - Khai triển đa cực tương ứng xung quanh z0 hội tụ bên trong D2 ........... 31
Hình 2.3 - Xây dựng cây (2 chiều)........................................................................ 33
Hình 2.4 - Cây bát phân độ cao n = 3.................................................................... 38
Hình 2.5 - Biểu diễn cây bát phân ......................................................................... 38
Hình 2.6 - Ví dụ ánh xạ khóa trong không gian 3 chiều ........................................ 39
Hình 2.7 - Minh họa cấu trúc dữ liệu trong cây băm ............................................. 41
Hình 2.8 - Cây bát phân được gán khóa ................................................................ 44
Hình 2.9 - Biểu đồ thời gian tạo cây bát phân (chương trình tuần tự) .................... 45
Hình 3.1 - Sắp xếp dạng khóa Morton (trong không gian 2 chiều) ........................ 48
Hình 3.2 - Sắp xếp dạng khóa Morton (trong không gian 3 chiều). ....................... 48
Hình 3.3 - Sắp xếp dạng khóa Peano-Hilbert (trong không gian 2 chiều) .............. 49
Hình 3.4 - Xây dựng cây song song (trong 2 chiều) .............................................. 50
Hình 3.5 - SFC theo thứ tự Morton trong không gian 2 chiều ............................... 56
Hình 3.6 - SFC theo thứ tự Morton trong không gian 3 chiều ............................... 57
Hình 3.7 - SFC theo thứ tự Hilbert trong không gian 2 chiều................................ 57
Hình 3.8 - SFC theo thứ tự Hilbert trong không gian 3 chiều................................ 57
Hình 3.9 - Phân chia miền sử dụng phương pháp ORB trong không gian 2 chiều . 58

Hình 3.10-Phân chia miền sử dụng phương pháp ORB trong không gian 2 chiều . 58
Hình 3.11-Biểu đồ thời gian xây dựng cây bát phân song song (số BXL=4) ......... 60
Hình 3.12-Biểu đồ thời gian xây dựng cây bát phấn song song (theo BXL, N=2048) .... 60

3


MỞ ĐẦU
Phương pháp mô phỏng xuất hiện từ những năm 1950 nhưng đến những năm
1970, khi các máy tính trở nên mạnh hơn, có nhiều khả năng hơn thì nó mới thực sự
trở nên hữu dụng và phổ biến. Ngày nay các phương pháp mô phỏng càng nhận
được sự quan tâm của các nhà nghiên cứu trong nhiều lĩnh vự nghiên cứu bao gồm
cả các lĩnh vực nghiên cứu về thế giới vĩ mô và thế giới vi mô.
Trong các nghiên cứu về thế giới vĩ mô và thế giới vi mô, mô phỏng hệ N-body
có phạm vi ứng dụng rộng lớn trong lý sinh, hóa học, vật lý,.v.v.. Chẳng hạn trong
vật lý thiên thể: mô phỏng hệ thống các vì sao trong dải ngân hà; trong vật lý thể
plasma: mô phỏng môi trường của hệ thống các ion và electron; trong động lực học
nguyên tử: mô phỏng tĩnh điện học và các lực khác; trong đồ họa máy tính: mô
phỏng dùng cho việc tính ánh sáng thực của hệ thống các điểm chiếu sáng…
Chương trình mô phỏng giữ dấu vết sự thay đổi theo thời gian mỗi vật thể
(hoặc hạt) trong hệ vật chất (hay hạt). Dựa trên trạng thái (vị trí, vận tốc, thế
năng,…) các hạt tại thời điểm T, chương trình mô phỏng tính lực tương tác giữa các
hạt để xác định trạng thái mới của chúng. Quá trình này được thực hiện lặp đi lặp lại
và trả lại vị trí, trạng thái tất cả các hạt tại thời điểm T + δT. Việc tính lực trực tiếp
chi phối hầu hết thời gian (cỡ 90%) trong tất cả các bài toán mô phỏng. Độ phức tạp
thời gian của bài toán là O(N2) trong đó N là số các hạt. Các cách tiếp cận chủ yếu
và hiệu quả để tăng tốc độ tính lực (hấp dẫn hoặc Coulomb) gồm có thuật toán
nhanh, phần cứng tính toán nhanh chuyên dụng và áp dụng các phương pháp tính
toán song song. Một số thuật toán giải quyết bài toán mô phỏng ở trên đã được đề
xuất để giảm thời gian tính toán như thuật toán Barnes-Hut [8][15] với độ phức tạp

O(NlogN), thuật toán FMM [11] với độ phức tạp O(N),…
Luận văn tập trung nghiên cứu phần tạo và duyệt cây bát phân song song ứng
dụng trong bài toán mô phỏng N-body. Phần cài đặt song song hóa chương trình
được thực hiện thông qua cách thức sử dụng thư viện truyền thông điệp MPI trên hệ
thống Linux PC Cluster.
Luận văn gồm những phần chính sau:

4


Chương 1 giới thiệu bài toán mô phỏng N-body, các khó khăn gặp phải và cách
khắc phục các khó khăn này. Một số mô hình song song áp dụng cho tính toán song
song cũng được trình bày. Luận văn cũng giới thiệu một số vấn đề cơ bản nhất về
mô hình MPI trên Linux PC Cluster được dùng để cài đặt thử nghiệm thuật toán
trong luận văn.
Chương 2 trình bày thuật toán FMM cơ sở cho thuật toán chính trong luận văn,
phương pháp biểu diễn cây bát phân, giới thiệu chương trình cài đặt cây bát phân
tuần tự. Một số nhận xét, đánh giá bước đầu được trình bày nhằm chỉ ra tính ưu việt
khi thực hiện song song hóa cây bát phân.
Chương 3 trình bày thực hiện song song hóa cây bát phân. Các giải pháp phân
chia dữ liệu, tạo và duyệt cây bát phân đã được phân tích. Luận văn cũng giới thiệu
những nội dung cơ bản liên quan đến việc cài đặt chương trình thử nghiệm song
song hóa thuật toán. Một số nhận xét, đánh giá bước đầu dựa trên các kết quả thử
nghiệm đã được đưa ra.

5


CHƯƠNG 1. BÀI TOÁN MÔ PHỎNG N-BODY VÀ MÔ HÌNH
SONG SONG

1.1. Bài toán mô phỏng N-body
1.1.1. Giới thiệu
Đoán trước được những diễn biến có thể xảy ra trong tự nhiên (như dự đoán về
sự va chạm của các thiên hà, sự phát triển của các cơn bão…) để kịp có biện pháp
phòng ngừa thiên tai hay biểu diễn những chuyển động của các phần tử trong một
hệ (như các nguyên tử trong một phân tử,…) để phục vụ cho các nghiên cứu cụ thể
trong Hóa học, Vật lý là nhu cầu cần thiết trong cuộc sống hàng ngày cũng như
trong nghiên cứu khoa học. Một cách trực quan, người ta thực hiện tạo ra các hệ
như vậy bằng những công cụ thí nghiệm và gọi công việc đó là mô phỏng.
Do thời gian ước lượng các thuộc tính của các hệ thống vật lý là khó dự đoán
bằng việc phân tích bởi sự phức tạp của hệ thống hoặc đơn giản chỉ bởi số lượng
các body đang phân tích. Một trong các phương pháp mô phỏng đó là hệ vật lý
được mô hình hóa như một tập các body tương tác với các body khác, và có thể tác
động trở lại bên ngoài.
Bài toán mô phỏng N-body là bài toán cho việc mô phỏng sự chuyển động của
một tập các body (các hạt - particles) dưới tác động của lực hấp dẫn hoặc các lực
khác. Từ một trạng thái ban đầu cho trước, dưới tác động của lực tương tác, trạng
thái của các body trong hệ được cập nhật liên tục theo thời gian. Chẳng hạn trong
bài toán mô phỏng sự chuyển động của các phân tử trong một hệ vật chất nào đó: từ
một vị trí ban đầu, các phân tử tương tác với nhau do đó vận tốc và gia tốc thay đổi
nên chúng sẽ chuyển đến các vị trí khác. Cứ như vậy, vị trí của các phân tử trong hệ
liên tục thay đổi. Để thực hiện việc mô phỏng sự chuyển động của các phân tử này,
ta phải xác định và cập nhật liên tục vị trí của chúng trong suốt thời gian mô phỏng.
Bài toán được mô tả như sau:
(1) Cho trạng thái của hệ thống gồm N body tại thời điểm ban đầu T0 :
n1(x1, T0), n2(x2, T0), …, nN(xN, T0)

6



Trong đó ni (i=1,..,N) là các body; xi là các thông tin trạng thái của ni tương ứng
tại thời điểm T0.
Các thông tin trạng thái quan trọng nhất là: vị trí, vận tốc, khối lượng (dùng để
tính lực hấp dẫn); điện tích (dùng để tính lực Coulomb)
(2) Hãy xác định trạng thái của hệ thống tại thời điểm Tj:
n1(x1, Tj), n2(x2, Tj), …, nN(xN, Tj)
Thông thường, nếu không cần chỉ rõ thời điểm, người ta sử dụng cách biểu diễn
n1(x1), n2(x2), …, nN(xN) để trình bày trạng thái của hệ thống.

1.1.2. Các bước trong quy trình giải bài toán mô phỏng N-body
Với bài toán được mô tả như ở trên, đã có nhiều phương pháp được đưa ra
nhằm xác định các thông tin trạng thái của các body trong hệ tại một thời điểm bất
kỳ. Tuy vậy, các bước trong quá trình mô phỏng hệ N-body đều có các điểm chung
như sau:
1. Biểu diễn hệ thống
2. Tính toán năng lượng và lực tương tác giữa các body trong hệ
3. Tính và cập nhật trạng thái (vị trí, vận tốc) của các body trong hệ.
4. Quá trình được tiếp lục lặp đi lặp lại từ bước thứ hai.
Các phương pháp đưa ra hầu hết đều nhằm giảm thời gian tính lực bởi trong cả
quá trình mô phỏng thì giai đoạn này chiếm thời gian là chủ yếu (xấp xỉ 90-95%).
Luận văn tập trung vào giai đoạn tính lực cho bài toán mô phỏng N-body bất kỳ.
Để hình dung bài toán mô phỏng một cách trực quan, chúng ta sẽ xem xét ví dụ
về mô phỏng sự va chạm của hai thiên hà (galaxy) để tạo ra một thiên hà mới sau
đây (tổng số thiên thể là 2048).

7


Hình 1.1 - Thời điểm bắt đầu mô phỏng (t = 0, 0 bước mô phỏng)
Từ hai thiên hà ban đầu (hình 1.1), chúng tiến lại gần nhau và va chạm do tác

động của lực hấp dẫn.

Hình 1.2 - Thời điểm ngay trước khi va chạm (t = 3.937253, số bước mô phỏng
bằng 100)

8


Tại thời điểm bắt đầu va chạm, hai thiên hà đẩy nhau (hình 1.2) nhưng sau một
thời gian ngắn, do lực hấp dẫn nên chúng tiến lại gần nhau và tạo thành một thiên
hà mới (hình 1.3).

Hình 1.3 - Thời điểm sau khi va chạm (t = 7.087056, số bước mô phỏng là 180)
Để mô phỏng các hệ lớn thông thường cần thực hiện rất nhiều bước lặp. Chẳng
hạn như thực hiện mô phỏng hệ thiên hà trong ví dụ, số bước lặp khoảng 10000
bước nên tốn rất nhiều thời gian. Do đó, việc tăng tốc độ tính lực cho bài toán mô
phỏng N-body là một nhu cầu tất yếu.

1.2. Các giải pháp tăng tốc độ tính lực cho bài toán mô phỏng N-body
Với tốc độ phát triển công nghệ nhanh chóng hiện nay, các thông tin và kết quả
tính toán đưa ra càng nhanh càng tốt và tất nhiên là phải chính xác. Để mô phỏng
nhanh hơn và chính xác hơn, một số phương thức để giải quyết vấn đề này đã được
đưa ra: phần cứng đặc biệt, thuật toán nhanh, tính toán song song.

1.2.1. Phần cứng đặc biệt
Sử dụng phần cứng đặc biệt xuất phát từ ý tưởng chế tạo các thiết bị chuyên
dụng giải quyết hiệu quả lớp bài toán riêng nào đó. Hiện nay đã có máy tính đặc
biệt như GRAPE - GRAvity PipE, GRAPE-4,… là một phần cứng đặc biệt

9



[9][10][13][14][20] dùng cho việc tính toán. Một số tác giả đã sử dụng phần cứng
này để tính lực giữa các hạt điện tích. Phần cứng này có khả năng tăng tốc độ tính
toán lực nhanh hơn 100-1000 lần so với máy tính bình thường. Một hệ thống
GRAPE gồm một máy tính bình thường (máy chủ) và một bo mạch GRAPE kết nối
theo giao diện truyền thông. Máy chủ gửi dữ liệu đến GRAPE, sau đó GRAPE tính
toán và trả lại kết quả cho máy chủ (Hình 1.4).
Gửi dữ liệu

Máy chủ

GRAPE
Trả lại kết quả
Hình 1.4 - Hệ thống GRAPE

Chi phí về giá thành cho hệ thống này rất đắt (1 board GRAPE giá khoảng
10000USD (1999)) và vì vậy chưa thật sự phổ biến ở Việt Nam. Hiện nay Viện
Khoa học Kỹ thuật Hạt nhân đã có MDGRAPE-2. Chúng tôi đang xem xét khả
năng triển khai các hệ thống GRAPE mô phỏng N-body trong một số dự án liên kết
(Viện Vật lý, Khoa Hóa-ĐHKHTN,…).

1.2.2. Thuật toán nhanh
Trước đây việc tính lực giữa một tập N body có thể được thực hiện bằng việc
tính trực tiếp lực tương tác F(xi,xj) (i,j = 1,2,…,N ; N là số body) giữa từng cặp body
trong hệ. Hệ được biểu diễn bằng một mảng với mỗi phần tử mảng chứa thông tin
của một body. Độ phức tạp thời gian tính toán của phương pháp này là O(N2). Đối
với những hệ số lượng body rất lớn (cỡ vài chục triệu) thì phương pháp này không
tốt bởi kết quả tính toán quá chậm do đó một số thuật toán hiệu quả hơn đã được đề
xuất với các giải pháp biểu diễn hệ để có thể xấp xỉ các lực giữa các body gần tới

mức tuyến tính về thời gian.
Những thuật toán như vậy là các phương pháp biểu diễn hệ dựa trên cây, dùng
một cấu trúc dữ liệu dạng cây để nhóm các body thành các cụm (cluster). Các
phương pháp này có thể tính lực giữa N body trong thời gian tỷ lệ với O(NlogN)
thậm chí O(N).

10


Thuật toán Barnes-Hut (BH) sử dụng các khái niệm hạng đơn (single-term),
trọng tâm (center-of-mass), xấp xỉ (approximation) [8]. Thuật toán Barnes-Hut tổ
chức tập các body thành dạng cây các cụm. Để giảm thiểu các thao tác, mỗi body
tính lực tương tác với các cụm lớn nhất có thể xấp xỉ được. Độ chính xác xấp xỉ
trọng tâm phụ thuộc vào tỷ lệ giữa bán kính của cụm và khoảng cách từ cụm tới thế
năng được ước lượng. Kết quả sẽ tốt hiệu quả nếu một cụm chỉ có thể được thích
hợp với trọng tâm của nó tới cụm là lớn hơn r/θ trong đó r là bán kính của cụm.
Tham số θ xác định sai số xấp xỉ.
cụm

trọng tâm

body
D

r

Hình 1.5 - Trọng tâm xấp xỉ

Để xây dựng cây, người ta coi hệ N-body được bao quanh bởi một hình vuông
(trong không gian 2 chiều, là hình hộp nếu trong không gian 3 chiều). Việc phân

chia được tính toán đệ quy bằng cách chia ô (khối) ban đầu thành 4 phần (8 phần)
và mỗi phần con đó lại tiếp tục được chia ra cho đến khi không chia được nữa thì
dừng. Mỗi lần chia các ô (khối) ra như vậy, ta thực hiện xây dựng cây tương ứng
bằng việc chèn thêm các node (tương ứng với mỗi ô con được chia) vào trong cây.
Các ô cuối cùng thu được chính là lá của cây cần xây dựng. Mỗi node trong cây BH
biểu diễn một cụm.
Thuật toán BH được tóm tắt như sau:
1. Xây dựng cây BH (như vừa giới thiệu ở trên).
2. Tính trọng tâm (duyệt cây từ dưới lên).
3. Với mỗi body, bắt đầu duyệt từ mức sâu nhất của cây tính và cập nhật gia tốc
của body.
4. Cập nhật vận tốc và vị trí của mỗi body.

11


Để tăng tốc độ tính toán, thuật toán khai triển đa cực nhanh FMM [11] đã được
đề xuất với độ phức tạp tính toán chỉ còn O(N). Chiến lược của thuật toán này là
nhóm các hạt (body) thành các cụm và tính tương tác với những các cụm khác đủ xa
bởi trung tình các khai triển đa cực. Tương tác giữa các hạt gần nhau (trong cùng
một cụm) thì tính trực tiếp.
Thuật toán FMM sẽ được giới thiệu chi tiết hơn trong chương 2.

1.2.3. Thuật toán song song
Việc áp dụng thuật toán nhanh như giới thiệu ở trên đã góp phần tăng tốc độ
tính lực khá nhiều. Tuy nhiên, với những hệ lớn thì công việc tính lực càng đòi hỏi
nhiều thời gian do đó việc song song hóa các thuật toán tuần tự tỏ ra rất hiệu quả
trong việc tăng tốc độ tính lực. Đây là nội dung sẽ được luận văn áp dụng và thảo
luận trong không gian 3 chiều và sẽ được giới thiệu chi tiết ở chương 3.
Xuất phát từ tư tưởng song song thuật toán tính lực trực tiếp, chúng tôi cũng đã

cài đặt thử nghiệm thuật toán và song song hóa thuật toán này để thấy rõ hơn tính
ưu việt của việc song song. Dưới đây là tóm tắt thuật toán tính lực trực tiếp tuần tự,
song song hóa thuật toán và một số kết quả thử nghiệm.
Khái quát chương trình áp dụng thuật toán N-body tính lực trực tiếp tuần tự
gồm những bước chính sau:
(1). Đọc dữ liệu từ file
(2). Tính năng lượng khởi tạo
(3). Cập nhật vị trí của các body
(4). Tính lực tương tác giữa các body để xác định vị trí mới
(5). Lặp lại từ bước (3)
Việc tính lực giữa các body được mô tả ngắn gọn trong đoạn mã dưới:
for(i=0;i{
for(j=0;jTính lực tương tác giữa bodyi và bodyj

12


Cộng dồn lực.
}
Công việc cộng dồn lực được hiểu như sau: từ các lực tương tác của N-1 body
lên một body, ta thực hiện tính tổng các lực đó.
Song song hóa chương trình tính lực trực tiếp tuần tự:
Dữ liệu, thông tin về các body trong hệ sẽ được chia đều cho các BXL trong hệ
thống. Giả sử ta có p BXL, khi đó thông tin về các body sẽ được chia cho mỗi BXL
như sau:
-

Số body chia cho BXL(0) là: N0 = N/p + N%p


-

Số body chia cho BXL(i) là: Ni = N/p
x0

x0

.. xN0-1

BXL(0)

x1


.

..

(i=1,…,p-1)

..

..

..

xN-2 xN-1

xN0


..

xNi-1


.

BXL(i)

xNj

..

xN(p-1)-1

BXL(p-1)

Hình 1.6 – Phân chia N body cho p BXL

Mỗi BXL lưu thông tin về khối lượng, vị trí, vận tốc của các body mà nó được
phân cho. Độ dài của mảng phụ thuộc vào số body được phân cho BXL đó.
Chương trình vẫn thực hiện như mô tả ở trên nhưng tại bước (4), có một chút
sửa đổi. Thay vì gọi trực tiếp hàm tính lực tương tác giữa các body, chương trình
thực hiện truyền thông giữa các BXL. Mỗi BXL gửi các mảng thông tin về các
body của nó tới tất cả các BXL khác trong hệ thống (sử dụng hàm MPI_Bcast). Mỗi
BXL sau khi tính lực tương tác giữa từng cặp hạt trong mảng thông tin các hạt của
nó, BXL đó nhận các mảng thông tin các hạt từ các BXL khác và bắt đầu tính lực
tương tác giữa từng cặp hạt của nó với các hạt mới nhận về.


13


BXL
(0)

BXL
(0)





BXL
(i)

BXL
(i)





BXL
(p-1)

BXL
(p-1)

Nhận DL

Tính lực và
cộng dồn

Hình 1.7 - Truyền thông và tính lực

Chúng tôi đã cài đặt chương trình tuần tự và song song cho thuật toán tính lực
trực tiếp đơn giản trên đây. Dưới đây là một số kết quả chạy thử nghiệm.
a, Kết quả thử nghiệm chương trình tuần tự về mối quan hệ giữa thời gian tính
toán với số lượng body trong hệ:
Số body (k)

Thời gian (s)

8

19.59381

16

89.38363

32

346.09861

64

1426.81811

128


5537.25120

256

22829.62748

Bảng 1 - Thời gian tính lực trực tiếp (chương trình tuần tự)

b, Kết quả thử nghiệm tương ứng đối với chương trình song song cài đặt trên hệ
Linux PC-Cluster với 8 máy:
Số body (k)

Thời gian (s)

8

3.03124

16

12.46021

14


32

47.08925


64

168.1479

128

764.41283

256

3062.3806

Bảng 2 - Thời gian tính lực trực tiếp (chương trình song song)

Hình 1.8 - Biểu đồ thời gian tính lực trực tiếp tuần tự và song song

Chương trình thử nghiệm chỉ chạy với số bước (step) là 1 nhưng trong bài toán
mô phỏng N-body thực tế, để có thể thu được kết quả tốt thì yêu cầu số bước lớn
hơn nhiều. Cụ thể, với bài toán mô phỏng sự chuyển động của các phân tử trong
một hệ nào đó hoặc mô phỏng sự chuyển động của các thiên thể trong thiên hà đòi
số bước lặp lên đến 10000 bước, thậm chí nhiều hơn. Từ các kết quả thu được ở
trên cho thấy số body càng lớn thì thuật toán song song càng tỏ ra hiệu quả bởi thời
gian tính lực giảm rất nhiều so với thuật toán tuần tự.

1.2.4. Giải pháp kết hợp
Một hướng nghiên cứu gần đây [2][3][5][6][19][21] giải quyết bài toán N-body
dựa trên phương pháp kết hợp song song hóa thuật toán nhanh và có thể dựa trên
các phần cứng tính toán đặc biệt. Tốc độ hoạt động thuật toán đã tăng nhanh đáng
kể.


15


Luận văn đi theo hướng giải quyết này, trong đó áp dụng phương pháp xây
dựng cây bát phân song song [12] để giải quyết một phần trong bài toán mô phong
N-body trong không gian 3 chiều, cụ thể là bước duyệt cây để tính khai triển địa
phương trong thuật toán FMM. Nội dung chi tiết nghiên cứu của luận văn về giải
pháp kết hợp có trong chương 2 và chương 3.

1.3. Mô hình tính toán hình song song
1.3.1. Kiến trúc hệ thống tính toán song song
Qua nhiều thế hệ khác nhau, kiến trúc máy tính cũng có nhiều cải tiến nhằm tăng
sức mạnh tính toán và xử lý. Cải tiến về kiến trúc nhằm tăng cường khối lượng công
việc được thực hiện trong một chu kỳ lệnh, còn cải tiến về công nghệ nhằm giảm
thời gian cần thiết cho một lệnh.
Mặc dù hiện nay các máy tính đơn xử lý có khả năng tính toán cao, có thể thực
hiện hàng trăm triệu phép tính trong 1 giây song vẫn chưa đủ nhanh để phục vụ cho
các bài toán đòi hỏi việc đưa ra kết quả nhanh như các bài toán ứng dụng trong các
lĩnh vực Vật lý, Hóa học, Xử lý ảnh,… Sự cải tiến về kỹ thuật (phần cứng) đều có
giới hạn, thật may ý tưởng về kiến trúc song song nhằm kết hợp sức mạnh tính toán
của nhiều máy tính trong một mạng cục bộ đã được đưa ra và được áp dụng khá phổ
biến hiện nay. Các máy tính song song không những tính toán nhanh mà còn có khả
năng chịu hỏng hóc tốt và chi phí giá thành thấp.
Mục tiêu của lập trình song song là tận dụng tất cả khả năng của các VXL nhằm
giảm thời gian thực hiện của chương trình. Hiện nay, không có một môi trường
đồng nhất về cả phần cứng lẫn phần mềm cho tính toán song song mà hầu hết mỗi
tổ chức nghiên cứu, mỗi tập đoàn lại đưa ra một mô hình riêng. Do đó, người phát
triển phần mềm cũng phải tuân theo từng phần cụ thể để tối ưu hóa chương trình
của mình. Luận văn xin giới thiệu một số mô hình [18] khá phổ biến hiện nay:
Dựa trên kiến trúc đa xử lý đối xứng SMP (Symmetric MultiProcessors):

Kiến trúc đa xử lý đối xứng (SMP) chia sẻ tài nguyên hệ thống như bộ nhớ, hệ
thống con vào ra (I/O subsystem). Các bộ vi xử lý (VXL) trong kiến trúc này bình
đẳng với nhau và hoạt động tương đối độc lập. Hệ thống này có một cơ chế đảm

16


bảo dữ liệu trong cache và một bộ nhớ chung là đường bus hoặc thanh chuyển
(crossbar switch).
Tiến trình đa luồng (multi-threaded process) tỏ ra phù hợp với kiến trúc đa xử lý
đối xứng vì các luồng thuộc một tiến trình có thể chia sẻ các tài nguyên của tiến
trình đó. Có thể viết một chương trình đa luồng (multi-threaded program) bằng cách
sử dụng thư viện pthreads tuân theo chuẩn POSIX hoặc dựa vào một trình biên dịch
song song có khả năng sinh ra chương trình đa luồng. Cách đầu phụ thuộc nhiều
vào người lập trình vì họ phải xác định được đoạn chương trình nào cần thực hiện
đa luồng. Đây là công việc khó khăn nhưng đem lại kết quả cao hơn bởi người lập
trình có thể kiểm soát và tối ưu hóa chương trình. Ngược lại, quá trình biên dịch ra
chương trình đa luồng ở cách thứ hai có thể trong suốt với người lập trình. Nếu phải
can thiệp, người lập trình chỉ cần gợi ý cho trình biên dịch đoạn nào trong chương
trình có thể song song được bằng cách chèn vào mã nguồn một số chỉ dẫn. Do tự
động sinh mã nên chương trình đa luồng viết theo cách này không thể tối ưu và dễ
kiểm soát như cách đầu.

P2
P3
P4

Multi-thread
time


time

Single thread
S1

S1
fork

P1
S6

P2
join

P5
S6

P3

Shared address space
process

process
Hình 1.9 - Tiến trình đơn luồng và tiến trình đa luồng

17

P4



Dựa trên kiến trúc xử lý song song dạng khối MPP (Massively Parallel Processors)
với mỗi node là đơn bộ vi xử lý:
Kiến trúc xử lý song song dạng khối (MPP) gồm các node được liên kết với
nhau nhờ một hệ thống mạng tốc độ cao. Mỗi node lại chứa các bộ VXL, bộ nhớ, hệ
thống con vào ra. Hệ điều hành hoạt động riêng rẽ trên từng node nên có thể xem
mỗi node là một trạm xử lý độc lập (workstation). Tuy gọi là hệ thống xử lý khối
nhưng không bắt buộc số node phải nhiều. Mỗi node trong kiến trúc này có thể là
một hệ thống đơn bộ VXL (uniprocessor) hoặc một hệ thống đa xử lý đối xứng.
Nếu node không chia sẻ không gian bộ nhớ, tiến trình song song phải truyền dữ
liệu qua mạng để truy cập dữ liệu của các tiến trình khác. HPF (High Performance
Fortran) thường được dùng để viết chương trình dạng này, nhưng nó cũng không
thể mềm dẻo và hiệu quả như các tiến trình chia sẻ bộ nhớ khác.

P2
P3

Message - passing
S1
S1

S1
time

time

Send
S1

S1


P1

P2

P3

P4

S6

S6

S6

S6

Process 0
Node 1

Process 1
Node 2

Process 2
Node 3

Process 3
Node 4

P4
P5

S6

Data transmission over interconnection
process
Hình 1.10 - Truyền thông điệp

Mô hình này phù hợp để cài đặt thử nghiệm trong luận văn..
Dựa trên kiến trúc xử lý song song dạng khối với mỗi node là một hệ thống đa xử lý
đối xứng - kiến trúc lai (Hybrid MPP):
Kiến trúc lai giữa dạng kiến trúc xử lý song song dạng khối (MPP) và xử lý đối
xứng (SMP). Trong kiến trúc này, có một số mô hình chương trình như

18


-

Nhiều tiến trình đơn luồng cho mỗi node: Trong mô hình này, người lập trình có
thể sử dụng các chương trình song song viết cho dạng dựa trên kiến trúc song
song dạng khối MPP. Chỉ cần tăng số tiến trình trên mỗi node cho tương ứng
với số bộ VXL mà từng node đó chứa. Các tiến trình chạy trên cùng một node
vẫn áp dụng cơ chế truyền thông điệp để trao đổi dữ liệu. Tất nhiên, các thông
điệp truyền cho nhau trên cùng một node hiệu quả hơn vì chúng có độ trễ thấp.

-

Một tiến trình đa luồng cho mỗi node: Mô hình đơn luồng cho mỗi node có một
số nhược điểm là hai tiến trình thực hiện trên cùng một node cũng phải truyền
thông với nhau bằng cơ chế truyền thông điệp. Chúng ta có thể thiết kế chương
trình đa luồng cho phép truyền thông với nhau bằng cơ chế chia sẻ bộ nhớ khi

cùng thực hiện trên cùng một node và truyền thông điệp cho nhau khi thực hiện
trên các node khác nhau.

Mô hình chương trình SPMD và MPMD:
-

Mô hình chương trình đơn chương trình đa dữ liệu SPMD (Single Program
Multiple Data): Chỉ có một chương trình duy nhất và các tiến trình của nó thực
hiện cùng mã máy nhưng thao tác trên các tập dữ liệu khác nhau. Luận văn sẽ áp
dụng mô hình chương trình này trong phần cài đặt thử nghiệm.

-

Mô hình chương trình đa chương trình đa dữ liệu MPMD (Multiple Programs
Multiple Data): dùng các chương trình khác nhau cho các tiến trình, nhưng các
tiến trình cùng cộng tác để giải quyết cùng một bài toán.

1.3.2. Lập trình song song, các bước thiết kế chương trình song song
Không có công thức nào đơn giản cho việc thiết kế thuật toán song song. Phần
lớn các bài toán lập trình có thể có nhiều giải pháp để thực hiện song song. Mặc dù
vậy, giải pháp song song tốt nhất được xuất phát từ các thuật toán tuần tự [1], [23].
Phương pháp này gồm có 4 giai đoạn riêng:
-

Phân rã (partitioning)

-

Truyền thông (communication)


19


-

Tổng hợp (agglomeration)

-

Ánh xạ (mapping).

Hai giai đoạn đầu hướng tới trình bày các thuật toán đồng thời và mở rộng, và
hai giai đoạn cuối tập trung vào tính địa phương và các yếu tố liên quan đến hiệu
quả. Bốn giai đoạn được minh họa trong hình vẽ ở dưới và có thể tóm tắt:
-

Phân rã (Partitioning): Phân rã các hoạt động tính toán và dữ liệu nó thao tác
thành nhiều tác nhiệm (task) nhỏ. Có hai cách tiếp cận chính: phân tích dữ
liệu kết hợp với bài toán là phân rã miền/dữ liệu (domain/data
decomposition) và phân tích việc tính toán thành các tác nhiệm tách rời là
phân tích chức năng (functional decomposition).

-

Truyền thông (Communications): Tập trung vào thông tin và sự hợp tác giữa
các tác nhiệm được tạo trong giai đoạn phân rã. Trạng thái tự nhiên của bài
toán và phương pháp phân tích xác định kiểu truyền thông giữa các tác
nhiệm hợp tác này của một chương trình song song. Bốn kiểu truyền thông
thường


dùng

trong

lập

trình

song

song

là:

local/global,

structured/unstructured, static/dynamic, và synchronous/asychronous.
-

Tổng hợp (Agglomeration): Trong giai đoạn này quá trình thiết kế thuật toán
song song sẽ cụ thể hơn. Các cơ chế phân rã và truyền thông được xem xét
để thuật toán được thực hiện một cách hiệu quả trên một lớp các máy tính
song song cụ thể. Đặc biệt trong giai đoạn này tính hiệu năng của việc kết
hợp một số tác nhiệm nhỏ thành số ít các tác nhiệm lớn hơn cũng như khả
năng nhân bản dữ liệu và tính toán được xét đến

-

Ánh xạ (Mapping): Chính xác là việc gán mỗi tác nhiệm cho một bộ xử lý để
nó thực hiện. Mục tiêu của thuật toán ánh xạ là tăng tối đa việc sử dụng tiện

ích của tài nguyên hệ thống (như CPU) trong khi giảm thiểu chi phí truyền
thông.

20


Hình 1.11 - Thiết kế chương trình song song

1.3.3. Hệ thống PC-Cluster
Máy tính cụm và cấu trúc
Một cụm (Cluster) là dạng hệ thống song song hoặc phân tán bao gồm một tập
hợp các máy tính riêng lẻ kết nối liên thông làm việc cùng nhau như một máy đơn,
tài nguyên tính toán hợp thành một thể thống nhất.
Một node máy tính có thể là một hệ thống đơn hoặc đa xử lý (PC, Workstation
hoặc SMP) với bộ nhớ, hệ thống vào ra thuận lợi, và một hệ thống thao tác. Một
cụm sinh ra từ hai hoặc nhiều máy tính (node) kết nối với nhau. Các node có thể tồn
tại trong một dạng đơn hoặc được tách rời và kết nối theo mạng LAN. Một cụm kết

21


nối liên thông (dựa trên LAN) các thành phần có thể xuất hiện như một hệ đơn đối
với người sử dụng và các ứng dụng. Như một hệ thống có thể cung cấp một cách
hiệu quả chi phí cho các đặc tính các lợi ích (các dịch vụ nhanh và đáng tin cậy) mà
được tìm thầy chỉ trên các hệ thống bộ nhớ chia sẻ độc quyền đắt đỏ.
Cụm hỗ trợ các đặc tính sau liên quan đến chi phí thấp:
-

Hiệu năng cao (High Performance)


-

Tính mở rộng và thay đổi (Expandability and Scalability)

-

Thông lượng cao (High Throughput)

-

Tính sẵn dùng cao (High Availability)

Kiến trúc thông thường của một cụm như trong hình.

Parallel Applications
Sequential Applications

Parallel Programming Environments

Cluster Middleware
(Single System Image and Availability Infrastructure)
PC/Workstatoin

PC/Workstatoin

PC/Workstatoin

PC/Workstatoin

PC/Workstatoin


Comm. S.W

Comm. S.W

Comm. S.W

Comm. S.W

Comm. S.W

Net. Interface HW

Net. Interface HW

Net. Interface HW

Net. Interface HW

Net. Interface HW

High Speed Network/Switch

Hình 1.12 - Kiến trúc máy tính cụm

• Phân loại cụm:
Các cụm được phân loại thành nhiều kiểu dựa trên các yếu tố và dấu hiệu sau:
-

Mục đích ứng dụng (Application Target) - Khoa học tính toán hay các ứng

dụng
o High Performance (HP) Clusters
o High Availability (HA) Clusters

22


-

Quyền sở hữu node (Node Ownership) - Sở hữu bởi riêng lẻ hoặc chuyên
dụng như một node cụm
o Các cụm chuyên dụng
o Các cụm không chuyên dụng

-

Phần cứng node (Node Hardware) – PC, Workstation, hoặc SMP
o Các cụm PC (CoPs) hoặc các loạt PC (PoPs)
o Các cụm hoặc các trạm làm việc (COWs)

-

Hệ thống thao tác node (Node Operating System) – Linux, NT, Silaris,
AIX,…
o Linux Clusters (ví dụ: Beowulf)
o Solaris Clusters (ví dụ: Berkeley NOW)
o NT Cluster (ví dụ: HPVM)
o AIX Clusters (ví dụ: IBM SP2)
o Digital VMS Clusters
o HP-UX Clusters

o Microsoft Wolfpack Clusters

-

Sự thiết lập node (Node Configuraton) - Kiến trúc node và kiểu hệ điều hành
nó được tải cùng
o Homogeneous Clusters: tất cả các node có kiến trúc giống nhau và
chạy cùng hệ điều hành.
o Heterogeneous Clusters: tất cả các node sẽ có kiến trúc khác nhau và
chạy các hệ điều hành khác nhau

-

Các mức cụm (Levels of Clustering) - Dựa trên sự định vị của cac node và số
lượng của chúng.
o Group Cluster (số node từ 2-99): các node được kết node bởi SANs
(System Area Networks)
o Departmental Clusters (số node từ 10-100)

23


×