1
Bộ Giáo dục và Đào tạo
Trờng Đại học Bách khoa Hà Nội
MC LC
M U... 6
CHNG 1 TNG QUAN V NH GI HIU NNG H THNG
8
1.1 nh ngha v ỏnh giỏ hiu nng...
8
1.2 Mc ớch ca vic ỏnh giỏ hiu nng. 8
1.3 Phõn loi cỏc phn mm o hiu nng......... 9
Luận văn thạc sĩ khoa học
1.3.1 Phõn loi da trờn phc tp ca chng trỡnh o hiu nng
10
1.3.2 Phõn loi da trờn mc ớch ca chng trỡnh.
11
1.4 S phỏt trin ca cỏc phn mm o hiu nng.......
15
CHNG 2 KIN TRC H THNG TNH TON SONG SONG. 18
Ngành: Xử lý thông tin và truyền thông
2.1 Gii thiu chung......
18
2.2 Phõn loi cỏc kiu kin trỳc song song 19
đánh giá hiệu năng hệ thống
song song phân cụm
Phạm Thanh Liêm
2.2.1 Kin trỳc mỏy tớnh Von Newmann.......
19
2.2.2 Phõn loi kin trỳc mỏy tớnh ca Flynn....
20
2.3 Cỏc mụ hỡnh lp trỡnh song song.....
25
2.3.1 Mụ hỡnh a lung......
25
2.3.2 Mụ hỡnh truyn thụng ip............
25
2.3.3 Mụ hỡnh song song d liu...
26
2.4 Cỏc vn ca mt h thng tớnh toỏn song song phõn cm................. 26
2.4.1 Cỏc khỏi nim c bn.......................................................................... 26
2.4.2 Cu trỳc phn cng h thng tớnh toỏn song song phõn cm. 27
2.4.3 Cỏc phn mm s dng trong h thng song song phõn cm. 28
2.5 Kin trỳc h thng tớnh toỏn song song BKCluster. 32
2.5.1 Kin trỳc phn cng ca h thng BK Cluster... 32
Hà Nội 2006
2.5.2 Kin trỳc phn mm ci t trong h thng BK Cluster
34
2.6 Quy trỡnh ỏnh giỏ hiu nng ca h thng BK Cluser..........
36
2.6.1 o hiu nng tớnh toỏn (nng lc ca CPU)..........
38
2
2.6.2 Đo hiệu năng truy cập bộ nhớ trong……………………………......
3
41
CÁC THUẬT NGỮ
2.6.3 Đo hiệu năng truyền thông……………………………………….....
42
2.6.4 Đo hiệu năng của thư viện MPICH………………………………….
42
Synthetic Code
Mã lệnh đơn
CHƯƠNG 3 CÁC PHƯƠNG PHÁP ĐO HIỆU NĂNG………………….
44
Kernel
Hạt nhân
3.1 Đo hiệu năng tính toán…………………………………………………. 44
Simulation Application
3.2 Đo hiệu năng truy cập bộ nhớ trong………………………………….... 47
Mega Instruction Per Second
MIPS
Triệu lệnh trên giây
3.3 Đo hiệu năng truyền thông……………………………………………... 47
Message Passing Interface
MPI
Thư viện truyền thông điệp
3.4 Đo hiệu năng của thư viện phần mềm………………………………….
Thư viện lập trình đa luồng
48
Mô phỏng ứng dụng
Open Passing Interface
Open MP.
CHƯƠNG 4 XÂY DỰNG CÁC CHƯƠNG TRÌNH THỰC HIỆN QUI
NASA Parallel Benchmark
NPB
Phần mềm đo hiệu năng song song
TRÌNH ĐO HIỆU NĂNG…………………………………………………. 50
Single Intruction Single Data
SISD
Đơn dòng lệnh, đơn dòng dữ liệu
4.1 Xây dựng chương trình thực hiện quy trình đo hiệu năng…………….. 50
Single Instruction Multiple Data
SIMD
Đơn dòng lệnh, đa dòng dữ liệu
4.2 Chương trình thực hiện các công việc đo hiệu năng………………….... 51
Multiple Instruction Multip Data
MIMD
Đa dòng lệnh, đa dòng dữ liệu
4.2.1 Chương trình thực hiện việc đo hiệu năng tính toán…………….....
51
Nonumiform Memory Access
NUMA
Truy cập bộ nhớ không đồng nhất
4.2.2 Chương trình thực hiện đo hiệu năng truy cập bộ nhớ trong………
53
Uniform Memory Access
UMA
Truy cập bộ nhớ đồng nhất
4.2.3 Chương trình thực hiện đo hiệu năng truyền thông…………….......
54
Symmetric Multi Processor
SMP
Đa bộ xử lý đối xứng
55
Portable Batch System
PBS
Hệ thống phân tải
4.2.4 Chương trình thực hiện đo hiệu năng thư viện MPICH…………….
CHƯƠNG 5 KẾT QUẢ ĐO HIỆU NĂNG………………………………
56
5.1 Kết quả đo hiệu năng tính toán………………………………………… 56
5.1.1 Kết quả đo hiệu năng tính toán của CPU đơn…………………….... 56
5.1.2 Kết quả đo hiệu năng tính toán của toàn bộ hệ thống……………… 57
5.2 Kết quả đo hiệu năng truy cập bộ nhớ trong…………………………...
64
5.3 Kết quả đo hiệu năng truyền thông…………………………………….
64
5.4 Kết quả đo hiệu năng của thư viện truyền thông điệp MPICH………..
65
5.5 Đánh giá tổng hợp về hiệu năng của hệ thống BK Cluster…………….
68
CHƯƠNG 6 KẾT LUẬN…………………………………………………. 71
TÀI LIỆU THAM KHẢO…………………………………………………. 73
4
5
DANH MỤC BẢNG
Bảng 2.1 Kiến trúc phần mềm hệ thông……………………………………. 34
DANH MỤC HÌNH
Bảng 2.2 Các phần mềm sử dụng đo hiệu năng……………………………. 37
Hình 2.1 Nguyên lý kiến trúc máy tính Von Newmann…………………… 20
Bảng 2.3 Độ lớn của các lớp dữ liệu gói phần mềm NPB…………………. 40
Hình 2.2 Kiến trúc SISD…………………………………………………… 20
Bảng 3.1 Sự tương ứng các phép toán số thực và đơn vị flop……………... 46
Hình 2.3 Kiến trúc SIMD…………………………………………………..
Bảng 5.1 Kết quả đo hiệu năng CPU đơn………………………………….
57
58
21
Hình 2.4 Kiến trúc MIMD Share Memory………………………………… 22
Bảng 5.2 Kết quả đo hiệu năng tính toán bằng hạt nhân EP……………….
Hình 2.5 Kiến trúc MIMD Distributed Memory…………………………... 23
Bảng 5.3 Kết quả đo hiệu năng tính toán bằng hạt nhân IS………………... 59
Hình 2.6 Kiến trúc Core Duo Intel…………………………………………
Bảng 5.4 Kết quả đo hiệu năng tính toán bằng hạt nhân CG………………
24
60
Hình 2.7 Cấu hình kết nối Cluster…………………………………………. 24
Bảng 5.5 Kết quả đo hiệu năng tính toán bằng hạt nhân MG……………… 60
Hình 2.8 Kiến trúc phần cứng hệ thống BK Cluster……………………….. 34
Bảng 5.6 Kết quả đo hiệu năng tính toán bằng hạt nhân LU………………. 61
Hình 2.9 Hai phần mềm PBS và MPICH………………………………….. 36
Bảng 5.7 Kết quả đo hiệu năng tính toán bằng mô phỏng chương trình SP.. 62
Hình 2.10 Qui trình đo hiệu năng BK Cluster……………………………... 38
Bảng 5.8 Kết quả đo hiệu năng tính toán bằng mô phỏng chương trình BT.
Hình 5.1 Biểu đồ tương quan giữa hiệu năng và số trạm………………….. 63
Hình 5.2 Biểu đồ tương quan tốc độ truy cập bộ nhớ ……………………... 64
Hình 5.3 Biểu đồ tương quan dung lượng gói tin - tốc độ truyền thông…...
65
Hình 5.4 Biểu đồ tương quan dung lượng gói tin- tốc độ truyền thông điệp. 66
Hình 5.5 Biểu đồ tương quan tốc độ và thời gian truyền thông mạng…….
67
Hình 5.6 Biểu đồ tương quan dung lượng gói tin- thời gian truyền thông… 68
62
6
7
MỞ ĐẦU
Đánh giá hiệu năng phần mềm được thực hiện dựa trên việc khảo sát quá trình
Hiện nay trên thế giới nhờ các tiến bộ công nghệ cao, đã xây dựng được
hoạt động của các thư viện được cài đặt trong hệ thống như các thư viện tính
những hệ thống máy tính có khả năng tính toán rất lớn như siêu máy tính, tính
toán, các thư viện truyền thông điệp.
toán lưới phục vụ cho việc nghiên cứu khoa học và các ứng dụng thực tế.
- Đánh giá hiệu năng tổng hợp của toàn bộ hệ thống: toàn bộ hệ thống được
Bên cạnh đó các nhà sản xuất máy tính cũng luôn thay đổi công nghệ, cho ra
coi như một máy tính song song duy nhất. Dựa trên quá trình khảo sát tốc độ,
những thế hệ máy tính có khả năng tính toán với tốc độ nhanh.
kết thu được khi thực hiện một số bài toán song song mà người quản trị có thể
Tuy nhiên ở Việt Nam, với hiện tại các trung tâm nghiên cứu chưa đủ tiền để
đánh giá được hiệu năng tính toán của toàn bộ hệ thống, cũng như sự tương
mua những máy tính lớn, trong khi đó nhu cầu có hệ thống tính toán lớn lại
thích của hệ thống đối với những dạng bài toán cụ thể.
rất cần thiết. Một giải pháp là xây dựng hệ thống tính toán song song từ các
Luận văn này sẽ trình bày về quy trình áp dụng các phần mềm đo hiệu
máy tính hiện có và liên kết các trung tâm lại tạo ra hệ thống tính toán lớn.
năng mã nguồn mở chuyên dụng để đánh giá hiệu năng của hệ thống tính toán
Trung tâm tính toán hiệu năng cao, Trường đại học Bách Khoa Hà Nội đang
song song phân cụm BKCLUSTER. Cấu trúc của luận văn gồm 6 chương với
triển khai nghiên cứu làm chủ công nghệ lưới và ứng dụng vào thực tiễn. Hệ
nội dung cụ thể như sau :
thống BKGrid 2006 là sản phẩm của công trình đó.
Chương 1 Tổng quan về đánh giá hiệu năng hệ thống máy tính.
Hệ thống BKGrid 2006 được xây dựng với phần cứng là các máy tính hiện có
Chương 2 Kiến trúc của hệ thống tính toán BKCLUSTER.
như máy chủ HP NetServer và các máy trạm là các máy tính cá nhân, cấu
Chương 3 Các phương pháp đo hiệu năng.
hình mạng Ethernet và sử dụng các phần mềm mã nguồn mở: Hệ điều hành
Chương 4 Xây dựng chương trình thực hiện quy trình đo hiệu năng.
Linux, các thư viện tính toán chuyên dụng, phần mềm quản lý tài nguyên, thư
Chương 5 Các kết quả đo hiệu năng.
viện truyền thông điệp
Chương 6 Kết luận.
Đánh giá hiệu năng của hệ thống là một trong những nhiệm vụ cần thiết để
Luận văn cao học này được hoàn thành tại Trung tâm tính toán hiệu năng cao
đưa ra những nhận xét, kết luận về tốc độ tính toán, tính hiệu quả của toàn bộ
và Trung tâm máy tính thuộc Trường đại học Bách Khoa Hà Nội.
hệ thống. Đối với hệ thống tính toán song song phân cụm, việc đánh giá hiệu
Tôi xin cảm ơn chân thành nhất đến thầy PGS.TS Nguyễn Thanh Thủy và Ths
năng sẽ được tiến hành dưới hai mức độ. Đánh giá hiệu năng từng thành phần
Đinh Hùng đã tận tình hướng dẫn và tạo điều kiện cho tôi hoàn thành luận
trong hệ thống : Gồm phần cứng và phần mềm.
văn này.
- Đánh giá hiệu năng phần cứng được thực hiện dựa trên các số đo : tốc độ
Tôi xin chân thành cảm ơn các thầy, cô đã tham gia giảng dạy tại Trung tâm
tính toán của CPU, tốc độ truy cập vào bộ nhớ trong trên từng máy trạm, tốc
đào tạo sau đại học, Trường đại học Bách Khoa Hà Nội đã truyền những kiến
độ truyền tin trong mạng.
thức quý báu của chương trình cao học.
Hà Nội, Ngày 30 tháng 10 năm 2006
8
9
tần số gửi gói tin. Từ những thông số đo được khi thực hiện các chương trình
CHƯƠNG 1 TỔNG QUAN VỀ ĐÁNH GIÁ HIỆU NĂNG HỆ THỐNG
1.1 Định nghĩa về đánh giá hiệu năng.
Đánh giá hiệu năng là sử dụng phần mềm chuyên dụng trên một máy tính đơn
hay cả một hệ thống máy tính, từ việc phân tích thời gian chạy chương trình
hoặc những kết quả thu được, từ đó người quản trị rút ra những kết luận về
tốc độ tính toán, tốc độ truyền thông và khả năng truy cập bộ nhớ. Sau đó đưa
ra kết luận về hiệu năng thực của hệ thống.
1. 2 Mục đích của việc đánh giá hiệu năng.
Khi triển khai một hệ thống tính toán, một yêu cầu đặt ra đối với người quản
trị là phải đánh giá được khả năng của hệ thống về các mặt tính toán, truyền
thông. Sự đánh giá này có được dựa trên các kết quả cụ thể phản ánh tốc độ
thực hiện các thao tác trên các kiểu dữ liệu, tốc độ gửi và nhận gói tin, tốc độ
truy cập bộ nhớ ngoài và bộ nhớ trong. Các kết quả này khi được tổng hợp lại
cho phép dự đoán một phần về hiệu năng của những ứng dụng đang được
triển khai.
Đối với từng máy tính đóng vai trò là nút tính toán, việc đánh giá hiệu năng
được thực hiện với mục đích đưa ra những thông số cụ thể phản ánh tốc độ
tính toán, tốc độ truy cập bộ nhớ trong khi thực hiện bài toán trên CPU đơn
của máy tính. Từ những thông số cụ thể trên người quản trị có thể đưa những
đánh giá về năng lực tính toán cũng như kích thước của bài toán là bao nhiêu
thì sẽ phù hợp với nút mạng.
Khả năng truyền thông giữa các nút trong mạng đóng vai trò rất quan trọng
khi triển khai một hệ thống tính toán. Tốc độ truyền thông chịu ảnh hưởng
một cách trực tiếp bởi các cấu hình phần cứng cũng như dung lượng gói tin và
đo hiệu năng truyền thông, người quản trị có thể đưa ra những thông số tối ưu
về dung lượng gói tin và tần số gửi tin của từng giao thức cụ thể đối với hệ
thống tính toán đang triển khai.
Quá trình đo hiệu năng còn được sử dụng để đánh giá sự tương thích của hệ
thống đối với các thư viện lập trình. Trong trường hợp này, phần mềm đo hiệu
năng sẽ gọi một số hàm tiêu biểu của thư viện, đo thời gian thực hiện các hàm
này đối với các kích thước đầu vào cụ thể.
Một trong những mục đích của việc xây dựng hệ thống máy tính là để thực
hiện các bài toán đòi hỏi số lượng tính toán rất lớn. Lúc này cả hệ thống sẽ
được xem như một máy tính duy nhất thực hiện quá trình chạy chương trình.
Các phần mềm đo hiệu năng tính toán song song cho phép người quản trị có
được những thông số về tốc độ tính toán đối với những kiểu bài toán, ứng
dụng khác nhau. Có những chương trình thiên về truyền thông, có những
chương trình cho phép giảm thiểu quá trình truyền thông để tập trung đánh
giá năng lực tính toán. Để đánh giá sự tương thích của hệ thống đối với những
ứng dụng đang dự định triển khai, các phần mềm đo hiệu năng có dạng mô
phỏng ứng dụng được viết ra và sử dụng. Các phần mềm này sẽ mô phỏng
ứng dụng trong tương lai ở mức độ nhỏ hơn và đo đạc các thông số về tính
toán, truyền thông khi chạy với những giá trị đầu vào thích hợp. Qua các
thông số thu được, người quản trị hệ thống sẽ có thể đưa ra những đánh giá
đúng đắn, những chỉnh sửa để có thể triển khai hệ thống trong tương lai một
cách tối ưu nhất về cả cấu trúc phần cứng cũng như các phần mềm cài đặt.
1.3 Phân loại các phần mềm đo hiệu năng.
Những phần mềm đo hiệu năng ra đời vào đầu những năm 80 với mục đích
ban đầu là đo hiệu năng tính toán của những máy tính tuần tự. Những chương
trình đo hiệu năng này sử dụng một tập các câu lệnh được gọi trong nhiều
10
11
vòng lặp thực hiện một số lượng lớn các phép toán số học với dữ liệu là số
năng truyền thông hoặc truy cập bộ nhớ trong hiện nay vẫn được xếp vào
nguyên hoặc số thực. Sau này, các phần mềm đo hiệu năng đã được sử dụng
dạng mã lệnh đơn giản.
trong việc đo đạc, đánh giá các máy tính đơn hoặc cả hệ thống tính toán dưới
Hạt nhân : là chương trình thực hiện một phần của một ứng dụng cụ thể, hạt
nhiều khía cạnh như tính toán, truyền thông, truy cập bộ nhớ...
nhân thường được sử dụng trong các gói phần mềm đo hiệu năng tính toán.
Với mỗi mục đích khác nhau sẽ có những phần mềm tương ứng để đánh giá,
Chức năng của hạt nhân có thể chỉ đơn giản là thực hiện việc chuyển vị ma
không có một phần mềm đo hiệu năng nào được viết một cách tổng hợp để
trận hay phức tạp hơn như thực hiện biến đổi fourier, nhân ma trận. Đa số các
đánh giá tất cả các khía cạnh trên. Có hai cách phổ biến khi phân loại các
chương trình đo hiệu năng tính toán ngày nay được coi là các hạt nhân.
phần mềm đo hiệu năng đó là phân loại theo độ phức tạp của chương trình đo
Mô phỏng ứng dụng : là những chương trình được viết ra để đánh giá sự
hiệu năng và phân loại dựa trên mục đích đo hiệu năng của chương trình.
tương thích của hệ thống đối với một loại ứng dụng cụ thể. Các chương trình
1.3.1 Phân loại dựa trên độ phức tạp của chương trình đo hiệu năng
loại này thường là một tập hợp của các hạt nhân, giữa các hạt nhân đã có sự
Phân loại dựa trên độ phức tạp của chương trình gắn liền với quá trình phát
tương tác với nhau về truyền thông cũng như kết quả tính toán. Hiện nay các
triển của các loại phần mềm đo hiệu năng. Từ những chương trình đơn giản
chương trình mô phỏng ứng dụng thường được cung cấp dưới dạng một phần
ban đầu viết để đo khả năng tính toán của một máy tính cá nhân, đến những
của các gói phần mềm đo hiệu năng của các cơ quan, viện nghiên cứu có uy
chương trình phức tạp mô phỏng một hệ thống cụ thể triển khai trên toàn bộ
tín trên thế giới. Để chạy được các chương trình loại này thì cần phải triển
hệ thống tính toán. Dựa trên tiêu chí này, các phần mềm đo hiệu năng có thể
khai toàn bộ hệ thống một cách tương đối hoàn chỉnh về cấu hình phần cứng
được phân chia theo mức độ tăng dần thành 3 loại chính :
và phần mềm.
Mã lệnh đơn giản (Synthetic Code),
1.3.2 Phân loại dựa trên mục đích của chương trình.
Hạt nhân (Kernel)
Các chương trình đo hiệu năng thường chỉ thực hiện việc đánh giá tốc độ thực
Mô phỏng ứng dụng (Simulation Application).
hiện của một loại công việc cụ thể, cho nên việc phân loại theo mục đích ngày
Mã lệnh đơn giản : là chương trình thực hiện một tập các phép toán như
nay rất hay được sử dụng trong các tài liệu tổng quan về đánh giá hiệu năng.
cộng, trừ, nhân, chia trên tập số thực, các thao tác truy cập bộ nhớ như đọc,
Có thể nói rằng, bất cứ khía cạnh nào của một máy tính đơn hay một hệ thống
ghi dữ liệu từ bộ nhớ ngoài hoặc các thao tác truyền dữ liệu như gửi gói tin và
tính toán phức tạp đều tồn tại những chương trình đo hiệu năng chuyên dụng
chờ tín hiệu phản hồi từ máy đích. Những chương trình đo hiệu năng tính toán
để đánh giá hiệu năng.
đầu tiên trên thế giới thường được xếp vào loại này. Ngày nay những chương
Có thể chia ra thành các phần mềm đo hiệu năng với những mục đích sau :
trình này thường được cải tiến rất nhiều hoặc trở thành một phần của những
đo hiệu năng tính toán, đo hiệu năng truyền thông, đo hiệu năng truy cập bộ
chương trình đo hiệu năng phức tạp hơn. Tuy nhiên các chương trình đo hiệu
nhớ trong, đo hiệu năng của thư viện lập trình, đo hiệu năng truy cập bộ nhớ
ngoài.
12
13
Phần mềm đo hiệu năng tính toán.
Dongarra trường đại học Tennesse. Linpack là một tập các chương trình con
Những chương trình chuyên dụng đo hiệu năng tính toán được ra đời vào đầu
nằm trong thư viện lập trình Lapack. Đây là chương trình đo hiệu năng có số
thập kỷ 80. Chương trình WhetStone được coi là chương trình đo hiệu năng
lượng phép tính dấu phẩy động rất lớn tuy nhiên cũng có một nhược điểm là
tính toán đầu tiên trên thế giới. Đây là một tập các module con, mỗi module
không thực hiện phép chia. Phần mềm đo hiệu năng này còn được sử dụng rất
thực hiện một thao tác riêng như các phép toán số nguyên, các phép toán số
phổ biến và đã được phát triển thêm các phiên bản viết bằng ngôn ngữ C và
thực. Kiểu dữ liệu sử dụng trong WhetStone có thể có độ chính xác đơn hoặc
Java từ phiên bản ban đầu viết bằng ngôn ngữ Fortran. Các chương trình đo
chính xác kép. Sau WhetStone, xuất hiện các chương trình đo hiệu năng tính
hiệu năng sử dụng phép toán dấu phẩy động sau này đa số đều được xếp vào
toán khác như : DhryStone, Digital Review. Đặc điểm chung của các chương
dạng hạt nhân, ngoài Linpack ra còn có thêm một số phần mềm đo hiệu năng
trình này là đều thao tác chủ yếu trên các kiểu dữ liệu số thực, giá trị trả về có
tính toán nổi tiếng khác như : Livermore, Nasa Parallel Benchmark (NPB).
thứ nguyên được quy ước riêng, ví dụ WhetStone trả về giá trị có thứ nguyên
Đặc biệt gói phần mềm NPB đã cung cấp 5 hạt nhân, 3 mô phỏng ứng dụng
KWIPS (Kilo WhetStone Instrution Per Second), DhryStone trả về giá trị có
được sử dụng rất rộng rãi trong việc đánh giá hiệu năng của các hệ thống tính
thứ nguyên DhryStone Per Second, Digital Review trả về giá trị có thứ
toán song song.
nguyên MVUPS (MicroVAX units of processing). Các giá trị này là số nghìn
Phần mềm đo hiệu năng truyền thông.
hay triệu vòng lặp dùng trong chương trình tương ứng, rõ ràng là các giá trị
Các chương trình đo hiệu năng truyền thông được sử dụng để đánh giá hiệu
này chỉ có thể được sử dụng để so sánh hiệu năng tính toán của hai máy khi
năng truyền gói tin giữa hai máy, đóng vai trò nút mạng trong một hệ thống
cùng chạy một chương trình đo hiệu năng.
tính toán. Các chương trình này đều có cấu trúc client – server với module
Bên cạnh những chương trình đo hiệu năng hoạt động chủ yếu trên kiểu dữ
client được cài trên máy nguồn, module server được cài trên máy đích. Máy
liệu số thực, đã xuất hiện các chương trình đo hiệu năng thao tác trên kiểu dữ
nguồn sẽ gửi gói tin đến máy đích, tùy theo từng chương trình mà máy đích
liệu số nguyên. Các chương trình này thường được cài đặt theo một số giải
có gửi lại tín hiệu hay không. Người sử dụng có thể tùy chọn nhiều giao thức
thuật cụ thể như HeapSort. Giá trị trả về của các chương trình này có dạng
truyền thông như : TCP, UDP hoặc thay đổi giá trị của các gói tin gửi đi, thay
MIPS (Mega Instruction Per Second) là số triệu lần các câu lệnh được thực
đổi độ lớn của bộ đệm socket máy gửi và máy nhận, để có thể khảo sát tốc độ
hiện trong 1 giây.
truyền thông giữa hai máy trong hệ thống dưới nhiều góc độ. Dưới đây là một
Các chương trình đo hiệu năng tính toán được phát triển trong những năm gần
số phần mềm đo hiệu năng truyền thông mạng phổ biến :
đây đều sử dụng chủ yếu các phép toán trên kiểu dữ liệu số thực dấu phẩy
- NetPerf của hãng Hewllet - Packard, phần mềm này được viết vào năm
động (floating point). Kết quả trả về có thứ nguyên là MFLOPS (hàng triệu
1996, đến nay đã có phiên bản 3.0
phép tính dấu phẩy động trong 1 giây). Một trong những chương trình tiêu
- Iperf của nhóm tác giả tại đại học bang Illinois, phần mềm này được công
biểu đầu tiên có sử dụng kiểu thứ nguyên này là Linpack của tác giả Jack
bố lần đầu vào năm 1999, đến nay đã có phiên bản 1.7.0
14
15
- UDPMoN của tác giả Richard Hughes-Jones, phần mềm này được viết vào
Phần mềm đo hiệu năng truy cập bộ nhớ ngoài
năm 2000, đến nay đã có phiên bản 3.2.
Quá trình đo hiệu năng của bộ nhớ ngoài có thể xem là việc đánh giá sự đáp
Các chương trình trên đều được viết bằng ngôn ngữ C, trong các phần mềm
ứng của hệ thống đối với các lệnh đọc, ghi, khởi tạo hay xoá.
trên, phần mềm Netperf hay được dùng nhất khi đánh giá hiệu năng truyền
Đối tượng tác động của các câu lệnh này là data hoặc meta-data. Data là các
thông trong mạng LAN.
file chứa dữ liệu thông thường, còn meta-data là các file chứa dữ liệu về cấu
Phần mềm đo hiệu năng truy cập bộ nhớ trong.
trúc của hệ thống. Trong các hệ thống máy tính, bộ nhớ ngoài tồn tại chủ yếu
Các chương trình đo hiệu năng truy cập bộ nhớ trong không có nhiều như
dưới hai dạng sau : bộ nhớ trên máy trạm và hệ thống file mạng (Network File
những chương trình đo hiệu năng tính toán hay đo hiệu năng truyền thông
System – NFS). Ứng với mỗi loại bộ nhớ ngoài trên sẽ có các phần mềm đo
mạng, nhưng đóng vai trò quan trọng khi phân tích sự tương quan của dung
hiệu năng tương ứng. Dưới đây là một số các phần mềm đo hiệu năng truy
lượng của bộ nhớ trong với tốc độ của CPU với hiệu năng tính toán. Các
cập bộ nhớ ngoài thông dụng :
chương trình này sẽ tiến hành đo thời gian, tần suất truy cập bộ nhớ trong khi
Các phần mềm đo hiệu năng của bộ nhớ trên máy trạm : IOStone, Bonnie++,
thực hiện các phép toán đối với các bộ giá trị đầu vào có kích thước khác
IOZone trong đó IOStone được coi là chương trình đo hiệu năng truy cập bộ
nhau. Các chương trình đo hiệu năng truy cập bộ nhớ trong sẽ cho người quản
nhớ ngoài đầu tiên trên thế giới.
trị biết được kích thước của bài toán như thế nào là tối ưu nhất đối với từng
Các phần mềm đo hiệu năng truy cập hệ thống file mạng: NFSStone,
máy tính của hệ thống.
NHFStone.
Phần mềm đo hiệu năng của thư viện chương trình.
Hầu hết các chương trình đo hiệu năng thuộc loại này được viết bằng ngôn
Khi xây dựng các thư viện chương trình, một trong những yêu cầu đặt ra là
ngữ C hoặc C++.
phải kiểm tra các hàm trong thư viện có hoạt động tốt không, tương thích với
1.4 Sự phát triển của các phần mềm đo hiệu năng
hệ thống không.Tuy nhiên số chương trình đo hiệu năng của thư viện lập trình
Các chương trình đánh giá hiệu năng đầu tiên xuất hiện vào những năm 1980
là không nhiều, một số đại diện cho những phần mềm thuộc loại này là :
và được áp dụng cho những kiến trúc máy tính, hệ thống tính toán cụ thể, sau
ATLAS đo hiệu năng của thư viện tính toán BLAS
đó một số chương trình được phát triển để có thể đo hiệu năng của những hệ
Linpack đo hiệu năng của thư viện tính toán Lapack
thống máy tính khác. Hiện nay các chương trình đo hiệu năng đã phát triển rất
NetPIPE đo hiệu năng của thư viện truyền thông điệp MPI. Về bản chất
phong phú, về số lượng và được áp dụng để đánh giá máy tính đơn hoặc cả hệ
NetPIPE là chương trình dùng để so sánh hiệu năng truyền thông giữa một số
thống về nhiều mặt. Quá trình phát triển của các phần mềm đo hiệu năng có
giao thức, tuy nhiên NetPIPE thường được cấu hình khi biên dịch để đánh giá
thể được chia ra thành hai khía cạnh chính sau : sự phát triển các chương trình
hiệu năng của môi trường truyền thông thiết lập bởi thư viện MPI trong các hệ
để có thể đo hiệu năng của nhiều hệ thống và sự thống nhất thứ nguyên của
thống tính toán song song phân cụm.
các chương trình đo hiệu năng.
16
17
Sự phát triển về khả năng tương thích hệ thống của các chương trình đo
với kết quả đo hiệu năng tính toán và Mbps (số triệu bit truyền thông trên một
hiệu năng : ban đầu các chương trình đo hiệu năng thường được viết để đánh
giây) đối với các kết quả đo hiệu năng truyền thông. Sự thống nhất này cho
giá hiệu năng của những hệ thống cụ thể. Điều này được thể hiện qua một số
phép xây dựng lên các cơ sở dữ liệu về hiệu năng và khả năng so sánh hiệu
ví dụ như sau :
năng của các hệ thống máy tính khác nhau trên thế giới.
- Gói phần mềm NASA Parallel Benchmark được viết để đánh giá hiệu năng
tính toán của hệ thống tính toán song song phân cụm của cơ quan nghiên cứu
vũ trụ Mỹ với các chương trình hạt nhân và phần mềm mô phỏng dựa trên
những yêu cầu nghiên cứu thực tế. Sau này các chương trình đo hiệu năng
trong gói phần mềm NPB đã được hoàn thiện với các module viết bằng ngôn
ngữ C, Fortran và High Performance Fortran với các tải đầu vào có kích thước
khác nhau. Thực tế cho thấy NPB tương thích với hầu hết các hệ thống tính
toán song song trên thế giới.
Phần mềm Linpack ban đầu được tác giả Jack Dogarra viết để đo tốc độ thực
hiện hai hàm DGEFA và DGESL trong thư viện tính toán Lapack viết bằng
ngôn ngữ Fortran. Sau này Linpack đã được sử dụng rộng rãi để đánh giá hiệu
năng tính toán của CPU đơn và được phát triển thêm phiên bản viết bằng
ngôn ngữ C.
Hiện nay đã xuất hiện các công cụ đánh giá hiệu năng được cung cấp dưới
dạng các gói. Trong gói bao gồm nhiều chương trình đo hiệu năng với những
mục tiêu đo khác nhau. Những gói chương trình đo hiệu năng phổ biến là :
NPB - Nasa Parallel Benchmark), ParkBench - Parallel Kernel Benchmark,
SPEC - Standard Performance Evaluation Cooporation, LMBench của hãng
Hewllet Packard …
Sự thống nhất thứ nguyên của các chương trình đo hiệu năng : Các
chương trình đo hiệu năng ban đầu sử dụng các thứ nguyên được định nghĩa
riêng. Sau này hầu hết các chương trình đo hiệu năng gần đây đều sử dụng hai
thứ nguyên sau : MFLOPS (số triệu lần phép tính số thực trên một giây) đối
18
19
CHƯƠNG 2 KIẾN TRÚC CỦA HỆ THỐNG TÍNH TOÁN SONG
khai xây dựng hệ thống tính toán song song. Mục tiêu xây dựng một môi
SONG PHÂN CỤM
trường tính toán song song ổn định tiến tới hội nhập vào hệ thống tính toán
2.1 Giới thiệu chung.
lưới Việt Nam và quốc tế.(Grid Computing).
Trong công cuộc công nghiệp hoá, nhu cầu ứng dụng công nghệ thông tin vào
Các yêu cầu đặt ra cho hệ thống:
các hoạt động nghiên cứu khoa học và tin học hoá xã hội. Đòi hỏi giải quyết
- Cung cấp một môi trường tính toán ổn định, hiệu năng cao.
nhiều bài toán xử lý lớn với khối lượng khổng lồ mà các máy tính tuần tự
- Cung cấp một môi trường lập trình cho những người lập trình chuyên
không thể thực hiện được. Trong thời gian gần đây công nghệ sử dụng các
nghiệp, cũng như không hiểu sâu về lập trình song song. Hỗ trợ và chạy
máy tính đơn, ghép nối với nhau thành cụm (cluster) và cài đặt các phần mềm
chương trình từ xa.
đặc biệt để có thể tính toán như một máy tính song song. Hệ thống như vậy
- Hệ thống được triển khai trên hệ thống máy tính hiện có của trung tâm hiệu
được gọi là hệ thống tính toán song song phân cụm, hệ thống này tạo ra
năng và khả năng mở rộng cao. Đang được triển khai mở rộng ở các trung
những sức mạnh tính toán cực lớn với tính sẵn sàng cao, dần thay thế vai trò
tâm khác: Trung tâm máy tính trường Đại học bách khoa Hà Nội.
những siêu máy tính với nhiều CPU chia sẻ bộ nhớ trong một thể thống nhất
Giải pháp cho các yêu cầu trên là một hệ thông tính toán song song dựa trên
đắt tiền.
kiến trúc máy tính cluster.
Công nghệ tính toán song song phân cụm đã mở ra cơ hội cho cả các nước
2.2 Phân loại các kiểu kiến trúc song song
không có nền công nghiệp phần cứng mạnh và kinh tế chưa phát triển để chế
2.2.1 Kiến trúc máy tính Von Newmann
tạo ra những siêu máy tính cho riêng mình với giá thành rẻ.
Các máy tính hiện nay đều xây dựng theo mô hình Von Newmann (tên nhà
Ở Việt Nam trong điều kiện kinh tế còn nghèo, chưa đủ kinh phí để đầu tư
bác học John Von Newmann).
những máy tính lớn đắt tiền, trong khi đó nhu cầu tính toán lớn phục vụ cho
Máy tính Von Newmann sử dụng khái niệm chương trình đã được lưu trữ sẵn.
việc nghiên khoa học, cũng như các ứng dụng thực tiễn là rất lớn. Giải pháp
CPU chạy một chương trình đã được lưu trữ sẵn, trong đó chỉ rõ các chuỗi
xây dựng hệ thống tính toán song song phân tán dựa trên liên kết các máy tính
thao tác đọc và ghi trên bộ nhớ.
riêng lẻ đang được triển khai. Tuy nhiên, một nhược điểm là khi phát triển
ứng dụng các chuyên gia công nghệ và người sử dụng đầu cuối không chuyên
phải biết về hệ thống (hệ điều hành, cơ chế phân công giữa các tiến trình, cân
bằng tải và lập trình song song với MPI/PVM). Trong khi đó các hệ thống
siêu máy tính đa xử lý, vấn đề này đã được nghiên cứu và giải quyết trong các
cơ chế tự động của chương trình dịch. Để giải quyết vấn đề này Trung tâm
tính toán hiệu năng cao trường Đại học Bách Khoa tiến hành nghiên cứu, triển
20
21
Có một dòng chảy lệnh (nghĩa là có một chương trình) được CPU thực thi và
một bộ nhớ chứa dữ liệu của nó. Lệnh đầu tiên được nhận từ bộ nhớ về rồi
được thực hiện, sau đó lệnh thứ hai sẽ được nhận về rồi thực hiện.
Trong mô hình tuần tự này, cũng có thể thực hiện cơ chế song song ở một
chừng mực nhất định nào đó. Bằng cách trong khi đang thực hiện một lệnh
vẫn nhận về lệnh tiếp theo để thực hiện.
b) Kiến trúc đơn lệnh- đa dữ liệu (Single Instruction-Multiple Data)
Hình 2.1 Nguyên lý kiến trúc máy tính Von Newmann
Bộ nhớ chính (Main Memory) được sử dụng để lưu giữ các chương trình và
dữ liệu. Những lệnh của chương trình đã được mã hoá nhằm chỉ dẫn cho máy
Hình 2.3 Kiến trúc SIMD
tính thực hiện công việc nào đó. Dữ liệu là thông tin được sử dụng trong
Đây là kiểu máy tính song song. Đơn lệnh là tất cả các đơn vị xử lý chạy
chương trình.
cùng một lệnh tại bất kỳ chu kỳ đồng hồ nào. Đa dữ liệu là một đơn vị xử lý
Bộ xử lý trung tâm (Central Processor Unit) lấy lệnh và dữ liệu từ bộ nhớ,
có thể hoạt động trên một phần tử dữ liệu khác nhau. Kiểu máy này có một bộ
giải mã và sau đó thực hiện.
chuyển lệnh dựa trên mạng kết nối băng thông cao, loại máy này phù hợp cho
2.2.2 Phân loại kiến trúc máy tính của Flynn
những vấn đề chuyên dụng như xử lý ảnh, dự báo thời tiết.
a) Kiến trúc đơn lệnh- đơn dữ liệu (Single Intruction- Single Data)
c) Kiến trúc đa lệnh- đa dữ liệu (Multiple Instruction- Multiple Data)
- Kiến trúc MIMD kiểu chia sẻ bộ nhớ
Hình 2.2 Kiến trúc SISD
22
23
Hình 2.4 Kiến trúc MIMD share memory
Máy tính loại này có nhiều CPU, mỗi CPU thực hiện một chương trình khác
Hình 2.5 Kiến trúc MIMD Distributed Memory
nhau, các CPU có thể chia sẻ một vùng nhớ chung (share memory) như một
Những hệ thống có kiến trúc bộ nhớ phân tán yêu cầu một mạng truyền thông
không gian toàn cục. Tất cả những sự thay đổi của nội dung của bộ nhớ do
để kết nối các bộ nhớ của các bộ xử lý. Mỗi bộ xử lý đều có bộ nhớ trong cục
một bộ xử lý tạo ra được tất cả các bộ xử lý khác biết đến.
bộ của mình. Không gian địa chỉ nhớ của một bộ xử lý không chia sẻ với bộ
Các máy tính chia sẻ bộ nhớ được chia thành 2 lớp chính dựa trên thời gian
xử lý khác, vì vậy không có khái niệm vùng địa chỉ toàn cục của tất cả các bộ
truy cập bộ nhớ là UMA và NUMA.
xử lý. Vì mỗi bộ xử lý có bộ nhớ trong của chính mình, nên nó hoạt động độc
Truy cập bộ nhớ đồng nhất (Uniform Memory Access): phổ biến trong loại
lập. Những sự thay đổi mà một vi xử lý thực hiện trên bộ nhớ trong không có
máy này là các máy đa bộ xử lý đối xứng (Symmetric Multi Processor: SMP)
hiệu ứng gì trên vùng nhớ của những bộ xử lý khác.
Các bộ xử lý đông nhất, độ ưu tiên và thời gian truy cập tới bộ nhớ là như
Khi một bộ xử lý cần truy cập tới dữ liệu của bộ xử lý khác, người lập trình
nhau.
phải có nhiệm vụ định nghĩa rõ ràng khi nào dữ liệu được truyền đi. Sự đồng
Truy cập bộ nhớ không đồng nhất (Nonumiform Memory Access: NUMA)
bộ hóa giữa những luồng xử lý là trách nhiệm của người lập trình, kết cấu
Một máy tính loại NUMA thường được tạo ra bằng cách liên kết về mặt vật lý
mạng sử dụng cho sự di chuyển dữ liệu trong hệ thống này có thể có nhiều
hai hoặc nhiều máy SMP.
loại.
- Kiến trúc MIMD kiểu bộ nhớ phân tán
24
- Kiến trúc lõi đôi (Core Duo)
25
Từ các kiến trúc trên, người ta xây dựng hệ thống kết nối song song (cluster).
Thành phần có bộ nhớ dùng chung (kiểu SMP), những bộ xử lý trên một SMP
có thể sử dụng bộ nhớ toàn cục của SMP đó. Thành phần phân tán là sự kết
nối của mạng nhiều SMP, bởi vậy truyền thông mạng là cần thiết để di
chuyển dữ liệu từ SMP này đến SMP khác.
2.3 Các mô hình lập trình song song.
Có rất nhiều mô hình lập trình song song được phổ biến như chia sẻ bộ nhớ,
đa luồng, truyền thông điệp, song song dữ liệu... Các mô hình này tồn tại như
một sự trừu tượng dựa trên các kiến trúc phần cứng. Mọi mô hình lập trình
song song đều có thể được thực hiện trên bất kỳ một kiến trúc phần cứng nào.
2.3.1 Mô hình đa luồng
Hình 2.6 Kiến trúc Core Duo của Intel
Trong mô hình lập trình song song đa luồng, một tiến trình có thể có rất nhiều
luồng xử lý. Mỗi luồng có thể được coi là một thủ tục con của chương trình
Là kiến trúc mới của hãng Intel, được thiết kế để tạo sức mạnh đột phá và tối
ưu hiệu năng của hệ thống. Với hai lõi biệt lập trong cùng một bộ xử lý hoạt
động cùng tần số, bộ xử lý cho phép các cấp độ đáp ứng của hệ thống và lý
tưởng cho môi trường đa nhiệm. Hiệu năng của hệ thống tăng, điện năng tiêu
thụ giảm.
chính và được thực hiện song song cùng các luồng khác, các luồng giao tiếp
với nhau thông qua vùng nhớ toàn cục. Điều này đòi hỏi có một cơ chế đồng
bộ giữa các luồng nhằm tránh xung đột trong truy cập bộ nhớ, các luồng có
thể sinh ra hay kết thúc nhưng chương trình chính thì vẫn tồn tại cho đến khi
hoàn thành công việc. Mô hình này thường gắn với các kiến trúc chia sẻ bộ
d) Cấu hình kết nối song song (cluster)
nhớ (SMP).
Người lập trình theo mô hình này thường sử dụng các thư viện lập trình đa
luồng như Open MP.
2.3.2 Mô hình truyền thông điệp
Truyền thông điệp (message passing) là mô hình được sử dụng rộng rãi trong
tính toán song song hiện nay. Thường áp dụng cho hệ thống phân tán, một
chương trình theo mô hình này bao gồm nhiều chương trình chạy trên các nút
với chuỗi lệnh và bộ nhớ riêng. Mỗi chương trình con có một định danh duy
Hình 2.7 Cấu hình kết nối cluster
nhất và chúng tương tác với nhau bằng việc gửi và nhận thông điệp trên các
26
27
định danh. Việc truyền dữ liệu thường yêu cầu có sự hợp tác giữa các tiến
Một ưu điểm nữa là hệ thống phân cụm rất linh hoạt về cấu hình: Số lượng
trình.
nút, dung lượng bộ nhớ trên mỗi nút, số lượng bộ xử lý trên mỗi nút và cấu
Phương pháp này được sử dụng rất rộng rãi trên thế giới, hiện nay có hai thư
hình mạng đều có tính tuỳ biến cao.
viện truyền thông điệp được sử dụng là PVM và MPI.
2.4.2 Cấu trúc phần cứng của hệ thống tính toán song song phân cụm.
2.3.3 Mô hình song song dữ liệu
Thành phần cơ bản trong hệ thống song song là nút tính toán và mạng nối
Các phần việc song song tập trung vào việc thực hiện xử lý trên một tập dữ
giữa các nút. Do vậy phần cứng cơ bản của hệ thống song song là các thiết bị
liệu.Tập dữ liệu thường được tổ chức theo cấu trúc thông thường như mảng
của nút và các thiết bị mạng.
một chiều hay mảng nhiều chiều. Tập các tác vụ (task) cùng làm việc trên một
Các thiết bị phần cứng của nút tính toán
cấu trúc dữ liệu, tuy nhiên mỗi tác vụ làm việc với một phần khác nhau của
Một nút tính toán phải cung cấp chức năng tính toán và chứa năng lưu trữ dữ
cấu trúc dữ liệu đó. Với kiến trúc bộ nhớ chia sẻ, các tác vụ có thể truy cập
liệu. Do vậy các nút có thể là các máy tính riêng biệt.
vào cùng một cấu trúc dữ liệu thông qua bộ nhớ toàn cục, trên kiến trúc bộ
Một hệ thống tính toán song song phân cụm bao gồm một máy chủ (server) và
nhớ phân tán, cấu trúc dữ liệu này được chia ra thành từng phần và nằm trên
một tập các máy trạm (workstation) được gọi là các nút tính toán. Máy chủ và
phần bộ nhớ cục bộ của mỗi tác vụ.Việc song song hoá dữ liệu được thực
các máy trạm được ghép nối với nhau thông qua Ethernet hay một số kiểu
hiện với sự hỗ trợ của các trình dịch
mạng khác. Các thiết bị phần cứng không đòi hỏi những yêu cầu kỹ thuật đặc
2.4 Các vấn đề cơ bản của một hệ thống tính toán song song phân cụm.
biệt, hoàn toàn có thể được nâng cấp, bổ xung mà không ảnh hưởng nhiều đến
2.4.1 Các khái niệm cơ bản.
các thành phần khác của hệ thống.
Một hệ thống tính toán song song phân cụm là hệ thống máy tính cục bộ bao
- Máy chủ đóng vai trò điều phối hoạt động của toàn bộ hệ thống: giao nhiệm
gồm các tập các máy tính độc lập và được liên kết lại thông qua mạng máy
vụ cho những máy trạm, quản lý hệ thống file và làm điểm để hệ thống giao
tính. Một hệ thống phân cụm là cục bộ với ý nghĩa là toàn bộ các thành phần
tiếp với bên ngoài (với hệ thống khác hoặc với mạng internet). Các hệ thống
hệ thống con nằm trong khu vực địa lý hẹp và được quản lý tập trung như là
lớn có thể có nhiều máy chủ, mỗi máy chủ quản lý một nhiệm vụ.
một hệ thống thống nhất. Các nút trong hệ bó có thể là kết hợp của các máy
- Các máy trạm có thể chỉ đơn giản là các máy tính cá nhân (Personal
tính đơn bộ xử lý với các máy nhiều bộ sử lý (SMP: symmertric
Computer : PC). Các thiết bị của một nút là các thiết bị thông dụng trong máy
multiprocesor).
tính cá nhân như: bộ xử lý, bộ nhớ chính, bộ nhớ thứ cấp và các các giao diện
Ưu điểm của hệ thống phân cụm là giá thành của hệ thống. Hiện nay một hệ
với các thiết bị ngoại vi: PCI, PCI express, NIC, I/O Port ...
thống dựa trên công nghệ LAN và PC có thể đạt hiệu năng rất cao trong khi
Một trong những nguyên tắc của hệ thống phân cụm là hạn chế chức năng của
đó giá thành lại rẻ hơn nhiều so với các siêu máy tính.
các nút trạm. Thông thường các nút trạm được cấu hình chỉ để thực hiện
28
29
những nhiệm vụ cố định (chủ yếu là tính toán). Người quản trị hệ thống chủ
Các thành phần phần mềm dùng trong hệ thống tính toán song song phân cụm
yếu tương tác với các máy trạm thông qua máy chủ.
có thể chia thành 3 nhóm chính sau : Thư viện và môi trường lập trình, các
Các thiết bị mạng
phần mềm quản lý tài nguyên và phân tải, các thư viện truyền thông điệp.
Công nghệ mạng thường được sử dụng trong hệ thống tính toán song song
a)Thư viện và môi trường lập trình
phân cụm là LAN và SAN (System Area Network). Các ứng dụng song song
Lập trình song song trong các hệ thống tính toán song song phân cụm là phức
với nhu cầu truyền thông lớn sẽ cần một nền tảng truyền thông ổn định, tốc độ
tạp hơn các hệ thống máy tính khác. Hệ thống song song phân cụm là mô hình
cao. Hai đặc tính chính đối với truyền thông của hệ thống phân cụm là băng
đa máy tính nên các chương trình song song trên các hệ thống đa máy tính có
thông được đo bằng số triệu bit trên giây (Mbps) và độ trễ được tính bằng
thể tương thích với hệ thống phân cụm, nhưng trong một số trường hợp hiệu
micro giây. Các hệ thống phân cụm sử dụng mạng LAN thường dùng
năng thực hiện của chương trình không được tối ưu do hệ thống song song
Ethernet với băng thông khoảng (10-100) Mbps. Hiện nay, tốc độ của
phân cụm có một số đặc điểm riêng biệt.
Ethernet có thể lên đến 1Gbps như các thiết bị Giga Ethernet, Fast Ethernet.
Hệ thống tính toán song song phân cụm là hệ thống máy tính có bộ nhớ phân
Trong khi LAN chỉ cho phép tạo nên một hệ thống có bộ nhớ phân tán thì
tán, do vậy truyền thông giữa các nút trong quá trình tính toán thường là
SAN lại có thể hỗ trợ bộ nhớ phân tán chia xẻ (distributed shared memory)
truyền thông điệp. Các thư viện truyền thông điệp dành cho hệ thống phân
cho phép tổ chức một bộ nhớ logic chia xẻ trong khi bộ nhớ vật lý phân tán
cụm hiện nay có thể kể đến là MPI, PVM, Active Message và CMMD
trên các nút. Tuy nhiên, giá cả của các thiết bị SAN đắt hơn LAN rất nhiều.
(Connected Machine Message...), trong đó MPI với nhiều ưu điểm có thể coi
Các nút trong hệ thống được ghép nối bằng cách sử dụng switch, các switch
là sự lựa chọn tốt cho các hệ thống tính toán song song phân cụm. Hiện nay,
có thể được ghép nối với nhau tùy theo số lượng nút của hệ thống.
có nhiều phiên bản cài đặt cho MPI với các chức năng chuẩn của MPI 1.2 và
2.4.3 Các phần mềm sử dụng trong hệ thống song song phân cụm
một số chức năng mở rộng riêng. LAM MPI là bản cài đặt đã hỗ trợ đầy đủ
Giá thành rẻ là lợi thế của hệ thống tính toán song song phân cụm thì việc
chuẩn MPI 2.0.
triển khai phần mềm trên hệ thống này lại phức tạp. Nhưng phần mềm cho hệ
Tuy nhiên, bên cạnh sự phát triển mạnh mẽ của mô hình truyền thông điệp,
thống tính toán song song phân cụm lại rất đa dạng và sẵn dùng, thậm chí có
mô hình dữ liệu song song cũng đang được nghiên cứu, triển khai và áp dụng
cả những giải pháp hoàn chỉnh. Các hệ thống phân cụm thường được triển
trong hệ thống tính toán song song phân cụm. Do đặc thù của mô hình dữ liệu
khai trên các hệ điều hành dòng Unix như Linux, Unix, Solaris.Với sự ra đời
song song là cần có một trình biên dịch chuyên dụng, để tạo ra các chương
của Linux và xu hướng lập trình mã nguồn mở, hiện nay có rất nhiều công cụ,
trình song song có dữ liệu phân tán, nên việc phát triển các trình biên dịch
thư viện mã nguồn mở và các thành phần phần mềm khác hỗ trợ việc triển
song song là yếu tố cơ bản của mô hình này. Các trình biên dịch này dựa trên
khai hệ thống song song phân cụm với khả năng tuỳ biến cao.
một số ngôn ngữ lập trình thông dụng như C/C++, Fortran, Java. Sự kết hợp
của trình biên dịch song song và ngôn ngữ lập trình tạo lên một ngôn ngữ lập
30
31
trình song song cho các hệ thống tính toán phân cụm. Các ngôn ngữ lập trình
- PBS (Portable Batch System) : hệ thống phân tải và quản lý tài nguyên rất
song song tiêu biểu hiện nay là: HPF (Hight Performance Fortran), Titanium
mạnh do NASA phát triển. Hệ thống này được sử dụng rất phổ biến trong các
(kế thừa từ Java), Para++, ABC+, Split-C, BSP…
hệ thống tính toán hiệu năng cao. Chức năng chính của hệ thống là tiếp nhận
Một trong những thành phần quan trọng của các chương trình tính toán song
các công việc từ người sử dụng, bảo vệ công việc đó cho đến khi nó được
song phân cụm nói riêng và các hệ thống tính toán song song nói chung là các
thực hiện, thực hiện công việc và trả lại kết quả cho người sử dụng. PBS có
giải thuật song song. Hiện nay, các thư viện giải thuật song song rất sẵn dùng
thể được cấu hình chạy trên một hệ thống đơn hoặc một hệ thống đa máy tính.
và hầu hết là mã nguồn mở. Các thư viện này chưa phải là các giải pháp song
Sự linh động này làm cho PBS có khả năng đáp ứng cho nhiều hệ thống tính
song hoàn chỉnh nhưng nó là nền tảng cho việc phát triển các chương trình
toán.
tính toán song song với các đặc thù riêng. Có thể nói sự phát triển của các thư
- CODINE : phần mềm phân tải dùng cho các hệ thống máy tính máy tính
viện này rất mạnh mẽ cả về số lượng lẫn chất lượng. Chúng là kết quả của các
đồng bộ như SMP hoặc các siêu máy tính dạng vector. Phần mềm này còn
đề tài nghiện cứu trong các trường đại học, các viện ngiên cứu trên toàn thế
cung cấp các cơ chế để quản lý các chính sách của hệ thống phân cụm và cân
giới. Các thư viện có thể kể đến là: LAPACK, BLAS, ARPACK,
bằng tải động cho các công việc.
ScaLAPACK, PETS
- CONDOR : thường dùng để phân tải tài nguyên và lập lịch cho các công
b) Các phần mềm quản lý tài nguyên và phân tải
việc trên hệ thống máy trạm (workstations). Nó hỗ trợ sử dụng các điểm kiểm
Trong khi các thư viện và các ngôn ngữ lập trình song song tạo ra cho người
tra (checkpoint) và chuyển giao các công việc giữa các máy trạm.
lập trình môi trường lập trình trên hệ thống tính toán song song phân cụm, các
c) Các thư viện truyền thông điệp
phần mềm quản lý tài nguyên và phân tải lại tạo ra một môi trường tính toán
Truyền thông điệp (message passing) là cơ chế giao tiếp phổ biến trong tính
hiệu quả và ổn định. Các phần mềm này càng có ý nghĩa khi số lượng các nút
toán song song. Các chương trình theo mô hình truyền thông điệp sẽ có một
tính toán càng lớn và số lượng các chương trình thực hiện trên hệ thống là
trong hai dạng đơn lệnh – đa dữ liệu (SIMD) và đa lệnh – đa dữ liệu (MIMD).
nhiều. Phân tải là việc phân bổ các tiến trình tính toán trên tài nguyên hệ
Truyền thông điệp được sử dụng nhiều vì nó là cơ chế song song đơn giản, sử
thống sao cho hiệu năng hoạt động của hệ thống là tối ưu. Do đó trong chính
dụng các trình biên dịch hiện có như C/C++, Fotran, Java… không cần sự hỗ
các phần mềm phân tải phải sử dụng các phần mềm quản lý tài nguyên và lập
trợ của một trình biên dịch đặc biệt nào. Hơn nữa, các thư viện truyền thông
lịch. Phần mềm quản lý tài nguyên còn được sử dụng bởi người sử dụng trong
điệp rất linh hoạt và sẵn dùng, người lập trình có thể tự điều khiển việc song
việc quản trị hệ thống, đánh giá hiệu năng hệ thống. Một số sản phẩm phân tải
song của chương trình, tối ưu nó để tăng hiệu năng thực hiện. Các thư viện
và quản lý tài nguyên thường được sử dụng trong các hệ thống tính toán song
truyền thông điệp phổ biến hiện nay có thể kể đến là MPI (Message Passing
song phân cụm là:
Interface), PVM (Parallel Virtual Machine) và Active Message. Mỗi thư viện
đều có các ưu nhược điểm riêng nhưng MPI được coi là thư viện truyền thông
32
điệp ổn định, hiệu quả, linh hoạt và thích hợp cho các chương trình theo mô
33
Switch : BayStack 450-24T 10/100/1000 Switch
hình truyền thông điệp.
-Trung tâm máy tính trường Đại học Bách Khoa Hà Nội nơi thực tập tin đại
MPI là một chuẩn được phát triển bởi MPIF (Message Passing Interface
cương cho cả trường, thực tập nâng cao và đào tạo các lớp ngắn hạn.
Forum). Nó định ra một giao diện lập trình thích hợp cho việc viết các chương
Hàng năm được bổ sung một số thiết bị mới nhằm đáp ứng nhu cầu thực hành
trình theo mô hình truyền thông điệp với mục tiêu linh hoạt và hiệu quả.
của sinh viên.
MPIF, với sự tham gia của hơn 40 tổ chức, bắt đầu đưa ra chuẩn này từ năm
Được sự giúp đỡ của trung tâm hiệu năng cao, trung tâm đã xây dựng phòng
1992 với phiên bản 1.0. Hiện nay tồn tại hai thư viện truyền thông điệp theo
thực tập nâng cao sử dụng công nghệ song song phân cụm cluster.
chuẩn MPI phổ biến là LAM và MPICH.
Cấu hình phần cứng của hệ thống:
2.5 Kiến trúc hệ thống tính toán song song phân cụm BKCLUSTER.
Máy chủ:
BKCluster là hệ thống tính toán song song phân cụm được xây dựng tại
Server IBM xSeries 260
Trung Tâm Tính Toán Hiệu Năng Cao trường Đại Học Bách Khoa Hà Nội.
2x CPU Intel Xeon 3.16 MHz
Hệ thống có mục đích chính làm dịch vụ tính toán để thực hiện các bài toán
2 GB RAM DDR2
kỹ thuật có yêu cầu tính toán lớn.
3 x 36 GB HDD- 15K RPM HostSwap Drive
2.5.1 Kiến trúc phần cứng của hệ BKCLUSTER
Support RAID 0,1,5
- Hệ thống BKLUSTER được xây dựng theo mô hình song song phân cụm
Network Controller Integrated: 10/100/1000 Gigabit
với 1 máy tính đóng vai trò máy chủ, 32 máy tính đóng vai trò máy trạm, các
Máy trạm:
máy tính được nối với nhau theo kiểu Ethernet – thông qua switch.
IBM Lenovo ThinkCentre E50
Cấu hình phần cứng của các máy trong hệ thống :
CPU P4 3.0 GHz With Hyper Theading Technology
Máy chủ :
512 MB RAM DDR
• HP NetServer LH6000
80GB HDD 7200RPM SATA. Ethernet 10/100 Mbps
• 6 x CPU Intel Pentium III Xeon 700 MHz
Máy trạm
• Bộ nhớ trong : 1GB SDRAM
FPT CPU PIII 800MHz
• NetWork Card : 10/100 TX NIC
128MB RAM/ 20GB HDD. Ethernet 10/100Mbps.
Máy trạm :
• CPU Intel Pentium III 500 MHz
• Bộ nhớ trong : 256 MB SDRAM
• NetWork Card : 10/100 3COM Ethernet Adapter
34
35
a) Thư viện và môi trường lập trình :
Trình biên dịch C : gcc, cc
Trình biên dịch C++ : g++
Trình biên dịch Fortran : g77
Thư viện tính toán : Linpack, Scalapack
b) Phần mềm quản lý tài nguyên và phân tải
OpenPBS là hệ thống phân tải của NASA phát triển. Phiên bản OpenPBS là
phiên bản mã nguồn mở. PBS ra đời sau các hệ thống phân tải khác như DQS,
Condor nên khắc phục được một số nhược điểm của hệ thống trên, hơn nữa
Hình 2.8 Kiên trúc phần cứng của hệ thống BKCLUSTER
2.5.2 Kiến trúc phần mềm cài đặt trong hệ BKCluser
Các máy chủ và máy trạm trong hệ thống BKSupComp đều cài đặt hệ điều
hành RedHat Linux 7.3.
PBS được thiết kế theo hướng mở có khả năng thay đổi và tối ưu cho phù hợp
với hệ thống.
c)Thư viện truyền thông điệp
Hệ thống BKCluster là hệ thống tính toán song song phân cụm theo mô hình
truyền thông điệp.
Hệ thống sử dụng thư viện MPICH phiên bản 1.2.4. Khác với đa số các thư
Giao diện phát triển ứng dụng
viện truyền thông điệp đã được biên dịch thành dạng các gói RPM để có thể
dễ dàng cài đặt, MPICH là thư viện duy nhất được cung cấp dưới dạng mã
Thư viện truyền thông điệp
nguồn mở. Do đặc tính mã nguồn mở, khi cài đặt MPICH yêu cầu các bước
cấu hình và thiết lập tham số tương đối phức tạp, tuy nhiên người sử dụng có
Hệ thống quản lý phân tải
thể sửa đổi mã lệnh của MPICH để có thể xây dựng riêng một thư viện truyền
thông điệp có thêm những đặc tính phù hợp với hệ thống của mình. Trên thế
HĐH LINUX
giới đã có một số dự án nghiên cứu xây dựng môi trường truyền thông điệp có
Các nút tính toán
khả năng chịu lỗi (Fault Tolerant Message Passing Interface – FTMPI) dựa
trên nền thư viện MPICH mà tiêu biểu là MPICH-V1 và MPICH-V2. Một yêu
cầu đặt ra với hệ BKCluster là phải có khả năng chống lỗi cho nên đã sử dụng
Bảng 2.1 Kiến trúc phần mềm hệ thống
thư viện MPICH thay cho thư viện LAM -MPI là thư viện có sẵn khi cài đặt
hệ điều hành Linux 7.3.
36
37
Mục đích
Tên phần mềm đánh giá hiệu
năng
Đánh giá hiệu năng tính toán của CPU
Linpack
đơn trên các máy trạm
Đánh giá hiệu năng tính toán của toàn
Nasa Parallel Benchmark
bộ hệ thống
Đánh giá hiệu năng truy cập bộ nhớ
Stream
trong trên các máy trạm
Hình 2.9 Hai phần mềm PBS và MPICH trong hệ thống BKCluster
Đánh giá hiệu năng truyền thông mạng
NetPerf
giá hiệu năng của hệ BKCluster. Các phần mềm này sẽ được biên dịch và
Đánh giá hiệu năng của thư viện
NetPIPE
chạy trên toàn bộ hệ thống, để đưa ra những thông số về tốc độ tính toán, tốc
MPICH
2.6 Quy trình đánh giá hiệu năng của hệ thống BKCluster
Một số phần mềm đo hiệu năng thông dụng sử dụng mã nguồn mở để đánh
độ truy cập bộ nhớ trong, tốc độ truyền thông, và tốc độ gửi thông điệp của
thư viện MPICH. Từ những thông số trên, ta có thể đánh giá một cách tổng
quát về hệ thống tính toán song song phân cụm BKCluster. Việc triển khai cài
đặt và sử dụng các phần mềm đo hiệu năng trên hệ thống cụ thể như sau :
Bảng 2.2 Các phần mềm đo hiệu năng
38
39
một máy tính duy nhất. Quá trình đo hiệu năng được tiến hành bằng cách
chạy một số chương trình song song và đo tốc độ tính toán trên các máy của
hệ thống với sự thay đổi về số lượng máy trạm và độ lớn của bài toán.
Gói phần mềm đo hiệu năng được sử dụng là NPB (Nasa Parallel Benchmark)
của NASA. Gói phần mềm này gồm 5 chương trình hạt nhân EP, CG, MG,
FT, IS và 3 chương trình mô phỏng ứng dụng LU, BT, SP. Mỗi chương trình
trong gói phần mềm có một đặc thù riêng :
EP - Embrassingly Parralel : hạt nhân này được dùng để đo khả năng tính
toán độc lập của các vi xử lý trong một hệ thống máy tính song song. Chương
trình này hạn chế việc sử dụng các thao tác trao đổi dữ liệu giữa các vi xử lý,
Hình 2.10 Quy trình đo hiệu năng hệ BKCluster
2.6.1 Đo hiệu năng tính toán (năng lực của CPU)
do đó kết quả thu được có thể xem là hiệu năng cực đại về khả năng tính toán
mà mọi chương trình ứng dụng có thể đạt được.
MG – MultiGrid : đây là hạt nhân đo hiệu năng của hệ thống về mặt truyền
Do mục đích chính của hệ thống là thực hiện việc tính toán kỹ thuật nên cần
thông với dữ liệu truyền thông có tính cấu trúc.
phải xác định các số đo phản ánh tốc độ thực hiện các phép toán. Quá trình đo
CG - Conjugate Gradient : thực hiện các phép toán trên ma trận thưa. Các
sẽ được thực hiện trên hai mặt sau của hệ thống :
giá trị của ma trận thưa được sinh ngẫu nhiên. Kết quả đo của hạt nhân này
a) Đo hiệu năng tính toán của từng máy trạm : quá trình này sẽ đưa ra tốc
phản ánh hiệu năng về mặt truyền thông của bài toán khi dữ liệu là phi cấu
độ tính toán của một máy trạm riêng lẻ. Bài toán được thực hiện một cách
trúc.
tuần tự, nói một cách khác là ta tách rời khỏi hệ thống để xác định năng lực
FT - 3 D Fast Fourier Transformation : sử dụng phép biến đổi Fourier
tính toán độc lập của máy trạm .
nhanh sang miền tần số trong không gian 3 chiều trên tập các giá trị cho
Phần mềm đo hiệu năng được sử dụng là Linpack, phiên bản viết bằng ngôn
trước. Kết quả của hạt nhân này phản ánh hiệu năng về mặt truyền thông của
ngữ Fortran. Phần mềm này sẽ gọi hai hàm của thư viện Lapack là một trong
hệ thống.
những thư viện phép toán kỹ thuật có sử dụng trong hệ thống BKCluster.
IS - Integer Sort : hạt nhân này sinh ra tập các giá trị nguyên, phân bố đều,
Chương trình Linpack sẽ được biên dịch bằng trình biên dịch g77 và chạy trên
sau đó là thực hiện sắp xếp. Sự phân bố ban đầu của các số nguyên là ảnh
các máy trạm, kết quả thu được dưới dạng MFLOPS.
hưởng đến hiệu năng của hệ thống.
b) Đo hiệu năng tính toán của toàn bộ hệ thống : quá trình này sẽ đưa ra
tốc độ tính toán của toàn bộ hệ thống đối với một số bài toán song song như
40
41
Ba chương trình mô phỏng LU, BT, SP được xây dựng nhằm biểu diễn chức
Biên dịch các chương trình trong gói phần mềm NPB với các trình biên dịch
năng của chương trình tính toán hoạt động của chất lỏng CFD –
gcc và g77, thư viện truyền thông điệp MPICH, kích thước bài toán là lớp A.
Computational Fluid Dynamic.
Chạy các chương trình đo hiệu năng trên các máy trạm, xác định hiệu năng
Ứng với mỗi chương trình trên, gói phần mềm còn cho phép thay đổi kích
thước bài toán đầu vào. Các kích thước này chia thành 5 lớp có tên tương ứng
là S, W, A, B, C trong đó lớp S là lớp có kích thước nhỏ nhất, lớp C là lớp có
kích thước lớn nhất. Tùy thuộc vào từng mục đích cụ thể mà ta chọn kích
thước thuộc lớp phù hợp, thông thường lớp S (Sample) và W (WorkStation)
được dùng để thử nghiệm chương trình, các lớp A, B, C được dùng để kiểm
tra hiệu năng của hệ thống ứng với những tải thực theo kích thước tăng dần .
Cụ thể tên gọi và kích thước của 5 lớp này như sau :
tương ứng, vẽ biểu đồ.
2.6.2 Đo hiệu năng truy cập bộ nhớ trong
Một yếu tố ảnh hưởng lớn đến khả năng tính toán trên từng máy trạm đó là
tốc độ truy cập vào bộ nhớ trong (RAM). Đối với hệ điều hành Linux, khi độ
lớn của toàn bộ các tiến trình vượt quá dung lượng của bộ nhớ trong thì sẽ
dẫn đến hiện tượng truy cập vào swap. Quá trình đo hiệu năng truy cập bộ
nhớ trong sẽ cho thấy giới hạn trên của kích thước bài toán để có thể chạy một
cách hiệu quả đối với cấu hình phần cứng của các máy trạm. Chương trình đo
hiệu năng sẽ chạy dưới dạng một bài toán tuần tự trên một nút mạng độc lập.
Lớp
Độ lớn dữ liệu đầu vào
S
224
W
226
A
228
B
230
C
232
Phần mềm đo hiệu năng được sử dụng là phần mềm Stream. Phần mềm này
được viết bằng ngôn ngữ C, thực hiện các phép toán trên dữ liệu là các mảng
một chiều với kiểu số thực độ chính xác kép (8 byte). Kích thước của mảng có
thể thay đổi để tìm ra dung lượng bộ nhớ trong cực đại có thể sử dụng cho
một bài toán và kích thước bài toán là như nào thì tốc độ truy cập vào bộ nhớ
trong là lớn nhất.
Quá trình đo sẽ được thực hiện như sau :
Thay đổi kích thước của mảng giá trị đầu vào (tức là độ lớn) của bài toán lần
lượt từ khoảng 50 MB đến một giá trị lớn hơn 256 MB (vì bộ nhớ trong của
Bảng 2.3 Độ lớn của các lớp dữ liệu gói phần mềm NPB
mỗi máy trạm là 256 MB).
Gói phần mềm này cho phép người quản trị đánh giá được hiệu năng tính toán
Xác định khoảng giá trị của kích thước giá trị đầu vào mà tại đó tốc độ truy
của toàn hệ thống và dự đoán được hệ thống thích hợp với những bài toán
cập bộ nhớ trong đối với các phép toán ma trận là lớn nhất.
song song dạng nào.
Quá trình đo sẽ được thực hiện như sau :
42
43
Xác định giá trị lớn nhất của kích thước giá trị đầu vào mà tại đó tốc độ truy
hai máy trạm. Kết quả quan trọng nhất cần đưa ra là kích thước gói tin ứng
cập bộ nhớ trong giảm xuống đột ngột (lúc này xảy ra hiện tượng truy cập vào
với tốc độ truyền cực đại.
swap).
Các số liệu thu được sẽ dùng để vẽ các biểu đồ sau :
Thu thập số liệu tại mỗi điểm đo, vẽ thành biểu đồ.
Biểu đồ biểu thị tương quan giữa tốc độ truyền thông và dung lượng gói tin
2.6.3 Đo hiệu năng truyền thông.
Biểu đồ biểu thị tương quan giữa tốc độ truyền thông và thời gian truyền tin
Khả năng truyền thông giữa các nút trong toàn bộ hệ thống tính toán song
Biểu đồ biểu thị tương quan giữa dung lượng và thời gian truyền gói tin
song phân cụm ảnh hưởng rất lớn đến khả năng hoạt động của toàn hệ thống.
Các biểu đồ trên cho ta cái nhìn khách quan về hiệu năng của thư viện
Trong hệ BKCluster các máy trạm và máy chủ được nối với nhau thông qua
MPICH.
switch.
Phần mềm đo hiệu năng được sử dụng là phần mềm Netperf (Net
Performance). Netperf cho phép đánh giá hiệu năng truyền thông giữa hai nút
bất kỳ trong mạng Quá trình đo hiệu năng truyền thông mạng sẽ đưa ra những
con số chính xác về tốc độ gửi và nhận gói tin giữa hai nút bất kỳ trong hệ
thống. Những kết quả thu được sẽ cho phép người quản trị rút ra kết luận về
những mặt sau :
Kích thước gói tin truyền thông bằng bao nhiêu thì tốc độ truyền là cao nhất
Ảnh hưởng của vùng đệm socket đến tốc độ nhận gói tin
So sánh tốc độ truyền tin giữa một số giao thức
Quá trình đo sẽ được thực hiện giữa hai máy trạm với nhau và giữa máy trạm
với máy chủ.
2.6.4 Đo hiệu năng của thư viện MPICH
Hiệu năng của thư viện MPICH được đánh giá bằng phần mềm NetPIPE.
Phần mềm náy cho phép đo hiệu năng truyền thông mạng ứng với nhiều giao
thức khác nhau (TCP, MPI …), tuy nhiên khi ứng dụng vào hệ thống
BKCluster, ta chỉ biên dịch để thực hiện đo hiệu năng truyền thông điệp bằng
thư viện MPI (việc đo hiệu năng truyền thông bằng giao thức TCP đã được
thực hiện bằng phần mềm NetPerf). Quá trình đo hiệu năng sẽ thực hiện giữa
44
CHƯƠNG 3 CÁC PHƯƠNG PHÁP ĐO HIỆU NĂNG
45
thực trong 1 giây).Tuy nhiên, tuỳ theo từng mục đích đặc biệt, vẫn có thể tồn
tại những thứ nguyên khác (tuy nhiên hiện nay điều này rất ít khi xảy ra), ví
dụ như thứ nguyên kết quả trả về của 2 hạt nhân IS (Interger Sort) và EP
3.1 Đo hiệu năng tính toán
(Embrassingly Parallel) trong gói phần mềm NPB có thứ nguyên là MOPS.
Nguyên tắc hoạt động chung của các chương trình đo hiệu năng tính toán là
Đối với hạt nhân IS, phép toán được thực hiện là “sắp xếp số nguyên” còn đối
thực hiện một số lớn các câu lệnh tính toán, đo thời gian chạy toàn bộ chương
với hạt nhân EP, phép toán được thực hiện là “sinh ngẫu nhiên các số phức”.
trình, sau đó tính ra kết quả có dạng số phép tính trong một đơn vị thời gian
Đơn vị đo hiệu năng thông dụng nhất hiện nay là MFLOPS, để tính ra được
hoặc tổng số câu lệnh, tổng số hàm thực hiện trong một đơn vị thời gian.
kết quả theo thứ nguyên này cần phải xác định thời gian thực hiện chương
Những chương trình đo hiệu năng tính toán ban đầu như WhetStone,
trình (Benchmark Time) và tổng số phép toán dấu phẩy động (Floating Point
DhryStone đo hiệu năng bằng cách thực hiện một tập các module con, mỗi
Operation Count) được thực hiện.
module có chức năng thực hiện phép toán trên các kiểu dữ liệu riêng như : số
Thời gian thực hiện chương trình (Benchmark Time) ký hiệu là T(N,p) :
nguyên, số thực hay thực hiện các câu lệnh như : lệnh rẽ nhánh, lệnh gọi các
được định nghĩa là thời gian để thực hiện bài toán là N (size N) với p vi xử lí.
chương trình con. Với mỗi module, người sử dụng có thể thay đổi các tham số
Bài toán được gọi là có độ lớn N nếu vector biểu diễn các tham số đầu vào
đầu vào cho phù hợp với từng hệ thống cụ thể. Các tham số này liên quan đến
của bài toán có N phần tử.
kích thước của dữ liệu đầu vào dưới dạng số nghìn lần đoạn lệnh (instruction)
Số phép toán dấu phẩy động (floating point operation count) ký hiệu là F(N)
thực hiện trong mỗi module. Kết quả trả về của chương trình sẽ có thứ nguyên
đại lượng này được tính bằng số phép toán dấu phẩy động cần được thực hiện
được định nghĩa riêng như :
khi giải quyết bài toán có kích thước N. Việc kiểm tra được tiến hành trên cả
MWIPS (số nghìn đoạn lệnh của WhetStone trong 1 đơn vị thời gian) đối với
bài toán đo hiệu năng và chương trình cài đặt tương ứng để xác định ra số
các kết quả trả về của chương trình WhetStone.
phép tính dấu phẩy động cần phải thực hiện trong việc giải quyết các bài toán
DhryStone Per Second (số vòng lặp DhryStone trong 1 đơn vị thời gian) đối
đơn giản. Hơn nữa có thể còn cần phải có một chương trình đóng vai trò bộ
với kết quả trả về của chương trình DhryStone.
đếm hoặc một phần cứng chuyên dụng dùng để đếm các phép toán dấu phẩy
Các chương trình đo hiệu năng tính toán từ dạng mã lệnh đơn giản (Synthetic
động được thực hiện khi giải quyết các bài toán phức tạp. Để phân biệt các
Code) được phát triển lên thành các chương trình (hoặc module chương trình)
loại phép tính dấu phẩy động, người ta định nghĩa thêm các loại số đo như sau
thực hiện mục đích cụ thể hơn trong tính toán khoa học, đó là các hạt nhân
Benchmark floating point operation count, ký hiệu là FB(N) : là số phép
(kernel) và mô phỏng ứng dụng (Simulation Application). Đối với những
toán dấu phẩy động được sử dụng để thực hiện bài toán ở dạng tuần tự.
chương trình ở dạng trên, các phép toán chủ yếu thực hiện trên miền số thực
và kết quả được trả về có thứ nguyên là MFLOPS (số triệu lần phép toán số
47
46
Hardware floating point operation count, ký hiệu là FH(N,p) : là toàn bộ số
3.2 Đo hiệu năng truy cập bộ nhớ trong
phép toán dấu phẩy động mà phần cứng phải thực hiện khi giải quyết bài toán
Các phần mềm đo hiệu năng truy cập bộ nhớ trong (RAM) thường được xây
ở dạng song song với p vi xử lí. Giá trị này có thể lớn hơn giá trị FB(N).
dựng theo nguyên tắc sau :
Dưới đây là bảng biểu diễn số phép toán trên dấu phẩy động (flop) thực sự đối
- Cấp phát một khối lượng lớn bộ nhớ trong cho các biến tĩnh sử dụng trong
với từng phép tính cụ thể :
chương trình (thường là kiểu mảng 1 chiều với các phần tử số thực).
- Thực hiện các phép toán cộng, trừ, nhân, chia hoặc tổ hợp các phép toán
Kiểu phép toán số thực
Số phép toán số thực (flop)
trên, đo thời gian thực hiện cả chương trình, từ đó tính ra kích thước của
những dữ liệu đã cấp phát được xử lý trong một đơn vị thời gian.
1
Kết quả trả về của các phần mềm đo hiệu năng truy cập bộ nhớ trong thường
Chia, căn bặc hai
4
có thứ nguyên là MB/s (MegaByte per Second). Thứ nguyên này biểu diễn dữ
Lũy thừa, sin, cos …
8
liệu tính theo MegaByte được xử lý trong vòng 1 giây.
cộng, trừ, nhân
Một đặc điểm của hệ điều hành Linux là khi tổng kích thước của bộ nhớ cần
Bảng 3.1 Sự tương ứng các phép toán số thực và đơn vị flop
Từ hai thông số trên suy ra số phép toán dấu phẩy động thực hiện trong một
đơn vị thời gian (Benchmark Performance) ký hiệu là RB(N,T): được định
nghĩa bằng tỷ lệ của Benchmark floating point operation count so với
Benchmark Time.
cấp phát vượt dung lượng của bộ nhớ trong thì sẽ dẫn đến việc truy cập vào
vùng đệm swap. Swap thuộc vào bộ nhớ ngoài nên tốc độ truy cập sẽ chậm
hơn tốc độ truy cập vào bộ nhớ trong rất nhiều, điều này sẽ gây ra việc giảm
đột ngột tốc độ thực hiện các phép toán trên. Từ các kết quả đo hiệu năng truy
cập bộ nhớ trong, người quản trị có thể biết được kích thước cực đại của bài
toán là bao nhiêu thì tốc độ tính toán là cao nhất.
RB ( N , p) =
FB ( N )
T ( N , p)
Đơn vị đo của đại lượng này là MFLOP/s
Qua công thức định nghĩa trên, ta thấy rằng hiệu năng của hệ thống được đánh
giá dựa trên benchmark floating point operation count hơn là dựa vào các
phép toán dấu phẩy động đã thực sự được phần cứng thực hiện. Mặc dù việc
tính toán với bộ nhớ phân tán có thể sẽ thực hiện nhiều phép tính hơn là việc
tính toán tuần tự, tuy nhiên chỉ có Benchmark floating point operation count
là được sử dụng để đo hiệu năng của hệ thống.
3.3 Đo hiệu năng truyền thông
Các chương trình đo hiệu năng truyền thông luôn có hai thành phần, module
server cài đặt trên máy đích và module client cài đặt trên máy nguồn. Module
server sẽ gửi các gói tin có kích thước khác nhau đến máy đích, máy đích sẽ
đo thời gian từ lúc gửi đến lúc nhận, kích thước của gói tin nhận được. Tùy
theo từng phần mềm mà những kết quả này có thê được hiển thị ngay tại máy
đích hoặc được gửi về và hiển thị tại máy nguồn. Để thực hiện điều này, hai
module server và client sẽ tạo ra hai kênh thông tin sau :
48
49
Kênh điều khiển : kênh này có nhiệm vụ truyền các tham số thiết lập ban
Đánh giá hiệu năng thư viện phần mềm một cách gián tiếp : Không phải
đầu, thông tin về cấu hình (khả năng này cho phép dùng module client để thiết
thư viện phần mềm nào cũng tồn tại phần mềm riêng đánh giá hiệu năng.
lập cấu hình của máy đích) … Kênh này cũng đóng vai trò truyền kết quả về
Trong trường hợp này thì quá trình đánh giá hiệu năng có thể thực hiện một
máy nguồn (nếu cần).
cách gián tiếp dựa vào các phần mềm chuyên dụng khác, ví dụ như phần mềm
Kênh dữ liệu : kênh này độc lập với kênh điều khiển có chức năng truyền các
đo hiệu năng truyền thông NetPIPE có thể được sử dụng để đánh giá hiệu
gói dữ liệu từ máy nguồn đến máy đích để thực hiện phép đo, quá trình kết
năng của các thư viện truyền thông điệp theo chuẩn MPI. Phần mềm này cho
nối và giao thức truyền thông tuỳ thuộc vào mục đích đo hiệu năng và tuân
phép định hướng biên dịch có sử dụng các hàm truyền thông điệp hoặc không,
theo sự thiết lập ban đầu của kênh điều khiển.
so sánh tốc độ truyền thông mạng trong trường hợp có và không sử dụng thư
Tốc độ truyền dữ liệu trên mạng phụ thuộc vào một số yếu tố sau :
viện MPI sẽ cho thấy hiệu năng của thư viện này.
- Giao thức gửi và nhận tin.
- Kích thước gói tin gửi.
- Kích thước bộ nhớ đệm của socket tại máy gửi và máy nhận.
Các thông số này có thể được thay đổi khi biên dịch các module hoặc nhập
vào dưới dạng tham số khi thực hiện chương trình. Kết quả đo hiệu năng
truyền thông mạng thường có thứ nguyên là MBps (MegaBit per second).
Đây là tổng số bit truyền được trong 1 giây.
3.4 Đo hiệu năng của thư viện phần mềm
Đo hiệu năng của thư viện lập trình thực chất là việc đo thời gian thực hiện
một số hàm quan trọng trong thư viện với các giá trị đầu vào khác nhau. Tuỳ
vào chức năng của thư viện cũng như mục đích của việc đánh giá hiệu năng
mà có hai cách đánh giá hiệu năng của thư viện trực tiếp và gián tiếp.
Đánh giá hiệu năng thư viện phần mềm một cách trực tiếp : một số
chương trình kiểu này là Linpack đánh giá hiệu năng thư viện tính toán
Lapack, ATLAS đánh giá hiệu năng thư viện tính toán BLAS. Kết quả trả về
có thứ nguyên phụ thuộc vào chức năng của thư viện, ví dụ Linpack trả về kết
quả có thứ nguyên là MFLOPS.