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

Luận văn: Đánh giá hiệu năng hệ thống song song phân cụm potx

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


Bộ Giáo dục và Đào tạo
Trờng Đại học Bách khoa Hà Nội








Luận văn thạc sĩ khoa học

Ngành: Xử lý thông tin và truyền thông

đánh giá hiệu năng hệ thống
song song phân cụm



Phạm Thanh Liêm








Hà Nội 2006



1
MỤC LỤC
MỞ ĐẦU………………………………………………………………… 6
CHƯƠNG 1 TỔNG QUAN VỀ ĐÁNH GIÁ HIỆU NĂNG HỆ THỐNG 8
1.1 Định nghĩa về đánh giá hiệu năng…………………………………… 8
1.2 Mục đích của việc đánh giá hiệu năng…………………………………. 8
1.3 Phân loại các phần mềm đo hiệu năng…………………………… 9
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…… 10
1.3.2 Phân loại dựa trên mục đích của chươ
ng trình……………………. 11
1.4 Sự phát triển của các phần mềm đo hiệu năng…………………… 15
CHƯƠNG 2 KIẾN TRÚC HỆ THỐNG TÍNH TOÁN SONG SONG….… 18
2.1 Giới thiệu chung…………………………………………………… 18
2.2 Phân loại các kiểu kiến trúc song song………………………………… 19
2.2.1 Kiến trúc máy tính Von Newmann…………………………… 19
2.2.2 Phân loại kiến trúc máy tính của Flynn……………………… … 20
2.3 Các mô hình lập trình song song…………………………………… 25
2.3.1 Mô hình đa luồng……………………………………………… 25
2.3.2 Mô hình truyền thông điệp………………………………… 25
2.3.3 Mô hình song song dữ liệu……………………………………… 26
2.4 Các vấn đề của một hệ thống tính toán song song phân cụm 26
2.4.1 Các khái niệm cơ bản 26
2.4.2 Cấu trúc phần cứ
ng hệ thống tính toán song song phân cụm………. 27
2.4.3 Các phần mềm sử dụng trong hệ thống song song phân cụm………. 28
2.5 Kiến trúc hệ thống tính toán song song BKCluster……………………. 32
2.5.1 Kiến trúc phần cứng của hệ thống BK Cluster…………………… 32
2.5.2 Kiến trúc phần mềm cài đặt trong hệ thống BK Cluster…………… 34
2.6 Quy trình đánh giá hiệu năng của hệ thống BK Cluser………… 36

2.6.1 Đo hiệu năng tính toán (năng lực của CPU)………………… 38

2
2.6.2 Đo hiệu năng truy cập bộ nhớ trong…………………………… 41
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
CHƯƠNG 3 CÁC PHƯƠNG PHÁP ĐO HIỆU NĂNG…………………. 44
3.1 Đo hiệu năng tính toán…………………………………………………. 44
3.2 Đo hiệu năng truy cập bộ nhớ trong………………………………… 47
3.3 Đo hiệu năng truyền thông…………………………………………… 47
3.4 Đo hiệu năng của thư viện phần mềm…………………………………. 48
CHƯƠNG 4 XÂY DỰNG CÁC CHƯƠNG TRÌNH THỰ
C HIỆN QUI
TRÌNH ĐO HIỆU NĂNG………………………………………………….

50
4.1 Xây dựng chương trình thực hiện quy trình đo hiệu năng…………… 50
4.2 Chương trình thực hiện các công việc đo hiệu năng………………… 51
4.2.1 Chương trình thực hiện việc đo hiệu năng tính toán…………… 51
4.2.2 Chương trình thực hiện đo hiệu năng truy cập bộ nhớ trong……… 53
4.2.3 Chương trình thực hiện đo hiệu năng truyền thông…………… 54
4.2.4 Chương trình thực hiện đo hiệ
u năng thư viện MPICH……………. 55
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


3
CÁC THUẬT NGỮ

