Khóa luận Nghiên cứu hệ thống cụm máy tính xử lý song song Rocks và ứng dụng
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Ngọc Linh
NGHIÊN CỨU HỆ THỐNG
CỤM MÁY TÍNH XỬ LÝ SONG SONG
ROCKS
VÀ ỨNG DỤNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2010
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƢỜNG ĐẠI HỌC CÔNG NGHỆ
Bùi Ngọc Linh
NGHIÊN CỨU HỆ THỐNG
CỤM MÁY TÍNH XỬ LÝ SONG SONG
ROCKS
VÀ ỨNG DỤNG
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hƣớng dẫn: TS. Nguyễn Trí Thành
HÀ NỘI - 2010
LỜI CẢM ƠN
Trƣớc hết, tôi xin bày tỏ lòng kính trọng và biết ơn sâu sắc tới Tiến sỹ Nguyễn Trí Thành,
ngƣời đã trực tiếp giảng dạy và tận tình giúp đỡ tôi trong quá trình làm khóa luận.
Tôi xin chân thành cảm ơn toàn thể các thầy cô giáo trƣờng Đại học Công nghệ - Đại học
Quốc gia Hà Nội đã tận tình chỉ bảo, dạy dỗ tôi trong suốt 4 năm học vừa qua.
Tôi xin chân thành cảm ơn thƣ viện Đại học Quốc gia Hà Nội, thƣ viện Hội sinh viên
trƣờng Đại học Công nghệ - Đại học Quốc gia Hà Nội đã giúp đỡ tôi rất nhiều tài liệu
quý báu trong quá trình học tập và nghiên cứu.
Cuối cùng, tôi xin chân thành cảm ơn gia đình và bạn bè, những ngƣời đã luôn động viên,
giúp đỡ tôi trong học tập cũng nhƣ trong cuộc sống.
i
TÓM TẮT NỘI DUNG
Tài liệu này giới thiệu sơ lƣợc về công nghệ xử lý song song nói chung và công
nghệ xử lý song song phân cụm nói riêng, sau đó tập trung nghiên cứu một hệ thống cụm
máy tính xử lý song song tiêu biểu: Rocks. Các nội dung chính đƣợc trình bày là: Các
kiến trúc xử lý song song SISD, SIMD, MISD, MIMD (theo phân loại của Flynn), cùng
các hệ thống tính toán đa nhân, các hệ thống đa xử lý đối xứng, các hệ thống tính toán
lƣới, tính toán cụm và các hệ thống xử lý song song cực lớn (Chƣơng 2); giới thiệu tổng
quan về kiến trúc và thành phần của hệ thống Rocks, hƣớng dẫn cài đặt, nghiên cứu kiến
trúc hệ thống và cách quản trị (Chƣơng 3); hƣớng dẫn lập trình MPI căn bản, phƣơng
pháp xây dựng ứng dụng MPI để đạt hiệu quả cao, tận dụng đƣợc tài nguyên hệ thống
(Chƣơng 4);
Chƣơng 5 của khóa luận trình bày chi tiết một ứng dụng xử lý song song tiêu biểu,
cùng cách thức thiết lập môi trƣờng và hƣớng dẫn biên dịch.
Phần cuối của tài liệu có trình bày 4 phụ lục, xem nhƣ là các nội dung mở rộng cho
những phần đã trình bày trong các chƣơng.
ii
MỤC LỤC
LỜI CẢM ƠN ........................................................................................................................................i
TÓM TẮT NỘI DUNG........................................................................................................................ii
MỤC LỤC........................................................................................................................................... iii
DANH MỤC BẢNG BIỂU ...............................................................................................................vii
DANH MỤC HÌNH VẼ................................................................................................................... viii
CHƢƠNG 1. GIỚI THIỆU..................................................................................................................1
CHƢƠNG 2. CÁC KIẾN TRÚC VÀ CÁC HỆ THỐNG XỬ LÝ SONG SONG...........................4
2. 1.
2. 1. 1.
2. 1. 2.
Các kiến trúc xử lý song song...........................................................................................4
SISD............................................................................................................................6
SIMD ..........................................................................................................................7
MISD ..........................................................................................................................7
MIMD .........................................................................................................................8
2. 1. 3.
2. 1. 4.
2. 2.
2. 2. 1.
2. 2. 2.
2. 2. 3.
Các hệ thống xử lý song song...........................................................................................8
Các hệ thống tính toán đa nhân.................................................................................8
Các hệ thống đa xử lý đối xứng ................................................................................9
Các hệ thống tính toán phân tán..............................................................................10
2. 2. 3. 1. Các hệ thống tính toán lƣới...............................................................................10
2. 2. 3. 2. Các hệ thống xử lý song song cực lớn .............................................................12
2. 2. 3. 3. Các hệ thống tính toán cụm ..............................................................................12
iii
CHƢƠNG 3. HỆ THỐNG ROCKS ..................................................................................................16
3. 1. Giới thiệu..........................................................................................................................16
3. 1. 1.
3. 1. 2.
3. 1. 3.
3. 2.
3. 2. 1.
3. 2. 2.
3. 2. 3.
3. 3.
3. 3. 1.
3. 3. 2.
3. 3. 3.
3. 4.
3. 4. 1.
3. 4. 2.
3. 4. 3.
Tổng quan.................................................................................................................16
Kiến trúc của HPC Cluster sử dụng Rocks ............................................................17
Rocks và Rolls..........................................................................................................18
Cài đặt...............................................................................................................................20
Cấu hình....................................................................................................................20
Cài đặt frontend........................................................................................................20
Cài đặt hàng loạt các compute node .......................................................................24
Kiến trúc hệ thống ...........................................................................................................25
Quy tắc đặt tên của Rocks .......................................................................................25
Về cơ sở dữ liệu cluster ...........................................................................................28
Về sơ đồ cơ sở, file cơ sở và quá trình cài đặt một compute node .......................34
Quản trị.............................................................................................................................39
Tổng quan.................................................................................................................39
Frontend quản trị cluster nhƣ thế nào? ...................................................................40
Các tác vụ quản trị cơ bản .......................................................................................43
3. 4. 3. 1. Cài đặt lại một compute node trong lần boot PXE tiếp theo ..........................43
3. 4. 3. 2. Xem và thay đổi các cấu hình mạng ................................................................48
CHƢƠNG 4. LẬP TRÌNH SONG SONG VỚI MPI .......................................................................50
4. 1.
4. 1. 1.
4. 1. 2.
Các mô hình lập trình song song ....................................................................................50
Mô hình bộ nhớ chia sẻ ...........................................................................................50
Mô hình đa luồng.....................................................................................................51
iv
4. 1. 3.
4. 1. 4.
Mô hình truyền thông điệp ......................................................................................52
Mô hình song song dữ liệu ......................................................................................53
4. 2.
4. 2. 1.
4. 2. 2.
Các ƣu điểm của mô hình truyền thông điệp .................................................................54
Phổ biến....................................................................................................................54
Khả năng mô tả ........................................................................................................54
Dễ gỡ lỗi hơn............................................................................................................55
Hiệu năng..................................................................................................................55
4. 2. 3.
4. 2. 4.
4. 3.
4. 4.
4. 5.
4. 6.
4. 7.
4. 8.
4. 9.
Giới thiệu về MPI ............................................................................................................55
Mục tiêu của MPI ............................................................................................................56
Các đặc điểm của MPI ....................................................................................................56
Khác biệt giữa các bản cài đặt bằng C và C++ của MPI...............................................58
MPI trên Rocks................................................................................................................58
Viết chƣơng trình Hello World.......................................................................................59
Các hàm MPI cơ bản .......................................................................................................64
4. 8. 1.
4. 8. 2.
Hàm MPI_Init......................................................................................................64
Hàm MPI_Finalize............................................................................................65
Hàm MPI_Comm_size .........................................................................................65
Hàm MPI_Comm_rank .........................................................................................65
4. 8. 3.
4. 8. 4.
4. 10. Giá trị trả về của các hàm MPI .......................................................................................66
4. 11. Về các khái niệm Nhóm, Ngữ cảnh và Bộ liên lạc........................................................66
4. 12. Liên lạc giữa các tiến trình..............................................................................................67
4. 13. Xây dựng một ứng dụng tự trị ........................................................................................70
v
4. 14. Về mối quan hệ giữa kích thƣớc bài toán và chi phí tính toán .....................................75
4. 15. Phƣơng hƣớng xây dựng một ứng dụng MPI ................................................................77
CHƢƠNG 5. CÀI ĐẶT THỬ NGHIỆM ỨNG DỤNG TRÊN HỆ THỐNG ROCKS..................78
5. 1.
5. 2.
5. 3.
5. 4.
Thiết lập môi trƣờng........................................................................................................78
Mã nguồn ứng dụng.........................................................................................................79
Biên dịch và chạy ứng dụng............................................................................................86
Kết quả thử nghiệm .........................................................................................................86
CHƢƠNG 6. KẾT LUẬN..................................................................................................................89
PHỤ LỤC 1. SƠ LƢỢC VỀ CÁCH PHÁT TRIỂN ROLL MỚI ...................................................90
PHỤ LỤC 2. LIÊN LẠC GIỮA CÁC TIẾN TRÌNH MPI..............................................................99
PHỤ LỤC 3. SỬ DỤNG MPI ĐỂ TÍNH TÍCH PHÂN.................................................................102
PHỤ LỤC 4. SỬ DỤNG MPI ĐỂ TÍNH TOÁN SỐ PI ................................................................104
TÀI LIỆU THAM KHẢO................................................................................................................109
vi
DANH MỤC HÌNH VẼ
Hình 1 – Các lĩnh vực ứng dụng của xử lý song song........................................................................2
Hình 2 - SISD........................................................................................................................................4
Hình 3 - SIMD ......................................................................................................................................5
Hình 4 - MISD ......................................................................................................................................5
Hình 5 - MIMD.....................................................................................................................................6
Hình 6 – Xử lý đƣờng ống 5 giai đoạn................................................................................................6
Hình 7 – Mô hình bộ xử lý 2 nhân.......................................................................................................9
Hình 8 - SMP ........................................................................................................................................9
Hình 9 – Mô hình lƣới tính toán ........................................................................................................11
Hình 10 - MPP ....................................................................................................................................12
Hình 11 – Thống kê về kiến trúc của 500 siêu máy tính..................................................................13
Hình 12 – Mô hình của HPC Cluster.................................................................................................14
Hình 13 – Rockstar cluster.................................................................................................................15
Hình 14 – Kiến trúc của Rocks..........................................................................................................17
Hình 15 – Một báo cáo sinh bởi Ganglia ..........................................................................................19
Hình 16 – Màn hình khởi động..........................................................................................................21
Hình 17 – Lựa chọn Roll (1)..............................................................................................................22
Hình 18 – Lựa chọn Roll (2)..............................................................................................................23
Hình 19 - Phân chia ổ.........................................................................................................................24
Hình 20 – Lựa chọn appliance type...................................................................................................25
Hình 21 – Vai trò trung tâm của cơ sở dữ liệu SQL.........................................................................29
viii
Hình 22 – Thao tác trực tiếp với cơ sở dữ liệu cluster .....................................................................32
Hình 23 – Minh họa trực quan một phần của sơ đồ cơ sở ...............................................................35
Hình 24 – Quá trình sinh file cơ sở ...................................................................................................36
Hình 25 – Nhận diện appliance mới..................................................................................................37
Hình 26 – Đã thêm appliance vào cơ sở dữ liệu...............................................................................37
Hình 27 – Đã yêu cầu thành công file cơ sở .....................................................................................38
Hình 28 – File cơ sở ...........................................................................................................................39
Hình 29 – Các node trong cluster ......................................................................................................40
Hình 30 – Tạo cặp khóa private, public trong lần đầu khởi động terminal ....................................41
Hình 31 – SSH tới compute-0-0 ........................................................................................................42
Hình 32 – Giá trị tham số action với các node trong cluster............................................................43
Hình 33 – Các bootaction hiện có......................................................................................................44
Hình 34 – Thêm bootaction................................................................................................................45
Hình 35 – Các thuộc tính của node compute-0-0 .............................................................................46
Hình 36 – Thay đổi giá trị tham số installaction...............................................................................46
Hình 37 – Giá trị tham số installaction thay đổi...............................................................................47
Hình 38 – Loại bỏ một bootaction.....................................................................................................48
Hình 39 – Xem các cổng ethernet......................................................................................................49
Hình 40 – Mô hình bộ nhớ chia sẻ.....................................................................................................51
Hình 41 – Mô hình đa luồng..............................................................................................................52
Hình 42 – Mô hình truyền thông điệp ...............................................................................................53
Hình 43 – Mô hình song song dữ liệu ...............................................................................................54
Hình 44 – MPI trên Rocks .................................................................................................................59
ix
Hình 45 – Output của chƣơng trình Hello World (1) .......................................................................61
Hình 46 – Output của chƣơng trình Hello World (2) .......................................................................62
Hình 47 – Output của chƣơng trình Hello World (3) .......................................................................63
Hình 48 – Output của chƣơng trình Hello World (4) .......................................................................64
Hình 49 – Trƣớc khi chạy ứng dụng..................................................................................................87
Hình 50 – Sau khi chạy ứng dụng .....................................................................................................88
Hình 51 – Output của hg clone ..........................................................................................................90
Hình 52 – Repository cục bộ..............................................................................................................91
Hình 53 – Thƣ mục scratch của các Roll ..........................................................................................92
Hình 54 – Thƣ mục scratch của Roll java.........................................................................................93
Hình 55 – Một phần sơ đồ cơ sở........................................................................................................95
Hình 56 – Minh họa việc liên lạc giữa các tiến trình .....................................................................101
Hình 57 – Tính tích phân..................................................................................................................103
Hình 58 – Tính toán số PI ................................................................................................................104
x
CHƢƠNG 1. GIỚI THIỆU
“Đạt tới tốc độ tính toán 1 teraflop là bài toán lớn nhất trong khoa học máy tính
trong 2 thập kỷ qua. Chỉ mới 10 năm trước đây, những nhà lãnh đạo đáng tin cậy nhất
trong ngành công nghiệp tính toán còn nói rằng điều đó là không thể.” (Gil Weigand)
[45]
Nếu chúng ta đã từng dùng Google để tìm kiếm thông tin trên Internet, thì hẳn sẽ có
lúc chúng ta phải ngạc nhiên trƣớc tốc độ xử lý của cỗ máy tìm kiếm này. Mỗi một giây
qua đi, Google tiếp nhận tới hàng nghìn yêu cầu tìm kiếm, và mỗi yêu cầu tìm kiếm đó
cần phải đƣợc xử lý qua hàng chục tỷ phép tính với lƣợng dữ liệu truy cập lên đến hàng
trăm Megabytes. Ngoài một hệ thống cơ sở dữ liệu đƣợc thiết kế đặc biệt, cùng với
những thuật toán khai phá dữ liệu đƣợc tối ƣu hóa, thì bí mật đằng sau tốc độ xử lý của
Google chính là hệ thống các cluster với tổng cộng khoảng 15000 máy tính trên toàn thế
giới. Google tối thiểu hóa thời gian xử lý đối với mỗi yêu cầu tìm kiếm bằng cách tiến
hành xử lý song song mỗi yêu cầu đó. Điều này cũng có nghĩa là Google sẽ xử lý đƣợc
nhiều yêu cầu tìm kiếm hơn trong cùng một khoảng thời gian [6].
Google chính là một ví dụ điển hình về vai trò và sự thành công của xử lý song song
trong ngành công nghiệp tính toán nói riêng và trong cuộc sống nói chung. Trong thời đại
thông tin bùng nổ, con ngƣời càng ngày càng trở nên bận rộn thì nhu cầu của xử lý song
song ngày càng đƣợc nâng cao nhằm xử lý đƣợc một lƣợng dữ liệu lớn nhất trong thời
gian nhanh nhất có thể. Xử lý song song ngày càng đƣợc quan tâm trên thế giới vì 2 lý do
chính sau đây:
Đạt đƣợc hiệu năng cao hơn trong khi tiết kiệm đƣợc thời gian và tiền bạc. Về lý
thuyết, càng đầu tƣ nhiều tài nguyên cho một nhiệm vụ nào đó thì càng rút ngắn
đƣợc thời gian thực hiện nhiệm vụ đó, đồng thời tiết kiệm đƣợc càng nhiều chi
phí. Hơn nữa, nhiều hệ thống xử lý song song có thể đƣợc xây dựng từ những
thành phần rẻ tiền và phổ biến.
Khả năng xử lý các bài toán lớn. Nhiều bài toán trong thực tế đòi hỏi tài nguyên
tính toán lớn đến mức không một máy tính đơn lẻ nào có thể đáp ứng nổi. Chẳng
1
hạn, các bài toán dạng "Grand Challenge" (Thách Thức Lớn) [16] nhƣ dự báo thời
tiết, giải mã bộ gene ngƣời, ... yêu cầu những tài nguyên tính toán đƣợc tính bằng
PetaFlops và PetaBytes [23].
Hình 1 – Các lĩnh vực ứng dụng của xử lý song song
Nguồn: [4]
Những nhu cầu này đã dẫn tới những cơ hội lớn cho xử lý song song, song những
thách thức đi kèm cũng không hề nhỏ. Cụ thể, sẽ khó khăn hơn trong việc phát triển các
phần mềm phục vụ cho xử lý song song do thiếu các môi trƣờng phát triển và các mô
hình lập trình thống nhất và hiệu quả. Việc phát triển thuật toán cũng khó khăn hơn do sự
phức tạp của việc xử lý các tác vụ đồng thời. Đó là chƣa kể đến sự phát triển nhanh
chóng của công nghệ phần cứng dẫn tới sự lạc hậu nhanh chóng của các kiến trúc xử lý
song song. Hệ quả gián tiếp của điều này chính là khả năng mở rộng của hệ thống bị giới
hạn, do các thuật toán xử lý song song hiện hành có thể không còn phù hợp với các kiến
trúc phần cứng của tƣơng lai.
Tại Việt Nam, đã có một vài hệ thống xử lý song song đƣợc nghiên cứu thành công
và đƣa vào ứng dụng, đem lại hiệu quả bƣớc đầu, nhƣ hệ thống máy tính bó song song do
CADPRO thiết kế cho Trung tâm Quốc gia dự báo khí tƣợng thủy văn [2], hoặc các trung
2
tâm dữ liệu của FPT Telecom, CMC Telecom, Ngân hàng Sài Gòn Thƣơng tín –
Sacombank, Ngân hàng Đông Nam Á [3], … Tuy nhiên, số lƣợng không nhiều các hệ
thống xử lý song song kiểu này đã chứng tỏ xử lý song song chƣa thực sự phát triển mạnh
mẽ ở Việt Nam.
Xét về mặt công nghệ, việc xây dựng, quản trị và ứng dụng một hệ thống xử lý song
song cũng không phải dễ dàng. Thông thƣờng, chi phí phải trả cho việc quản trị một hệ
thống xử lý song song trong 1 năm còn cao hơn nhiều so với chi phí bỏ ra để mua cả hệ
thống. Ví dụ, một cluster có tốc độ tính toán 1 TeraFlops có chi phí vào khoảng 100
nghìn US$, gần bằng chi phí phải trả cho một ngƣời quản trị hệ thống trong một năm
[39].
Nghiên cứu về xử lý song song vì vậy không chỉ mang ý nghĩa khoa học, mà còn có
ý nghĩa thực tiễn rất lớn. Việc nghiên cứu về xử lý song song, từ lý thuyết cho đến ứng
dụng, không chỉ giúp chúng ta nắm đƣợc nền tảng công nghệ, mà còn giúp chúng ta nhìn
thấy tiềm năng to lớn của xử lý song song trong công nghệ nói riêng và các lĩnh vực kinh
tế quốc dân nói chung.
Khóa luận này tập trung nghiên cứu tổng quan về xử lý song song nói chung và
nghiên cứu cách thức cài đặt, quản trị, kiến trúc hệ thống và ứng dụng của hệ thống cụm
máy tính xử lý song song Rocks nói riêng. Ngoài ra, tài liệu còn đƣợc đi kèm với một số
ứng dụng MPI tiêu biểu, trong đó có ứng dụng chuyển đổi video mà nội dung chƣơng 5
chính là mô tả chi tiết.
3
CHƢƠNG 2. CÁC KIẾN TRÚC VÀ CÁC HỆ THỐNG XỬ
LÝ SONG SONG
2. 1.
Các kiến trúc xử lý song song
Vào năm 1966, Michael Flynn đã đƣa ra cách phân loại các kiến trúc xử lý song
song dựa trên sự khác nhau về các dòng trong tiến trình tính toán. Một dòng là một chuỗi
các đối tƣợng (nhƣ dữ liệu), hoặc hành động (nhƣ các chỉ dẫn). Các dòng là độc lập với
nhau. Mỗi một phần tử trong dòng có thể chứa một hoặc nhiều đối tƣợng hoặc hành
động. Trên cơ sở 2 dòng chính là dữ liệu và chỉ dẫn, Flynn đã đƣa ra 4 tổ hợp, đại diện
cho 4 kiểu kiến trúc xử lý song song khác nhau [8]:
SISD (Single Instruction, Single Data Stream - Đơn dòng chỉ dẫn, đơn dòng
dữ liệu). Đây thực chất chính là kiến trúc Von Neumann [1, 43].
Hình 2 - SISD
Nguồn: [22]
SIMD (Single Instruction, Multiple Data Stream - Đơn dòng chỉ dẫn, đa
dòng dữ liệu). Kiến trúc này bao gồm các bộ xử lý vectơ cũng nhƣ các bộ xử
lý song song cực lớn (MPP).
4
Hình 3 - SIMD
Nguồn: [22]
MISD (Multiple Instruction, Single Data Stream - Đa dòng chỉ dẫn, đơn
dòng dữ liệu).
Hình 4 - MISD
Nguồn: [22]
MIMD (Multiple Instruction, Multiple Data Stream - Đa dòng chỉ dẫn, đa
dòng dữ liệu). Kiến trúc này bao gồm các hệ đa vi xử lý truyền thống cũng
nhƣ các mạng máy trạm.
5
Hình 5 - MIMD
Nguồn: [37]
Mỗi một tổ hợp trên đây đặc trƣng cho một lớp kiến trúc máy tính, đồng thời tƣơng
ứng với một hình thức xử lý song song.
2. 1. 1. SISD
Kiến trúc SISD là kiến trúc quen thuộc nhất, cũng là kiến trúc ít song song nhất.
Các hệ thống kiểu này chủ yếu xử lý theo kiểu đƣờng ống, trong đó các giai đoạn khác
nhau của tiến trình xử lý một chỉ dẫn đƣợc thực thi song song (kiến trúc này không song
song hóa các tiến trình mà song song hóa các giai đoạn của việc thực thi tiến trình).
Hình 6 – Xử lý đường ống 5 giai đoạn
Nguồn: [37]
Công nghệ cài đặt song song hóa các tiến trình xử lý chỉ dẫn đƣợc gọi là song song
hóa mức chỉ dẫn (ILP – Instruction Level Parallelism). Hai trong số các kiến trúc bộ xử
lý sử dụng phƣơng pháp này là superscalar (siêu thang bậc) và VLIW (Very Long
Instruction Word - Kích thƣớc word lớn). Các kiến trúc này lập lịch cho các tác vụ khác
nhau để thực thi một cách song song bằng cách phân tích sự phụ thuộc lẫn nhau giữa các
tác vụ trong cùng một dòng chỉ dẫn. Với kiến trúc superscalar, việc phân tích đƣợc thực
6
hiện động vào thời điểm chạy, còn với VLIW, việc phân tích là tĩnh vào thời điểm biên
dịch. Cả hai kiến trúc này đều có sự cân bằng giữa độ linh động (adaptability) và độ phức
tạp (complexity) – các bộ xử lý superscalar linh động nhƣng phức tạp, còn các bộ xử lý
VLIW không linh động nhƣng cũng không phức tạp. Cả 2 kiến trúc đều sử dụng các
phƣơng pháp biên dịch nhƣ nhau nhằm đạt đƣợc hiệu năng cao.
Xu hƣớng hiện tại đối với các bộ xử lý SISD là hƣớng tới kiến trúc superscalar
nhằm tận dụng các công nghệ ILP sẵn có.
2. 1. 2. SIMD
Lớp kiến trúc SIMD của các bộ xử lý bao gồm các bộ xử lý mảng (Array
Processors) và bộ xử lý vectơ (Vector Processors). Các bộ xử lý này là câu trả lời tự
nhiên cho việc sử dụng các cấu trúc dữ liệu thƣờng gặp nhƣ vectơ và ma trận.
Một bộ xử lý mảng bao gồm nhiều khối xử lý (PU - Processor Unit) hoạt động song
song trên nhiều thành phần dữ liệu. Một bộ xử lý vectơ bao gồm một khối xử lý hoạt
động tuyến tính trên nhiều thành phần dữ liệu. Cả 2 loại bộ xử lý đều sử dụng một phép
toán (operation) để thực thi nhiều hành động (action). Một bộ xử lý mảng phụ thuộc vào
kích thƣớc lớn của tập dữ liệu đầu vào để đạt đƣợc hiệu năng cao (vì vậy thƣờng các bộ
xử lý này thƣờng đƣợc gọi là các bộ xử lý song song cực lớn (Massively Parallel
Processors)). Một bộ xử lý mảng đặc trƣng bao gồm từ hàng trăm đến hàng chục nghìn
khối xử lý hoạt động cùng nhau. Một bộ xử lý vectơ cũng phụ thuộc vào sự đơn điệu của
các hành động tƣơng tự nhƣ bộ xử lý mảng, nhƣng trên một tập dữ liệu nhỏ hơn, đồng
thời dựa vào phƣơng pháp đƣờng ống (pipelining) và nhịp đồng hồ cao nhằm giảm độ trễ
của các phép toán.
Trên thị trƣờng hiện nay chƣa có nhiều bộ xử lý đƣợc phát triển theo kiến trúc mảng
do nhu cầu không cao và hạn chế về số lƣợng ứng dụng. Trong khi đó rất nhiều bộ xử lý
theo kiến trúc vectơ đã đƣợc phát triển, đồng thời các bộ xử lý vectơ hiện đại là các bộ xử
lý có hiệu năng cao, có thể tuân theo các kiến trúc SIMD hoặc MIMD.
2. 1. 3. MISD
Theo Flynn thì không tồn tại máy tính theo kiến trúc này [1].
7
2. 1. 4. MIMD
Kiến trúc MIMD là kiến trúc song song quen thuộc nhất, cũng là hình thức cơ bản
nhất của các bộ xử lý song song. Các bộ xử lý MIMD bao gồm nhiều khối xử lý đƣợc kết
nối với nhau. Không giống nhƣ các bộ xử lý SIMD, mỗi khối xử lý trong bộ xử lý MIMD
thực thi hoàn toàn độc lập (mặc dù cùng một chƣơng trình).Mặc dù về lý thuyết các khối
xử lý không cần phải giống nhau, nhƣng thực tế hầu hết các hệ thống MIMD bao gồm
các khối xử lý giống nhau.
Việc liên lạc giữa các khối xử lý đƣợc thực hiện thông qua một không gian địa chỉ
dùng chung (không gian địa chỉ này có thể là toàn cục, cũng có thể đƣợc phân chia giữa
các khối xử lý, khi đó nó có tên gọi là bộ nhớ chia sẻ phân tán (Distributed Shared
Memory) để phân biệt với bộ nhớ phân tán (Distributed Memory)). Cách xử lý này dẫn
đến 2 vấn đề: Một là tính ổn định (consistency) và hai là tính thống nhất (coherence) của
dữ liệu. Tính ổn định nói đến việc tham chiếu bộ nhớ – trên cả 2 phạm trù là trong một
khối xử lý và giữa các khối xử lý. Tính thống nhất yêu cầu tất cả các khối xử lý đều phải
“nhìn thấy” cùng 1 giá trị đối với cùng 1 địa chỉ vùng nhớ. Tính ổn định là hiện, trong khi
tính thống nhất là ẩn đối với ngƣời lập trình. Thƣờng thì tính ổn định có thể giải quyết
bằng một sự phối hợp giữa các kỹ thuật về phần cứng và phần mềm, trong khi tính thống
nhất lại đƣợc giải quyết bằng các kỹ thuật về phần cứng.
Các hệ thống tuân theo kiến trúc MIMD bao gồm từ các bộ xử lý truyền thống đến
các bộ xử lý độc lập hoạt động thông qua một mạng máy tính. Sự khác nhau giữa các hệ
thống này chủ yếu là giữa cách kết nối giữa các khối xử lý trên một bộ xử lý và cách kết
nối giữa các bộ xử lý trên một mạng WAN. Tuy nhiên, cả 2 kiểu hệ thống đều có sự cân
bằng giữa độ trễ trong liên lạc và giới hạn kích thƣớc của hệ thống.
2. 2.
Các hệ thống xử lý song song
2. 2. 1. Các hệ thống tính toán đa nhân
Vi xử lý đa nhân (Multicore Processor) là vi xử lý bao gồm nhiều khối chức năng
(Functional Unit, Execution Unit, hay “nhân”). Các vi xử lý đa nhân khác các vi xử lý
siêu thang bậc (Superscalar Processor) ở chỗ, các vi xử lý đa nhân có thể thực thi nhiều
chỉ dẫn từ nhiều nguồn trong một chu kỳ tính toán, còn các vi xử lý siêu thang bậc có thể
8
thực thi nhiều chỉ dẫn từ một nguồn trong một chu kỳ tính toán. Mỗi nhân trong vi xử lý
đa nhân có thể là một vi xử lý siêu thang bậc con, theo nghĩa mỗi nhân này có thể thực thi
nhiều chỉ dẫn từ một nguồn trong một chu kỳ tính toán.
Hình 7 – Mô hình bộ xử lý 2 nhân
Nguồn: [36]
2. 2. 2. Các hệ thống đa xử lý đối xứng
Hình 8 - SMP
Nguồn: [1]
Các hệ thống đa xử lý đối xứng (SMP - Symmetric Multiprocessing) thuộc mô hình
song song kiểu bộ nhớ dùng chung (Shared Memory). Một hệ thống SMP có từ 2 bộ xử
9
lý giống nhau trở lên, các bộ xử lý này dùng chung bộ nhớ và hệ thống vào – ra, đồng
thời đƣợc điều khiển bởi một hệ điều hành duy nhất.
Tính đối xứng của các hệ thống SMP thể hiện ở chỗ, thời gian truy cập bộ nhớ là
bằng nhau với các bộ xử lý, quyền truy cập (read / write) tới bộ nhớ của các bộ xử lý
cũng là nhƣ nhau.
Các hệ thống SMP có nhiều ứng dụng trong khoa học, công nghiệp và kinh doanh.
Tuy nhiên, những ứng dụng phổ biến nhất nhƣ các hệ xử lý văn bản hoặc các trò chơi
trên máy tính thì lại đƣợc viết theo cách không tận dụng đƣợc lợi thế từ các hệ thống xử
lý đồng thời. Chẳng hạn, với các trò chơi trên máy tính, nếu nhƣ đƣợc viết để có thể chạy
tốt trên các hệ thống SMP, thì lại khiến hiệu năng giảm sút trên các hệ thống đơn vi xử lý
(uniprocessor).
Các hệ thống đơn vi xử lý và các hệ thống SMP yêu cầu hai phƣơng pháp lập trình
khác nhau để đạt đƣợc hiệu năng cao nhất. Vì thế nhà phát triển có thể sẽ phải phát triển
và bảo trì cả 2 phiên bản của cùng 1 ứng dụng. Các ứng dụng chạy trên các hệ thống
SMP có thể đạt đƣợc hiệu năng cao hơn so với khi chạy trên các hệ thống đơn vi xử lý,
ngay cả khi chúng đƣợc viết ra dành cho các hệ thống đơn vi xử lý. Nguyên nhân là vì
các ngắt phần cứng thƣờng tạm dừng việc thực thi ứng dụng, trong khi ứng dụng có thể
tiếp tục đƣợc thực thi trên một bộ xử lý rỗi. Đối với một số ứng dụng, đặc biệt là các trình
biên dịch và các dự án tính toán phân tán, hiệu năng của ứng dụng đƣợc tăng lên khi thêm
mới một bộ xử lý.
Trong trƣờng hợp có nhiều ứng dụng cùng chạy một lúc, một hệ thống SMP có thể
cho hiệu năng tốt hơn một hệ thống đơn vi xử lý, do các ứng dụng có thể đƣợc đồng thời
thực thi trên các bộ xử lý một cách đồng thời.
2. 2. 3. Các hệ thống tính toán phân tán
Các hệ thống tính toán phân tán (Distributed Computing) là các hệ thống trong đó
các đơn vị xử lý đƣợc kết nối với nhau qua một mạng. Các hệ thống kiểu này có khả năng
mở rộng rất cao.
2. 2. 3. 1. Các hệ thống tính toán lƣới
10
Các hệ thống tính toán lƣới (Grid Computing) là hình thức “phân tán” nhất của tính
toán song song. Các hệ thống này bao gồm các máy tính hoàn chỉnh (có đầy đủ CPU, bộ
nhớ, nguồn nuôi, card mạng) kết nối với một mạng (có thể là mạng riêng, mạng chung
hoặc thậm chí là mạng internet), sử dụng các giao diện mạng truyền thống nhƣ Ethernet.
Đây là điểm khác biệt so với các siêu máy tính: Một siêu máy tính bao gồm nhiều bộ xử
lý đƣợc kết nối với nhau bởi một mạng cục bộ bao gồm các bus máy tính tốc độ cao.
Hình 9 – Mô hình lưới tính toán
Nguồn: [44]
Ƣu điểm lớn nhất của tính toán lƣới đó là các điểm lƣới (các máy tính tham gia tính
toán) có thể là các máy tính phổ biến, cấu hình trung bình, giá thành rẻ. Sau khi đƣợc nối
với nhau thành một lƣới tính toán thì hệ thống lƣới này có thể cung cấp một hệ thống tài
nguyên tính toán tƣơng đƣơng với một siêu máy tính nhƣng giá rẻ hơn nhiều.
Trong khi đó, nhƣợc điểm lớn nhất của tính toán lƣới lại nằm ở kết nối giữa các
điểm lƣới. Tuy nhiên, các ứng dụng đƣợc xử lý song song trên nhiều điểm lƣới một cách
độc lập có thể đạt hiệu năng cao trên lƣới, do mỗi điểm lƣới không yêu cầu các kết quả
trung gian từ các điểm lƣới khác.
11
2. 2. 3. 2. Các hệ thống xử lý song song cực lớn
Các hệ thống xử lý song song cực lớn (MPP – Massive Parallel Processing) là các
hệ thống lai giữa 2 mô hình bộ nhớ chia sẻ (Shared Memory) và bộ nhớ phân tán
(Distributed Memory). Các hệ thống MPP khắc phục nhƣợc điểm của mô hình bộ nhớ
chia sẻ: Các CPU có bộ đệm (Cache) và bộ nhớ (Memory) riêng nên tránh đƣợc xung đột
bộ nhớ. Đồng thời, MPP cũng khắc phục nhƣợc điểm của mô hình bộ nhớ phân tán:
Đƣờng mạng kết nối có tốc độ cao hơn, độ trễ thấp, các bộ đệm cũng đƣợc kết nối với
nhau và sử dụng phần cứng hỗ trợ.
Hình 10 - MPP
Nguồn: [1]
Cách đây một vài năm, các siêu máy tính mạnh nhất đều là các hệ thống MPP [30],
nhƣ Earth Simulator, Blue Gene, ASCI,… với số bộ xử lý lên tới hàng nghìn [1].
2. 2. 3. 3. Các hệ thống tính toán cụm
Cụm (Cluster) là khái niệm dùng để chỉ các máy tính độc lập đƣợc kết nối với nhau
thành một hệ thống thống nhất thông qua việc sử dụng các phần mềm và các công nghệ
12
kết nối mạng thích hợp. Ở mức độ đơn giản nhất, khi hai hoặc nhiều hơn máy tính đƣợc
sử dụng cùng với nhau để giải quyết một vấn đề nào đó, hệ thống hai hoặc nhiều máy
tính này đƣợc xem nhƣ một cluster. Ở mức độ tổng quát, ta có thể định nghĩa cluster nhƣ
là một nhóm các máy tính độc lập có khả năng làm việc cùng nhau nhƣ một máy tính duy
nhất, nhằm mục tiêu tăng cƣờng sức mạnh tính toán, khả năng đáp ứng và giảm rủi ro khi
xảy ra lỗi cục bộ cho các ứng dụng hoặc các dịch vụ.
Trong số 500 siêu máy tính (danh sách cập nhật mới nhất là vào tháng 11 / 2009) thì
hầu hết đều là các hệ thống cluster.
Hình 11 – Thống kê về kiến trúc của 500 siêu máy tính
Nguồn: [45]
HPC Cluster, viết tắt của High Performance Computing Cluster, là loại cluster đƣợc
sử dụng để tăng cƣờng hiệu năng cho các ứng dụng tính toán phức tạp bằng cách "chia
nhỏ" các tác vụ tính toán này ra các máy con trong cluster. Các cluster kiểu này thƣờng
chạy các chƣơng trình đƣợc thiết kế đặc biệt để tận dụng khả năng tính toán song song
của hệ thống. Chúng đƣợc tối ƣu hóa cho các tiến trình đƣợc thực thi đồng thời trên các
máy con trong cluster, nhƣng có "liên lạc" trong quá trình thực thi; các tiến trình này bao
gồm cả những tác vụ tính toán phụ thuộc lẫn nhau (kết quả tính toán từ máy con này có
tác động đến kết quả tính toán tiếp theo của máy con khác).
13
HPC Cluster thƣờng đƣợc dùng cho các bài toán khoa học nên còn có tên khác là
Scientific Cluster. Ngoài ra, có một loại HPC Cluster đặc thù sử dụng Linux làm hệ điều
hành và các phần mềm miễn phí để cung cấp khả năng tính toán song song. Loại HPC
Cluster này đƣợc gọi là Beowulf Cluster. "Các phần mềm miễn phí" nói đến ở đây bao
gồm cả các API messaging phổ biến nhƣ Message Passing Interface (MPI) hoặc Parallel
Virtual Machine (PVM) [29].
Hình 12 – Mô hình của HPC Cluster
Nguồn: [5]
Các hệ thống HPC Cluster đạt đƣợc hiệu năng cao là nhờ tăng cƣờng đƣợc băng
thông và giảm đƣợc độ trễ trên đƣờng truyền. Sở dĩ nhƣ vậy là vì chúng thƣờng không sử
dụng những giao thức mạng nhƣ TCP/IP. Mặc dù TCP/IP rất lý tƣởng cho mạng Internet,
nhƣng nó không thực sự phù hợp khi áp dụng cho một hệ thống các máy tính rất gần
nhau, đặc biệt là khi các máy tính trong cluster đƣợc biết về sự hiện diện của nhau. Thay
vì đó, nhiều hệ thống HPC tiến hành truy cập bộ nhớ trực tiếp (DMA - Direct Memory
Access) giữa các máy con trong cluster. Các máy con trong cluster có thể sử dụng chung
14
một hệ thống bộ nhớ phân tán, đồng thời sử dụng một hệ thống truyền thông điệp đƣợc
tối ƣu hóa nhằm liên lạc giữa các máy trong cluster.
MPI (Message Passing Interface) là một trong những hệ thống truyền thông điệp
phổ biến nhất trong các cluster, đƣợc dùng nhƣ tầng liên lạc giữa các hệ thống cluster
song song. MPI có nhiều biến thể nhƣng sử dụng chung một API nhằm giúp các
developer dễ dàng phát triển các ứng dụng tính toán song song mà không cần phải quan
tâm đến chi tiết cài đặt của hệ thống. Các hệ thống Beowulf đƣợc nói bên trên là một
trong nhiều hệ thống HPC sử dụng MPI làm tầng liên lạc trong cluster.
Một trong số các hệ thống cluster tiêu biểu chính là Rocks. Rocks ra đời tại Đại học
California với mục tiêu đơn giản hóa quá trình xây dựng một cluster [18]. Rocks là một
hệ thống tính toán cụm hết sức mạnh mẽ đã có lịch sử 10 năm phát triển [18] và 1632
cluster đã đăng ký [41]. Sử dụng Rocks, các nhà phát triển có thể xây dựng một HPC
Cluster hết sức nhanh chóng (cluster Rockstar (đứng thứ 201 trong danh sách 500 siêu
máy tính, số liệu tháng 11/2003) đƣợc xây dựng trong vòng dƣới 2 giờ [39]). Đây cũng là
lý do khóa luận nàyxem Rocks nhƣ một hệ thống xử lý song song tiêu biểu.
Hình 13 – Rockstar cluster
Nguồn: [39]
15
CHƢƠNG 3. HỆ THỐNG ROCKS
3. 1.
Giới thiệu
3. 1. 1. Tổng quan
Rocks là một trong những giải pháp mã nguồn mở tốt nhất hiện nay để xây dựng
một HPC cluster. Rocks do Đại học California phát triển dựa trên CentOS với một mục
tiêu đơn giản: "Make Clusters Easy" [18].
Một cluster đƣợc xây dựng bởi Rocks sẽ bao gồm 2 thành phần: Thành phần
frontend (frontend node), đƣợc dùng để quản lý các gói phần mềm và các tác vụ tính toán
trên cluster, và thành phần compute (compute node), cung cấp sức mạnh tính toán cho
cluster.
Quá trình xây dựng một cluster bằng Rocks có rất nhiều thuận lợi nhƣ dƣới đây:
Tất cả các máy con (frontend node hoặc các compute node) đều yêu cầu tài
nguyên ở mức trung bình, có thể dễ dàng đáp ứng đƣợc bởi một máy tính có cấu
hình phổ biến hiện nay. Rocks yêu cầu tối thiểu 30GB ổ cứng và 1GB bộ nhớ cho
mỗi máy con. Ngoài ra, đối với máy frontend, Rocks yêu cầu 2 cổng ethernet.
Việc cài đặt máy frontend có thể thực hiện gần tƣơng tự nhƣ cài đặt một máy
Linux thông thƣờng, toàn bộ các package cần cho quá trình cài đặt đƣợc chứa gọn
trong một DVD không quá lớn về kích thƣớc nếu nhƣ so với các DVD phân phối
của các distro nổi tiếng nhƣ Fedora hay CentOS.
Việc cài đặt các máy compute đƣợc thực hiện gần nhƣ tự động, do đó cho phép cài
đặt hàng loạt các compute node, rút ngắn quá trình xây dựng cluster.
Ngoài những thuận lợi về quá trình cài đặt, Rocks đem lại nhiều lợi thế trong việc
xây dựng một cluster HPC, bao gồm:
Rocks có thể tùy biến. Rocks không lệ thuộc vào các giải pháp của một nhà cung
cấp cụ thể nào. Trong quá trình cài đặt, có thể sửa lại cấu trúc ổ đĩa cho phù hợp
với nhu cầu. Thậm chí, ngƣời dùng còn có thể tùy biến kernel của Rocks để sử
16
dụng. Nếu ngƣời dùng muốn thay đổi nhiều hơn nữa, chỉ cần chỉnh sửa một file
XML, build lại và sau đó cài đặt lại các máy con.
Rocks sử dụng các Roll với mỗi Roll nhƣ là một tập các package cần thiết để thi
hành một loại hình tính toán hay tiện ích cụ thể.
Rocks làm giảm tải sự khó khăn trong việc quản lý cluster bằng cách cung cấp sẵn
nhiều công cụ khác nhau để trợ giúp cho ngƣời quản trị hệ thống, chẳng hạn, mỗi
cluster sẽ có một trang web cho biết trạng thái hiện tại của cluster.
3. 1. 2. Kiến trúc của HPC Cluster sử dụng Rocks
Xem xét sơ đồ dƣới đây, chúng ta có thể thấy frontend node đóng vai trò nhƣ là
giao diện giữa cluster và ngƣời sử dụng.
Hình 14 – Kiến trúc của Rocks
Nguồn: [5]
17
Frontend node yêu cầu 2 kết nối: Một kết nối private, nối với mạng các compute
node (qua switch chẳng hạn), một kết nối public, cho phép các máy tính từ ngoài cluster
có thể truy cập đến.
3. 1. 3. Rocks và Rolls
Một Roll thực chất là một hoặc một tập các gói phần mềm nhằm thực thi một loại
tác vụ nhất định nào đó, bao gồm các tác vụ truyền thống của một HPC Cluster (các tác
vụ tính toán), và các tác vụ chung cho tất cả các cluster (các tác vụ quản lý cluster). Một
hệ thống cluster Rocks cơ bản bao gồm 4 roll: Kernel, OS, Web Server và Base. Các roll
khác cung cấp các tác vụ nâng cao về tính toán, quản trị các tác vụ tính toán và quản trị
cluster, nhƣ:
Roll SGE (SUN Grid Engine): Đây là một trong những Roll quan trọng nhất đƣợc
phân phối kèm theo Rocks [7]. Roll này chịu trách nhiệm lập lịch, điều hƣớng và
quản lý các tác vụ của ngƣời dùng trên toàn cluster. SGE đƣợc sử dụng rất rộng rãi
trong các cluster hoặc các hệ thống tính toán lƣới. SGE giúp tận dụng tối đa sức
mạnh xử lý song song trong hệ thống. Việc quản lý SGE đƣợc thực hiện hoàn toàn
bằng command line, nhƣng cũng có thể đƣợc hiển thị dƣới dạng hình ảnh, chẳng
hạn thông qua Roll Ganglia.
Roll Ganglia cho phép ngƣời quản trị và ngƣời dùng hệ thống có thể quản trị hiệu
năng của cluster thông qua giao diện web trên máy frontend. Các báo cáo sinh bởi
Ganglia bao gồm số lƣợng node đang hoạt động và tỉ lệ CPU và bộ nhớ đƣợc sử
dụng. Ngoài ra Ganglia cũng cho phép ngƣời dùng xem các tác vụ đang nằm trong
hàng đợi của cluster.
18
Tải về để xem bản đầy đủ
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Nghiên cứu hệ thống cụm máy tính xử lý song song Rocks và ứng dụng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
khoa_luan_nghien_cuu_he_thong_cum_may_tinh_xu_ly_song_song_r.pdf