Synthetic Code Mã lệnh đơn
Kernel Hạt nhân
Simulation Application Mô phỏng ứng dụng
Mega Instruction Per Second MIPS Triệu lệnh trên giây
Message Passing Interface MPI Thư viện truyền thông điệp
Open Passing Interface Open MP. Thư viện lập trình đa luồng
NASA Parallel Benchmark NPB Phần mềm đo hiệu năng song song
Single Intruction Single Data SISD Đơn dòng lệnh, đơn dòng dữ liệu
Single Instruction Multiple Data SIMD Đơn dòng lệnh, đa dòng dữ liệu
Multiple Instruction Multip Data MIMD Đa dòng lệnh, đa dòng dữ liệu
Nonumiform Memory Access NUMA Truy cập bộ nhớ không đồng nh
ất
Uniform Memory Access UMA Truy cập bộ nhớ đồng nhất
Symmetric Multi Processor SMP Đa bộ xử lý đối xứng
Portable Batch System PBS Hệ thống phân tải













4



DANH MỤC HÌNH

Hình 2.1 Nguyên lý kiến trúc máy tính Von Newmann…………………… 20
Hình 2.2 Kiến trúc SISD…………………………………………………… 20
Hình 2.3 Kiến trúc SIMD………………………………………………… 21
Hình 2.4 Kiến trúc MIMD Share Memory………………………………… 22
Hình 2.5 Kiến trúc MIMD Distributed Memory………………………… 23
Hình 2.6 Kiến trúc Core Duo Intel………………………………………… 24
Hình 2.7 Cấu hình kết nối Cluster…………………………………………. 24
Hình 2.8 Kiến trúc phần cứng hệ thống BK Cluster……………………… 34
Hình 2.9 Hai phần mềm PBS và MPICH………………………………… 36
Hình 2.10 Qui trình đo hiệu năng BK Cluster…………………………… 38
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









5

DANH MỤC BẢNG
Bảng 2.1 Kiến trúc phần mềm hệ thông……………………………………. 34
Bảng 2.2 Các phần mềm sử dụng đo hiệu năng……………………………. 37
Bảng 2.3 Độ lớn của các lớp dữ liệu gói phần mềm NPB…………………. 40
Bảng 3.1 Sự tương ứng các phép toán số thực và đơn vị flop…………… 46
Bảng 5.1 Kết quả đo hiệu năng CPU đơn…………………………………. 57
Bảng 5.2 Kết quả đo hiệu năng tính toán bằng hạ
t nhân EP………………. 58
Bảng 5.3 Kết quả đo hiệu năng tính toán bằng hạt nhân IS……………… 59
Bảng 5.4 Kết quả đo hiệu năng tính toán bằng hạt nhân CG……………… 60
Bảng 5.5 Kết quả đo hiệu năng tính toán bằng hạt nhân MG……………… 60
Bảng 5.6 Kết quả đo hiệu năng tính toán bằng hạt nhân LU………………. 61
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
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. 62















6
MỞ ĐẦU
Hiện nay trên thế giới nhờ các tiến bộ công nghệ cao, đã xây dựng được
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 lưới phục vụ cho việc nghiên cứu khoa học và các ứng dụng thực tế.
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
những thế hệ máy tính có khả năng tính toán với tốc độ nhanh.
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 để
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
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
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.
Trung tâm tính toán hiệu năng cao, Trường đại học Bách Khoa Hà Nội đang
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

thống BKGrid 2006 là sản phẩm của công trì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ó
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
hình mạng Ethernet và sử dụng các phần mềm mã nguồn mở: Hệ điều hành
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ư
viện truyền thông điệp
Đánh giá hiệu năng của hệ thống là một trong những nhiệ

m vụ cần thiết để
đư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ộ
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
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
trong hệ thống : Gồm phần cứng và phần mềm.
- Đá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í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
độ truyền tin trong mạng.

7
Đá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
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
toán, các thư viện truyền thông điệp.
- Đá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
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 độ
,
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ể
đá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
thích của hệ thống đối với những dạng bài toán cụ thể.
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
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
song song phân cụm BKCLUSTER. Cấu trúc của luận văn gồm 6 chương với
nội dung cụ thể như sau :
Chương 1 Tổng quan về đánh giá hiệu năng hệ thống máy tính.
Chương 2 Kiến trúc của hệ thống tính toán BKCLUSTER.
Chương 3 Các phương pháp đo hiệu năng.
Chương 4 Xây dựng chương trình thực hiện quy trình đo hiệu năng.
Chương 5 Các kết quả đ

o hiệu năng.
Chương 6 Kết luận.
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
và Trung tâm máy tính thuộc Trường đại học Bách Khoa Hà Nội.
Tôi xin cảm ơn chân thành nhất đến thầy PGS.TS Nguyễn Thanh Thủy và Ths
Đ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
văn này.
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
đào tạo sau đại học, Tr
ường đại học Bách Khoa Hà Nội đã truyền những kiến
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

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à

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
đ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
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ố
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
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
nhiều khía cạnh như tính toán, truyền thông, truy cập bộ nhớ
Với mỗi mục đích khác nhau sẽ có những ph
ần mềm tương ứng để đánh giá,
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 để
đá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
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
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.

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
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
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
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
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ộ
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ể
được phân chia theo mức độ tăng dần thành 3 loại chính :
Mã lệnh đơn giản (Synthetic Code),
Hạt nhân (Kernel)
Mô phỏng ứng dụng (Simulation Application).
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ư
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,
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à
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
đầ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
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
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

11
năng truyền thông hoặc truy cập bộ nhớ trong hiện nay vẫn được xếp vào
dạng mã lệnh đơn giản.
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
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.
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
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
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.
Mô phỏng ứng dụng : là những chương trình được viết ra để đánh giá sự

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
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ự
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
chương trình mô phỏng ứng dụng thường được cung cấp dưới dạng một phần
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
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
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
và phần mềm.
1.3.2 Phân loại dựa trên mục đích của chương trình.
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
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
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ó 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
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
để đánh giá hiệu nă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 :
đ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ộ
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
Phần mềm đo hiệu năng tính toán.
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
thập kỷ 80. Chương trình WhetStone được coi là chương trình đo hiệu năng
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
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ố

thực. Kiểu dữ liệu sử dụng trong WhetStone có thể có độ chính xác đơn hoặc
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
toán khác như : DhryStone, Digital Review. Đặc điểm chung của các chươ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ó
thứ nguyên được quy ước riêng, ví dụ WhetStone trả về giá trị có thứ nguyên
KWIPS (Kilo WhetStone Instrution Per Second), DhryStone trả về giá trị có
thứ nguyên DhryStone Per Second, Digital Review trả về giá trị có thứ
nguyên MVUPS (MicroVAX units of processing). Các giá trị này là số nghìn
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ị
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
cùng chạy một chương trình đo hiệu năng.
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ữ
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ữ
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
thuậ
t cụ thể như HeapSort. Giá trị trả về của các chương trình này có dạng
MIPS (Mega Instruction Per Second) là số triệu lần các câu lệnh được thực
hiện trong 1 giây.
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
đâ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
động (floating point). Kết quả trả về có thứ nguyên là MFLOPS (hàng triệu
phép tính dấu phẩy động trong 1 giây). M
ột trong những chương trình tiêu
biểu đầu tiên có sử dụng kiểu thứ nguyên này là Linpack của tác giả Jack

13
Dongarra trường đại học Tennesse. Linpack là một tập các chương trình con
nằm trong thư viện lập trình Lapack. Đây là chương trình đo hiệu năng có số

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à
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
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à
Java từ
phiên bản ban đầu viết bằng ngôn ngữ Fortran. Các chương trình đo
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
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
tính toán nổi tiếng khác như : Livermore, Nasa Parallel Benchmark (NPB).
Đặ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
đượ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
toán song song.
Phần mềm đo hiệu năng truyền thông.
Các chương trình đo hiệu năng truyền thông được sử dụng để đánh giá hiệu
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
tính toán. Các chương trình này đều có cấu trúc client – server với module
client được cài trên máy nguồn, module server được cài trên máy đích. Máy
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
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
truyền thông như : TCP, UDP hoặc thay đổi giá trị của các gói tin gửi đi, thay
đổ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 độ
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
số phần mềm đo hiệu năng truyền thông mạng phổ
biến :
- NetPerf của hãng Hewllet - Packard, phần mềm này được viết vào năm
1996, đến nay đã có phiên bản 3.0
- Iperf của nhóm tác giả tại đại học bang Illinois, phần mềm này được công
bố lần đầu vào năm 1999, đến nay đã có phiên bản 1.7.0


14
- UDPMoN của tác giả Richard Hughes-Jones, phần mềm này được viết vào
năm 2000, đến nay đã có phiên bản 3.2.
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
trên, phần mềm Netperf hay được dùng nhất khi đánh giá hiệu năng truyền
thông trong mạng LAN.
Phần mềm đo hiệu năng truy cập bộ nhớ trong.
Các chương trình đo hiệu năng truy cập bộ nhớ trong không có nhiều như
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
mạng, nhưng đóng vai trò quan trọng khi phân tích sự tương quan của dung
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
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
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
nhau. Các chương trình đo hiệu năng truy cậ
p bộ nhớ trong sẽ cho người quản
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
máy tính của hệ thống.
Phần mềm đo hiệu năng của thư viện chương trình.
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à
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
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
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à :
ATLAS đo hiệu năng của thư viện tính toán BLAS
Linpack đo hiệu năng của thư viện tính toán Lapack
NetPIPE đo hiệu năng của thư viện truyền thông điệp MPI. Về bản ch
ất
NetPIPE là chương trình dùng để so sánh hiệu năng truyền thông giữa một số
giao thức, tuy nhiên NetPIPE thường được cấu hình khi biên dịch để đánh giá

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ệ
thống tính toán song song phân cụm.

15
Phần mềm đo hiệu năng truy cập bộ nhớ ngoài
Quá trình đo hiệu năng của bộ nhớ ngoài có thể xem là việc đánh giá sự đáp
ứng của hệ thống đối với các lệnh đọc, ghi, khởi tạo hay xoá.
Đố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
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
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
dưới hai dạng sau : bộ nhớ trên máy trạm và hệ thống file mạng (Network File
System – NFS). Ứng với mỗi loại bộ nhớ ngoài trên sẽ có các phần mềm đo
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
cập bộ nhớ ngoài thông dụng :
Các phần mềm đo hiệu năng củ
a bộ nhớ trên máy trạm : IOStone, Bonnie++,
IOZone trong đó IOStone được coi là chương trình đo hiệu năng truy cập bộ
nhớ ngoài đầu tiên trên thế giới.
Các phần mềm đo hiệu năng truy cập hệ thống file mạng: NFSStone,
NHFStone.
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
ngữ C hoặc C++.
1.4 Sự phát triển của các phần mềm đo hiệu năng
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
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
đó một số chương trình được phát triển để có thể đo hiệu năng của những hệ
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
phong phú, về số lượng và được áp dụng để đánh giá máy tính đơn hoặc cả h


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ó
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
để 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
các chương trình đo hiệu năng.

16
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
hiệu năng : ban đầu các chương trình đo hiệu năng thường được viết để đánh
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ố
ví dụ như sau :
- 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

17
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
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
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
năng của các hệ thống máy tính khác nhau trên thế giới.
























18
CHƯƠNG 2 KIẾN TRÚC CỦA HỆ THỐNG TÍNH TOÁN SONG
SONG PHÂN CỤM
2.1 Giới thiệu chung.
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 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
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ự
không thể thực hiện được. Trong thời gian gần đây công nghệ sử dụng các
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
đặc biệt để có thể tính toán như một máy tính song song. Hệ thống như vậy
đượ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
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ò
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
đắt tiền.
Công nghệ tính toán song song phân cụm đã mở ra cơ hộ
i cho cả các nước
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ế
tạo ra những siêu máy tính cho riêng mình với giá thành rẻ.
Ở Việt Nam trong điều kiện kinh tế còn nghèo, chưa đủ kinh phí để đầu tư
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
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
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
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

19
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
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
lưới Việt Nam và quốc tế.(Grid Computing).
Các yêu cầu đặt ra cho hệ thống:
- Cung cấp một môi trường tính toán ổn định, hiệu năng cao.
- Cung cấp một môi trường lập trình cho những người lập trình chuyên
nghiệp, cũng như không hiểu sâu về lập trình song song. Hỗ trợ và chạy
chươ
ng trình từ xa.
- 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
năng và khả năng mở rộng cao. Đang được triển khai mở rộng ở các trung
tâm khác: Trung tâm máy tính trường Đại học bách khoa Hà Nội.
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
kiến trúc máy tính cluster.
2.2 Phân loại các kiểu kiến trúc song song
2.2.1 Kiến trúc máy tính Von Newmann
Các máy tính hiện nay đều xây dựng theo mô hình Von Newmann (tên nhà
bác học John Von Newmann).
Máy tính Von Newmann sử dụng khái niệm chương trình đã đượ

c lưu trữ sẵn.
CPU chạy một chương trình đã được lưu trữ sẵn, trong đó chỉ rõ các chuỗi
thao tác đọc và ghi trên bộ nhớ.

20

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
tính thực hiện công việc nào đó. Dữ liệu là thông tin được sử dụng trong
chương trình.
Bộ xử lý trung tâm (Central Processor Unit) lấy lệnh và dữ liệu từ bộ nhớ,
giải mã và sau đó thực hiện.
2.2.2 Phân loại ki
ến trúc máy tính của Flynn
a) Kiến trúc đơn lệnh- đơn dữ liệu (Single Intruction- Single Data)

Hình 2.2 Kiến trúc SISD

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.3 Kiến trúc SIMD
Đâ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
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ý
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ộ
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
những vấn đề chuyên dụng như xử lý ảnh, dự báo thời tiết.
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ớ

22

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
nhau, các CPU có thể chia sẻ một vùng nhớ chung (share memory) như một
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
một bộ xử lý tạo ra được tất cả các bộ xử lý khác biết đến.
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
truy cập bộ nhớ là UMA và NUMA.
Truy c
ập bộ nhớ đồng nhất (Uniform Memory Access): phổ biến trong loại
máy này là các máy đa bộ xử lý đối xứng (Symmetric Multi Processor: SMP)
Các bộ xử lý đông nhất, độ ưu tiên và thời gian truy cập tới bộ nhớ là như
nhau.
Truy cập bộ nhớ không đồng nhất (Nonumiform Memory Access: NUMA)
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ý
hai hoặc nhiều máy SMP.
- Kiến trúc MIMD kiểu bộ nhớ phân tán



23


Hình 2.5 Kiến trúc MIMD Distributed Memory
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
để 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
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ộ
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

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
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ó
hiệu ứng gì trên vùng nhớ của những bộ xử lý khác.
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
phải có nhiệm vụ định nghĩa rõ ràng khi nào dữ liệu
được truyền đi. Sự đồng
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ạng sử dụng cho sự di chuyển dữ liệu trong hệ thống này có thể có nhiều
loại.




24
- Kiến trúc lõi đôi (Core Duo)


Hình 2.6 Kiến trúc Core Duo của Intel

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.
d) Cấu hình kết nối song song (cluster)

Hình 2.7 Cấu hình kết nối cluster

×