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

11 1.3.2 Phân loại dựa trên mục đích của chương trình…………………….

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 Phần mềm đo hiệu năng song song NPB

Single Intruction Single Data Đơn dòng lệnh, đơn dòng dữ liệu SISD

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

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

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

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ộ

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

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

đị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

trình.

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ư

viện truyền thông điệp được sử dụng là PVM và MPI.

2.3.3 Mô hình song song dữ liệu

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ữ

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

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ấ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

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

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ộ

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

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

hiện với sự hỗ trợ của các trình dịch

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.

2.4.1 Các khái niệm cơ bản.

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

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

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

hệ thống con nằm trong khu vực địa lý hẹp và được quản lý tập trung như là

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

tính đơn bộ xử lý với các máy nhiều bộ sử lý (SMP: symmertric

multiprocesor).

Ư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ệ

thống dựa trên công nghệ LAN và PC có thể đạt hiệu năng rất cao trong khi

đó giá thành lại rẻ hơn nhiều so với các siêu máy tính.

27

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

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

hình mạng đều có tính tuỳ biến cao.

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.

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

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ị

của nút và các thiết bị mạng.

Các thiết bị phần cứng của nút tính toán

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ữ

liệu. Do vậy các nút có thể là các máy tính riêng biệt.

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à

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à

các máy trạm được ghép nối với nhau thông qua Ethernet hay một số kiểu

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

biệt, hoàn toàn có thể được nâng cấp, bổ xung mà không ảnh hưởng nhiều đến

các thành phần khác của hệ thống.

- Máy chủ đóng vai trò điều phối hoạt động của toàn bộ hệ thống: giao nhiệm

vụ cho những máy trạm, quản lý hệ thống file và làm điểm để hệ thống giao

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

lớn có thể có nhiều máy chủ, mỗi máy chủ quản lý một nhiệm vụ.

- Các máy trạm có thể chỉ đơn giản là các máy tính cá nhân (Personal

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

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

với các thiết bị ngoại vi: PCI, PCI express, NIC, I/O Port ...

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

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

những nhiệm vụ cố định (chủ yếu là tính toán). Người quản trị hệ thống chủ

yếu tương tác với các máy trạm thông qua máy chủ.

Các thiết bị mạng

Công nghệ mạng thường được sử dụng trong hệ thống tính toán song song

phân cụm là LAN và SAN (System Area Network). Các ứng dụng song song

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 độ

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

thông được đo bằng số triệu bit trên giây (Mbps) và độ trễ được tính bằng

micro giây. Các hệ thống phân cụm sử dụng mạng LAN thường dùng

Ethernet với băng thông khoảng (10-100) Mbps. Hiện nay, tốc độ của

Ethernet có thể lên đến 1Gbps như các thiết bị Giga Ethernet, Fast Ethernet.

Trong khi LAN chỉ cho phép tạo nên một hệ thống có bộ nhớ phân tán thì

SAN lại có thể hỗ trợ bộ nhớ phân tán chia xẻ (distributed shared memory)

cho phép tổ chức một bộ nhớ logic chia xẻ trong khi bộ nhớ vật lý phân tán

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.

Các nút trong hệ thống được ghép nối bằng cách sử dụng switch, các switch

có thể được ghép nối với nhau tùy theo số lượng nút của hệ thống.

2.4.3 Các phần mềm sử dụng trong hệ thống song song phân cụm

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

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ệ

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ó

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

khai trên các hệ điều hành dòng Unix như Linux, Unix, Solaris.Với sự ra đời

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ụ,

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

khai hệ thống song song phân cụm với khả năng tuỳ biến cao.

29

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

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

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.

a)Thư viện và môi trường lập trình

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

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

đ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ể 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

năng thực hiện của chương trình không được tối ưu do hệ thống song song

phân cụm có một số đặc điểm riêng biệt.

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

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à

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

cụm hiện nay có thể kể đến là MPI, PVM, Active Message và CMMD

(Connected Machine Message...), trong đó MPI với nhiều ưu điểm có thể coi

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ó 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à

một số chức năng mở rộng riêng. LAM MPI là bản cài đặt đã hỗ trợ đầy đủ

chuẩn MPI 2.0.

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,

mô hình dữ liệu song song cũng đang được nghiên cứu, triển khai và áp dụng

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

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

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

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

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

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

song song tiêu biểu hiện nay là: HPF (Hight Performance Fortran), Titanium

(kế thừa từ Java), Para++, ABC+, Split-C, BSP…

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

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

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

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

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

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ư

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

đề 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ế

giới. Các thư viện có thể kể đến là: LAPACK, BLAS, ARPACK,

ScaLAPACK, PETS

b) Các phần mềm quản lý tài nguyên và phân tải

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

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

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

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

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à

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ệ

thống sao cho hiệu năng hoạt động của hệ thống là tối ưu. Do đó trong chính

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

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

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

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

song phân cụm là:

31

- PBS (Portable Batch System) : hệ thống phân tải và quản lý tài nguyên rất

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

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

các công việc từ người sử dụng, bảo vệ công việc đó cho đến khi nó đượ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ó

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.

Sự linh động này làm cho PBS có khả năng đáp ứng cho nhiều hệ thống tính

toán.

- 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

đồ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

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

bằng tải động cho các công việc.

- CONDOR : thường dùng để phân tải tài nguyên và lập lịch cho các công

việc trên hệ thống máy trạm (workstations). Nó hỗ trợ sử dụng các điểm kiểm

tra (checkpoint) và chuyển giao các công việc giữa các máy trạm.

c) Các thư viện truyền thông điệp

Truyền thông điệp (message passing) là cơ chế giao tiếp phổ biến trong tính

toán song song. Các chương trình theo mô hình truyền thông điệp sẽ có một

trong hai dạng đơn lệnh – đa dữ liệu (SIMD) và đa lệnh – đa dữ liệu (MIMD).

Truyền thông điệp được sử dụng nhiều vì nó là cơ chế song song đơn giản, sử

dụng các trình biên dịch hiện có như C/C++, Fotran, Java… không cần sự hỗ

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

đ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

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

truyền thông điệp phổ biến hiện nay có thể kể đến là MPI (Message Passing

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ô

hình truyền thông điệp.

MPI là một chuẩn được phát triển bởi MPIF (Message Passing Interface

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

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ả.

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

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

chuẩn MPI phổ biến là LAM và MPICH.

2.5 Kiến trúc hệ thống tính toán song song phân cụm BKCLUSTER.

BKCluster là hệ thống tính toán song song phân cụm được xây dựng tại

Trung Tâm Tính Toán Hiệu Năng Cao trường Đại Học Bách Khoa Hà Nội.

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

kỹ thuật có yêu cầu tính toán lớn.

2.5.1 Kiến trúc phần cứng của hệ BKCLUSTER

- Hệ thống BKLUSTER được xây dựng theo mô hình song song phân cụm

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 tính được nối với nhau theo kiểu Ethernet – thông qua switch.

Cấu hình phần cứng của các máy trong hệ thống :

Máy chủ :

• HP NetServer LH6000

• 6 x CPU Intel Pentium III Xeon 700 MHz

• Bộ nhớ trong : 1GB SDRAM

• NetWork Card : 10/100 TX NIC

Máy trạm :

• CPU Intel Pentium III 500 MHz

• Bộ nhớ trong : 256 MB SDRAM

• NetWork Card : 10/100 3COM Ethernet Adapter

33

Switch : BayStack 450-24T 10/100/1000 Switch

-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

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.

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

của sinh viên.

Được sự giúp đỡ của trung tâm hiệu năng cao, trung tâm đã xây dựng phòng

thực tập nâng cao sử dụng công nghệ song song phân cụm cluster.

Cấu hình phần cứng của hệ thống:

Máy chủ:

Server IBM xSeries 260

2x CPU Intel Xeon 3.16 MHz

2 GB RAM DDR2

3 x 36 GB HDD- 15K RPM HostSwap Drive

Support RAID 0,1,5

Network Controller Integrated: 10/100/1000 Gigabit

Máy trạm:

IBM Lenovo ThinkCentre E50

CPU P4 3.0 GHz With Hyper Theading Technology

512 MB RAM DDR

80GB HDD 7200RPM SATA. Ethernet 10/100 Mbps

Máy trạm

FPT CPU PIII 800MHz

128MB RAM/ 20GB HDD. Ethernet 10/100Mbps.

34

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.

Giao diện phát triển ứng dụng

Thư viện truyền thông điệp

Hệ thống quản lý phân tải

HĐH LINUX

Các nút tính toán

Bảng 2.1 Kiến trúc phần mềm hệ thống

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

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ư

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ã

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ó

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ế

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ó

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

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

Hình 2.9 Hai phần mềm PBS và MPICH trong hệ thống BKCluster

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

giá hiệu năng của hệ BKCluster. Các phần mềm này sẽ được biên dịch và

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

độ 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 :

37

Tên phần mềm đánh giá hiệu Mục đích

năng

Linpack Đánh giá hiệu năng tính toán của CPU

đơn trên các máy trạm

Nasa Parallel Benchmark Đánh giá hiệu năng tính toán của toàn

bộ hệ thống

Stream Đánh giá hiệu năng truy cập bộ nhớ

trong trên các máy trạm

NetPerf Đánh giá hiệu năng truyền thông mạng

NetPIPE Đánh giá hiệu năng của thư viện

MPICH

Bảng 2.2 Các phần mềm đo hiệu năng

38

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 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

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

sẽ được thực hiện trên hai mặt sau của hệ thống :

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

độ 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

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

tính toán độc lập của máy trạm .

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

ngữ Fortran. Phần mềm này sẽ gọi hai hàm của thư viện Lapack là một trong

những thư viện phép toán kỹ thuật có sử dụng trong hệ thống BKCluster.

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

các máy trạm, kết quả thu được dưới dạng MFLOPS.

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ư

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ý,

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

thông với dữ liệu truyền thông có tính cấu trúc.

CG - Conjugate Gradient : thực hiện các phép toán trên ma trận thưa. Các

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

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

trúc.

FT - 3 D Fast Fourier Transformation : sử dụng phép biến đổi Fourier

nhanh sang miền tần số trong không gian 3 chiều trên tập các giá trị cho

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

hệ thống.

IS - Integer Sort : hạt nhân này sinh ra tập các giá trị nguyên, phân bố đều,

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

hưởng đến hiệu năng của hệ thống.

40

Ba chương trình mô phỏng LU, BT, SP được xây dựng nhằm biểu diễn chức

năng của chương trình tính toán hoạt động của chất lỏng CFD –

Computational Fluid Dynamic.

Ứ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 :

Lớp Độ lớn dữ liệu đầu vào

S

W

A

B

C 224 226 228 230 232

Bảng 2.3 Độ lớn của các lớp dữ liệu gói phần mềm NPB

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

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

song song dạng nào.

Quá trình đo sẽ được thực hiện như sau :

41

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

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.

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

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.

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

mỗi máy trạm là 256 MB).

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ập bộ nhớ trong đối với các phép toán ma trận là lớn nhất.

42

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

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

swap).

Thu thập số liệu tại mỗi điểm đo, vẽ thành biểu đồ.

2.6.3 Đo hiệu năng truyền thông.

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

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.

Trong hệ BKCluster các máy trạm và máy chủ được nối với nhau thông qua

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

43

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

với tốc độ truyền cực đại.

Các số liệu thu được sẽ dùng để vẽ các biểu đồ sau :

Biểu đồ biểu thị tương quan giữa tốc độ truyền thông và dung lượng gói tin

Biểu đồ biểu thị tương quan giữa tốc độ truyền thông và thời gian truyền tin

Biểu đồ biểu thị tương quan giữa dung lượng và thời gian truyền gói tin

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

MPICH.

44

CHƯƠNG 3 CÁC PHƯƠNG PHÁP ĐO HIỆU NĂNG

3.1 Đo hiệu năng tính toán

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à

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

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

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.

Những chương trình đo hiệu năng tính toán ban đầu như WhetStone,

DhryStone đo hiệu năng bằng cách thực hiện một tập các module con, mỗi

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ố

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

chương trình con. Với mỗi module, người sử dụng có thể thay đổi các tham số

đầ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

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)

thực hiện trong mỗi module. Kết quả trả về của chương trình sẽ có thứ nguyên

được định nghĩa riêng như :

MWIPS (số nghìn đoạn lệnh của WhetStone trong 1 đơn vị thời gian) đối với

các kết quả trả về của chương trình WhetStone.

DhryStone Per Second (số vòng lặp DhryStone trong 1 đơn vị thời gian) đối

với kết quả trả về của chương trình DhryStone.

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

Code) được phát triển lên thành các chương trình (hoặc module chương trình)

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

(kernel) và mô phỏng ứng dụng (Simulation Application). Đối với những

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ố

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

(Embrassingly Parallel) trong gói phần mềm NPB có thứ nguyên là MOPS.

Đố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

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”.

Đơn vị đo hiệu năng thông dụng nhất hiện nay là MFLOPS, để tính ra được

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

trình (Benchmark Time) và tổng số phép toán dấu phẩy động (Floating Point

Operation Count) được thực hiện.

Thời gian thực hiện chương trình (Benchmark Time) ký hiệu là T(N,p) :

đượ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í.

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

của bài toán có N phần tử.

Số phép toán dấu phẩy động (floating point operation count) ký hiệu là F(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

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ả

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ố

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

đơ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ộ

đế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

độ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

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

Benchmark floating point operation count, ký hiệu là FB(N) : là số phép

toán dấu phẩy động được sử dụng để thực hiện bài toán ở dạng tuần tự.

46

Hardware floating point operation count, ký hiệu là FH(N,p) : là toàn bộ số

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

ở 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ướ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

với từng phép tính cụ thể :

Kiểu phép toán số thực Số phép toán số thực (flop)

1 cộng, trừ, nhân

4 Chia, căn bặc hai

8 Lũy thừa, sin, cos …

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

pNR (

,

)

=

B

NF ( ) B , pNT (

)

Benchmark Time.

Đơ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.

47

3.2 Đo hiệu năng truy cập bộ nhớ trong

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 theo nguyên tắc sau :

- 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

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

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.

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

có thứ nguyên là MB/s (MegaByte per Second). Thứ nguyên này biểu diễn dữ

liệu tính theo MegaByte được xử lý trong vòng 1 giây.

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

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.

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

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

đầu, thông tin về cấu hình (khả năng này cho phép dùng module client để thiết

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ề

máy nguồn (nếu cần).

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

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ố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

theo sự thiết lập ban đầu của kênh điều khiển.

Tốc độ truyền dữ liệu trên mạng phụ thuộc vào một số yếu tố sau :

- 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.

49

Đá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

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.

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

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

đo hiệu năng truyền thông NetPIPE có thể được sử dụng để đánh giá hiệu

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

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,

so sánh tốc độ truyền thông mạng trong trường hợp có và không sử dụng thư

viện MPI sẽ cho thấy hiệu năng của thư viện này.

50

CHƯƠNG 4 XÂY DỰNG CHƯƠNG TRÌNH THỰC HIỆN QUI TRÌNH ĐO

HIỆU NĂNG

4.1 Xây dựng chương trình thực hiện quy trình đo hiệu năng

Các phần mềm đo hiệu năng được cung cấp từ nhiều nguồn khác nhau,

viết bằng nhiều ngôn ngữ lập trình như C, C++, Fortran. Có những chương

trình chỉ được viết bằng duy nhất một ngôn ngữ như NetPerf, NetPIPE viết

bằng ngôn ngữ C, Linpack viết bằng Fortran, nhưng cũng tồn tại hiện tượng

trong một gói phần mềm có các chương trình con được viết bằng nhiều ngôn

ngữ khác nhau như các chương trình đo hiệu năng NPB. Hơn nữa, mỗi

chương trình sẽ có thể liên kết đến nhiều thư viện khác nhau, trong đó có thư

viện sẵn có trong hệ điều hành như pthread.h, math.h,… nhưng đồng thời

cũng có những thư viện chuyên dụng như MPICH.

Các phần mềm thường được cung cấp mã nguồn mở dưới dạng một tập các

file nguồn, file header, không phải phần mềm nào cũng được cung cấp kèm

theo hai file trợ giúp biên dịch là config và makefile. Vì vậy khi dịch và chạy

chương trình đôi khi người thực hiện cần phải trực tiếp đưa vào những tham

số hoặc thay đổi một vài tham số trong makefile cho phù hợp với hệ thống cụ

thể.

Kết quả của mỗi phần mềm thường là nhiều thông số, trong đó khi vẽ biểu đồ

và đánh giá hiệu năng, ta chỉ cần chú ý đến một vài giá trị tiêu biểu. Việc đọc

các kết quả trả về của phần mềm cũng cần phải tham khảo thêm một số tài

liệu hướng dẫn (thường là lấy tại trang web của những nhà cung cấp). Điều

này dẫn đến quá trình đánh giá kết quả (thay đổi các giá trị đầu vào, vẽ biểu

đồ, nhận xét) phụ thuộc nhiều vào cá nhân người thực hiện đo hiệu năng.

51

Vì những lý do trên mà ta cần đến một công cụ tương đối trong suốt hơn về

mặt hệ thống để quá trình đánh giá hiệu năng có thể tiến hành một cách thuận

lợi hơn. Các chương trình sẽ tự động hoá việc thực hiện các công việc sau :

- Thay đổi các giá trị đầu vào : Các giá trị đầu vào được xác định dựa trên các

tham số thực tế của hệ thống BKCluster.

- Vẽ biểu đồ dựa trên một số giá trị đầu ra : quá trình vẽ biểu đồ được thực

hiện dựa trên việc sử dụng phần mềm GnuPlot. GnuPlot là chương trình vẽ đồ

thị, biểu đồ dạng 2D và 3D cung cấp kèm theo hệ điều hành Linux 7.3.

Để có thể thực hiện được những điều trên, ta cần phải đưa ra kết quả ở định

dạng tương thích với gnuplot, thông thường để vẽ biểu đồ dạng 2D thì chỉ cần

file dữ liệu chia thành hai cột, trong đó cột thứ nhất là dữ liệu trục hoành, cột

thứ hai là dữ liệu của trục tung. Điều này dẫn đến việc các câu lệnh in giá trị

trong các chương trình cần phải được thay đổi cho phù hợp.

4.2 Chương trình thực hiện các công việc đo hiệu năng.

4.2.1 Chương trình thực hiện việc đo hiệu năng tính toán.

Quá trình đo hiệu năng tính toán được thực hiện với hai phần mềm Linpack

và NPB. Phần mềm Linpack dùng để đo hiệu năng tính toán của CPU đơn,

gói phần mềm NPB được sử dụng để đo hiệu năng tính toán của toàn bộ hệ

thống.

- Chương trình thực hiện quá trình đo hiệu năng tính toán CPU đơn :

Do phần mềm Linpack được cung cấp dưới dạng file nguồn viết bằng ngôn

ngữ Fortran cho nên cần có quá trình biên dịch sang file execute và sau đó

chạy chương trình. Kết quả chương trình sẽ được trả về dưới dạng nhiều cột,

mỗi cột có một ý nghĩa riêng như tốc độ tính toán, độ chính xác. Hơn nữa

phép đo cũng được thực hiện tất cả 8 lần, 8 lần đó có thể cho những kết quả

khác nhau, giá trị duy nhất ta cần là tốc độ tính toán.

- Chương trình được viết để thực hiện những việc sau :

52

Dùng trình biên dịch g77 dịch mã nguồn của Linpack thành dạng execute.

Thực hiện file execute, thống kê kết quả, đưa ra hiệu năng tính toán của CPU

- Chương trình thực hiện quá trình đo hiệu năng tính toán của toàn bộ hệ

thống.

Gói phần mềm NPB đã cung cấp cho người sử dụng makefile viết sẵn. Thực

chất của makefile chính là mộtchương trình đặc biệt cho nên đối với gói phần

mềm NPB, ta không cần phải xây dựng chương trình riêng mà có thể sử dụng

luôn makefile có sẵn theo 1 trong 2 cách :

Biên dịch từng chương trình : người sử dụng biên dịch chương trình bằng

dòng lệnh theo dạng sau :

$make tên_chương_trình NPROCS=# CLASS=kiểu_lớp

Ý nghĩa các tham số trên như sau :

tên_chương_trình : đây là tên của chương trình cần biên dịch, yêu

cầu viết bằng chữ thường (ví dụ is tương ứng với hạt nhân IS)

# : số tiến trình mà bài toán sinh ra, lưu ý rằng gói phần mềm NPB có

những ràng buộc sau về số tiến trình của từng hạt nhân hoặc mô phỏng ứng

dụng :

- Các hạt nhân CG, FT, MG, IS và mô phỏng ứng dụng LU yêu cầu số tiến

trình có dạng luỹ thừa của 2 (2k)

- Các mô phỏng ứng dụng BT và SP yêu cầu số tiến trình có dạng bình

phương của số nguyên a2

- Hạt nhân EP có số tiến trình không bị ràng buộc

kiểu_lớp : thuộc 1 trong số các lớp S, W, A, B, C

Ví dụ để biên dịch hạt nhân EP, số tiến trình bằng 4, lớp dữ liệu W, ta đánh

lệnh sau

$make ep NPROCS=4 CLASS=W

53

Biên dịch nhiều chương trình : trong thư mục config nằm trong thư mục

chứa gói phần mềm NPB có cung cấp file suite.def cho phép biên dịch nhiều

chương trình chỉ bằng một dòng lệnh. File này có dạng 3 cột và nhiều dòng

với mỗi dòng có dạng như sau :

tên_chương_trình số_tiến_trình

lớp_dữ_liệu

Người sử dụng hiệu chỉnh nội dung của file suite.def và thực hiện lệnh sau :

$make suite

Các chương trình tương ứng sẽ được biên dịch, kết quả nằm trong thư mục

NPB/bin. Quá trình chạy các chương trình sẽ được thực hiện bằng lệnh

mpirun với progfile.

4.2.2 Chương trình thực hiện đo hiệu năng truy cập bộ nhớ trong.

Đo hiệu năng bộ nhớ trong được thực hiện bằng chương trình Stream.

Chương trình này được cung cấp mã nguồn viết bằng ngôn ngữ C và có thể

biên dịch bằng gcc. Tuy nhiên một hạn chế của chương trình là kích thước

mảng giá trị đầu vào được định nghĩa thông qua một marco trong chương

trình. Hạn chế trên dẫn đến việc nếu muốn thay đổi giá trị này thì cần phải sửa

trực tiếp trên code.

Trên cơ sở đó, ta viết chương trình thực thi những công việc sau :

- Biên dịch ra một tập các file có khả năng execute với giá trị mảng dữ liệu

đầu vào biến thiên trong khoảng cho trước, điều này được thực hiện thông qua

vòng lặp.

- Thực thi lần lượt các file trên, các số đo tương ứng với từng kích thước

mảng lần lượt được ghi vào file chứa kết quả.

- Gọi chương trình gnuplot vẽ biểu đồ ứng với các kết quả trên, qua biểu đồ ta

thấy được tốc độ truy vào ra bộ nhớ trong cực đại và sự giảm đột ngột của tốc

độ tính toán khi bắt đầu có sự truy cập vào swap.

54

4.2.3 Chương trình thực hiện đo hiệu năng truyền thông

Quá trình đo hiệu năng truyền thông mạng được thực hiện bằng phần mềm

NetPerf. Module client và server của Netperf có tên tương ứng là netperf và

netserver. Việc cài đặt module client và module server trên máy nguồn và

máy đích hoàn toàn có thể tiến hành thông qua makefile được cung cấp kèm

theo phần mềm.

Sau khi biên dịch, ta tiến hành việc chạy module server trên máy đích, mở 1

cổng để giao tiếp với máy nguồn, ngầm định là cổng 12685.

$./netserver –p 12685

NetServer sẽ chạy dưới dạng một daemon độc lập, chờ các yêu cầu từ phía

máy nguồn. Máy nguồn sẽ lần lượt gửi các gói tin có kích thước khác nhau

đến máy đích, sau đó nhận và hiển thị kết quả trả về. Khi thực hiện đo hiệu

năng truyền thông trong hệ thống BKCluster, ta đo tốc độ truyền thông sử

dụng giao thức TCP với gói tin có kích thước lần lượt là 1 byte, 2 byte, 4

byte, 64 byte, 256 byte, 1KB, 4KB, 16KB, 32KB và 64KB

Chương trình thực hiện những việc sau :

- Thực hiện chương trình với các kích thước gói tin thay đổi, việc này sẽ được

tiến hành theo đoạn chương trình sau :

for i in 1 2 4 64 256 1K 4K 16K 32K 64K

do

./netperf –H remote_host -- -m ${i}

done

trong đó remote_host là tên của máy đích

- Nhận giá trị về và đưa ra kết quả dưới định dạng tương thích với gnuplot

55

4.2.4 Chương trình thực hiện đo hiệu năng thư viện MPICH

Hiệu năng của MPICH sẽ được thể hiện qua tốc độ truyền thông của mạng khi

sử dụng các hàm trong thư viện. Quá trình đo tốc độ gửi tin trong mạng có sử

dụng các hàm truyền thông của thư viện MPICH được tiến hành bằng phần

mềm NetPIPE. Việc biên dịch chương trình có thể sử dụng trực tiếp makefile

có sẵn. Sau khi biên dịch, ta sẽ chạy chương trình song song trên hai máy

trạm. Chương trình sẽ tiến hành gửi các thông điệp có kích thước khác nhau

giữa hai máy và đo tốc độ truyền thông.

Chương trình thực hiện các công việc sau :

- Sinh progfile với các thông số nhập vào từ chương trình

- Copy file chạy chương trình vào các thư mục tương ứng trên 2 máy trạm

- Gọi lệnh mpirun để thực hiện chương trình

- Gọi chương trình gnuplot để vẽ biểu đồ dựa trên các kết quả trả về

56

CHƯƠNG 5 K ẾT QUẢ ĐO HIỆU NĂNG

5.1 Kết quả đo hiệu năng tính toán

Trong xử lý tuần tự, chương trình chạy trên một máy tính đơn lẻ, tốc độ tính

toán phụ thuộc vào tốc độ CPU và dung lượng bộ nhớ. Trong hệ thống song

song cluster, một bài toán được chia thành nhiều tiến trình và chạy trên các

máy tính nối mạng. Các tiến trình thực hiện xử lý và giao tiếp với nhau qua

mạng. Do giao tiếp qua mạng, ngoài tốc độ của CPU và dung lượng bộ nhớ,

tốc độ mạng cũng là một yếu tố quyết định đến tốc độ thực hiện bài toán. Với

hệ thống song song cluster, các thành phần quyết định trực tiếp tới hiệu năng

hệ thống là không đồng nhất.

Kết quả đo hiệu năng tính toán thu được sau quá trình thực chương trình

Linpack đo hiệu năng tính toán của CPU đơn và các hạt nhân, mô phỏng ứng

dụng đo hiệu năng tính toán của toàn bộ hệ thống.

Được thực hiện tại Trung tâm máy tính Trường Đại học Bách khoa Hà Nội

5.1.1 Kết quả đo hiệu năng tính toán của CPU đơn

Tiến hành đo hiệu năng tính toán CPU đơn với các máy trạm, ta thu được kết

quả như sau :

57

Kiểu số thực Thời gian (giây) Hiệu năng (MFLOPS)

Độ chính xác đơn 2.000E-02 3.433E+01

Độ chính xác kép 1.600E-02 4.292E+01

Bảng 5.1 Kết quả đo hiệu năng tính toán CPU đơn

Đánh giá: CPU có tốc độ khác nhau. Điều này làm cho năng lực xử lý tại mỗi

nút là khác nhau, nhiệm vụ tính toán của một chương trình song song thường

được chia đều cho các tiến trình. Các tiến trình này được phân bố trên các nút

có tốc độ CPU khác nhau. Một điều nhận thấy là tốc độ thực hiện trên nút có

CPU yếu nhất sẽ quyết định tốc độ thực hiện toàn bộ chương trình. Như vậy

hệ số tăng tốc thực hiện chương trình trên hệ thống cluster sẽ đạt cao nhất khi

so sánh với nút yếu nhất.

5.1.2 Kết quả đo hiệu năng tính toán của toàn bộ hệ thống

Phần mềm NPB được sử dụng phổ biến để đánh giá hiệu năng của toàn bộ hệ

thống tính toán song song phân cụm. Tuy nhiên, để thực hiện được các

chương trình trong gói phần mềm này cũng đòi hỏi phải thiết lập một hệ

thống ổn định.

Thứ nguyên của các kết quả trả về đều có dạng là Mops (biểu thị số triệu lần

phép toán được thực hiện trong 1 giây). Giữa các hạt nhân và mô phỏng

chương trình, ý nghĩa của opertion có thể khác nhau :

58

- Đối với hạt nhân EP, operation là phép toán “sinh ngẫu nhiên số phức”.

Theo tài liệu hướng dẫn của NASA công bố có thể tính được 1 operation

tương ứng với khoảng 49.7 flop, từ đó ta có thể quy đổi giữa hai giá trị.

- Đối với hạt nhân IS, operation là phép toán “sắp xếp song song”.

- Đối với hạt nhân CG, MG, FT và các mô phỏng ứng dụng LU, BT, SP,

operation chính là phép toán trên miền số thực, do đó Mops trùng với

MFLOPS.

Thực hiện các hạt nhân EP, IS, CG, MG trên các máy trạm của hệ thống, ta

thu được kết quả như sau :

Kết quả đo hiệu năng bằng hạt nhân EP : hạt nhân này sẽ thực hiện bài

toán song song sinh ngẫu nhiên các cặp số thực. Kết quả hạt nhân EP sẽ cho

thấy hiệu năng tính toán của hệ thống đối với các bài toán thực hiện ít thao tác

truyền thông. EP lần lượt được biên dịch và chạy trên số máy trạm lần lượt là

1, 2, 4, 6, 8 với lớp dữ liệu là A, kết quả thu được như sau :

Kết quả (Mops) Kết quả (MFLOPS) Số máy trạm

1 1.08 53.68

2 2.14 106.29

4 4.30 213.58

6 6.02 299.01

8 7.99 396.86

Bảng 5.2 Kết quả đo hiệu năng tính toán bằng hạt nhân EP

Kết quả đo hiệu năng bằng hạt nhân IS :

59

Hạt nhân IS thực hiện bài toán song song sắp xếp dãy số nguyên. Kết quả của

hạt nhân IS phản ánh hiệu năng tính toán đối với bài toán song song cần nhiều

thao tác truyền thông và truy cập vào bộ nhớ trong trên máy trạm khi thực

hiện các phép toán số nguyên.

IS lần lượt được biên dịch và thực hiện trên số máy trạm là 1, 2, 4, 8 với lớp

dữ liệu là A, kết quả thu được như sau :

Mops/s total Mops/s/process Số máy

trạm

1 5.33 5.33

2 0.41 0.20

4 0.30 0.08

8 0.21 0.03

Bảng 5.3 Kết quả đo hiệu năng tính toán bằng hạt nhân IS

Kết quả đo hiệu năng bằng hạt nhân CG

Hạt nhân CG thực hiện các phép toán trên ma trận thưa. Kết quả của hạt nhân

CG phản ánh hiệu năng tính toán đối với bài toán song song cần nhiều thao

tác truyền thông và truy cập vào bộ nhớ trong trên máy trạm khi thực hiện các

phép toán số thực.

CG lần lượt được biên dịch và thực hiện với số tiến trình là 1, 2, 4, 8 với lớp

dữ liệu là A, kết quả thu được như sau :

60

Số máy trạm Mops/s total Mops/s/process

17.36 17.36 1

7.83 3.91 2

1.96 0.49 4

6.35 0.79 8

Bảng 5.4 Kết quả đo hiệu năng tính toán bằng hạt nhân CG

Kết quả đo hiệu năng bằng hạt nhân MG :

Hạt nhân MG phản ánh hiệu năng tính toán đối với bài toán song song cần

nhiều thao tác truy cập vào bộ nhớ trong trên máy trạm khi thực hiện các phép

toán số thực.

MG lần lượt được biên dịch với số tiến trình là 1, 2, 4, 8 với lớp dữ liệu là A,

kết quả thu được như sau :

Mops/s total Mops/s/process Số máy trạm

- - 1

31.76 15.88 2

37.83 9.46 4

31.85 3.98 8

Bảng 5.5 Kết quả đo hiệu năng tính toán bằng hạt nhân MG

61

Một điều đáng lưu ý trong bảng trên đó là thời gian chạy của chương trình

MG đối với dữ liệu kiểu A. Các số liệu thực tế cho thấy thời gian chạy là lớn

hơn 6 tiếng đối với cấu hình máy CPU 500MHz và 256 MB RAM. Lúc này

dung lượng swap phải sử dụng là 70.084 MB.

Tiến hành chạy bài toán MG với các lớp dữ liệu nhỏ hơn lớp A là các lớp S và

W, thời gian giảm xuống còn 0.16 và 10.49 giây và hiệu năng thu được lần

lượt là 47.09 và 57.97 Mops. Các kết quả trên chứng tỏ vai trò quan trọng của

bộ nhớ trong đối với tốc độ tính toán.

Kết quả đo hiệu năng bằng mô phỏng chương trình LU

Chương trình LU phản ánh hiệu năng tính toán đối với bài toán song song cần

nhiều thao tác truy cập bộ nhớ cache và truyền thông.

LU lần lượt được biên dịch với số tiến trình là 1, 2, 4, 8 với lớp dữ liệu là A,

kết quả thu được như sau :

Mops/s total Mops/s/process Số máy trạm

1 37.0 37.0

2 52.37 26.19

4 78.91 19.73

8 40.09 5.12

Bảng 5.6 Kết quả đo tính toán bằng mô phỏng chương trình LU

Kết quả đo hiệu năng bằng mô phỏng chương trình SP

Kết quả của chương trình SP phản ánh hiệu năng tính toán đối với bài toán

song song cần nhiều thao tác truy cập vào bộ nhớ trong.

62

SP lần lượt được biên dịch với số tiến trình là 1 và 4, lớp dữ liệu là A, kết quả

thu được như sau :

Số máy trạm Mops/s total Mops/s/process

39.57 39.57 1

43.87 10.97 4

Bảng 5.7 Kết quả đo tính toán bằng mô phỏng chương trình SP

Kết quả đo hiệu năng bằng mô phỏng chương trình BT

Kết quả của chương trình BT phản ánh hiệu năng tính toán đối với bài toán

song song cần nhiều thao tác truyền thông và truy cập vào bộ nhớ cache.

BT lần lượt được biên dịch với lớp số tiến trình là 4, lớp dữ liệu là W, kết quả

thu được như sau :

Mops/s total Mops/s/process Số máy trạm

66.11 66.11 1

67.13 16.78 4

Bảng 5.8 Kết quả đo tính toán bằng mô phỏng chương trình BT

Dựa vào những kết quả trên, ta biểu diễn sự phụ thuộc giữa hiệu năng tính

toán vào số máy trạm tham gia tính toán :

63

S P O M

EP IS CG MG LU SP BT

90 80 70 60 50 40 30 20 10 0

1

2

4

8

Số máy trạm

Hình 5.1 Biểu đồ tương quan giữa hiệu năng và số máy trạm

Đánh giá: Qua các giá trị thu được khi đánh giá hiệu năng tính toán của hệ

thống, ta rút ra kết luận sơ bộ sau : khi số máy trạm tham gia tính toán tăng

lên, tốc độ tính toán tổng cộng sẽ tăng lên với những bài toán thực hiện ít thao

tác truyền thông. Tuy nhiên, khi thực hiện những bài toán yêu cầu thực hiện

nhiều thao tác truyền thông, hiệu năng của hệ thống sẽ giảm khi số máy trạm

tham gia tính toán tăng lên. Những điều trên cho thấy tốc độ truyền thông

trong mạng ảnh hưởng bởi nhiều yếu tố như tốc độ của card mạng, đường

truyền, khoảng cách, thiết bị chuyển mạch, thiết bị đầu cuối. Ảnh hưởng trực

tiếp đến khả năng tính toán của toàn bộ hệ thống.

Cũng tương tự như CPU không đồng nhất, nút có tốc độ truyền thông thấp

nhất sẽ chi phối tốc độ truyền thông của hệ thống và làm tốc độ thực hiện

chương trình giảm mạnh nhất.

64

5.2 Kết quả đo hiệu năng truy cập bộ nhớ trong

Thực hiện đo hiệu năng truy cập bộ nhớ trong bằng phần mềm Stream trên

máy trạm có dung lượng RAM là 256 MB, ta thu được kết quả sau :

- Trước khi xảy ra hiện tượng truy cập vào bộ nhớ swap, tốc độ truy cập bộ

nhớ trong luôn ổn định và bằng 236 – 238 MB/s

- Khi xảy ra hiện tượng truy cập swap, tốc độ truy cập bộ nhớ trong sẽ giảm

xuống đột ngột và sẽ giảm rất nhanh nếu kích thước của bài toán tiếp tục tăng

lên

Kết quả này được biểu diễn trên biểu đồ sau :

Hình 5.2 Biểu đồ tương quan kích thước bài toán - tốc độ truy cập bộ

nhớ trong

Kết quả trên cho thấy khả năng tính toán của máy trạm là ổn định với

những bài toán có tổng giá trị các biến cần cấp phát nhỏ hơn 240 MB.

5.3 Đo hiệu năng truyền thông

Thực hiện đo hiệu năng truyền thông của giao thức TCP giữa máy trạm và

máy chủ, ta thu được kết quả như sau : tốc độ truyền thông rất nhỏ với các gói

65

tin có kích thước nhỏ hơn 10byte, sau đó thì tăng nhanh khi kích thước gói tin

nằm trong khoảng từ 16 đến 64 byte và sẽ không tăng giảm nhiều khi kích

thước gói tin lớn hơn 64 byte (kích thước gói tin lớn nhất chương trình đã

dùng là 64Kbyte). Tốc độ truyền thông cao nhất là 29 Mbps ứng với gói tin có

kích thước 32KB.

Hình 5.3 Biểu đồ tương quan giữa dung lượng gói tin và tốc độ truyền

thông mạng

5.4 Đo hiệu năng của thư viện truyền thông điệp MPICH

Thực hiện quá trình đo hiệu năng truyền thông điệp MPICH giữa hai máy

trạm đóng vai trò nút tính toán bằng phần mềm NetPIPE, ta thu được kết quả

tốc độ truyền thông cực đại là 7.88 Mbps ứng với gói tin truyền đi là 8192

66

byte. Điều này cho ta thấy các hàm truyền thông của thư viện MPICH sẽ hoạt

động tốt nhất với các thông điệp có độ lớn trong khoảng lân cận 8192 byte

Sự phụ thuộc của tốc độ truyền thông vào kích thước gói tin được biểu diễn

qua biểu đồ sau :

Hình 5.4 Biểu đồ tương quan giữa dung lượng gói tin và tốc độ truyền

thông điệp

Dựa vào biểu đồ ta thấy tốc độ truyền thông tăng dần theo kích thước gói

tin đến khoảng lân cận giá trị 8192 byte thì tốc độ cao nhất là khoảng 7.8

67

Mbps. Khi kích thước gói tin tiếp tục tăng thêm thì tốc độ truyền thông lại

giảm đi nhưng vẫn lớn hơn 6 Mbps.

Ngoài biểu đồ trên, các đặc tính của thư viện MPICH còn được thể hiện khách

quan qua hai biểu đồ sau :

Hình 5.5 Biểu đồ tương quan giữa tốc độ và thời gian truyền thông

Biểu đồ trên được gọi là Ethernet Signature Graph, các giá trị thời gian và

tốc độ truyền đã được lấy loga cơ số 10 (log). Vì thời gian truyền tin tỉ lệ với

68

tổng dung lượng tin truyền đi nên có thể coi biểu đồ trên là một dạng khác của

biểu đồ tương quan giữa dung lượng gói tin và tốc độ truyền thông.

Hình 5.6 Biểu đồ tương quan giữa dung lượng gói tin và thời gian truyền

thông

Biểu đồ trên được gọi là Ethernet Saturation Graph, nó cho thấy tốc độ truyền

thông của các hàm MPICH sẽ tăng lên rất nhanh khi kích thước gói tin tăng

lên ứng với khoảng trước điểm Saturation Point, sau đó dù kích thước gói tin

có tăng lên rất nhanh (ứng với sự tăng thời gian truyền thông theo hàm mũ cơ

số 10) thì tốc độ truyền thông trong mạng cũng chỉ tăng lên một cách tuyến

tính

5.5 Đánh giá tổng hợp về hiệu năng hệ thống BKCluster

69

Qua các kết quả đo hiệu năng ở trên ta thấy được những kết quả cụ thể hiệu

năng của hệ thống về các mặt tính toán, truyền thông, truy cập bộ nhớ trong.

Do mục đích của hệ thống BKCluster là thực hiện các bài toán khoa học nên

hiệu năng tính toán của toàn bộ hệ thống là quan trọng nhất. Kết quả của việc

thực hiện gói phần mềm NPB trên 8 máy trạm đóng vai trò nút tính toán cho

thấy hiệu năng lớn nhất đạt được là 396.86 MFLOPS.

Việc tính toán song song có lợi hơn việc tính toán riêng trên 1 máy tính ở chỗ

có thể tận dụng được đồng thời năng lực tính toán của CPU và dung lượng bộ

nhớ trong của từng máy trạm. Kết quả này được thể hiện rõ qua kết quả của

các bài toán EP và MG. Đây là hai bài toán hạn chế sự truyền thông và cần

nhiều thao tác tính toán độc lập (EP) và truy cập vào bộ nhớ trong (MG). Hiệu

năng tính toán tổng hợp sẽ tăng lên gần như tuyến tính đối với số tiến trình

thực hiện bài toán EP (mỗi máy trạm sẽ thực hiện 1 tiến trình). Đối với bài

toán MG dữ liệu lớp A, việc thực hiện trên 1 máy trạm sẽ rất lâu (lớn hơn 6

tiếng) nhưng chỉ với hai máy trạm đã giảm thời gian xuống còn khoảng 122

giây.

Tuy nhiên, kết quả trên cũng phản ánh tốc độ truyền thông trong mạng

LAN là chưa được cao. Với card mạng và switch cho phép tốc độ truyền lên

tới 100Mbps nhưng các kết quả đo chỉ cho giá trị lớn nhất là 29 Mbps đối với

giao thức TCP và là 7.88 Mbps đối với các hàm truyền thông của thư viện

MPICH. Nhược điểm này xuất phát từ nguyên nhân chủ yếu là chưa thiết lập

các thông số cấu hình tối ưu (như kích thước Buffer của Socket) khi cài đặt

thư viện MPICH, việc này đòi hỏi phải thu thập thêm một số kết quả thực

nghiệm và dịch lại mã nguồn của MPICH.

Do tốc độ truyền thông cao nhất của các hàm trong thư viện MPICH là 7.88

Mbps nên dẫn đến hiệu năng tính toán đối với những bài toán đòi hỏi nhiều

thao tác truyền thông là chưa được cao, thậm chí còn xảy ra hiện tượng hiệu

70

năng tính toán tổng cộng sẽ giảm đi khi số máy trạm tham gia tính toán tăng

lên (điều này thể hiện rõ qua kết quả của các bài toán CG, IS). Điều này sẽ có

thể được khắc phục thông qua việc cải tiến các cấu hình của thư viện MPICH

làm tăng tốc độ truyền thông.

Tuy nhiên, dựa vào kết quả của các bài toán EP, MG, LU ta thấy rằng việc

tăng hiệu năng của toàn bộ hệ thống là hoàn toàn có thể đạt được khi tăng số

máy trạm đóng vai trò nút tính toán, điều này cho thấy hệ thống đã đạt được

một số yêu cầu cơ bản của những hệ thống xây dựng theo mô hình song song

phân cụm.

71

CHƯƠNG 6 KẾT LUẬ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 đề tài: Xây dựng hệ thống tính toán song song.

Mục đính của hệ thống là cung cấp một giải pháp tính toán hiệu năng cao, giá

thành rẻ thuận tiện cho việc nghiên cứu và nhu cầu tính toán trong cả nước.

Chuẩn bị cho việc hội nhập, để xây dựng mạng tính toán lưới Việt Nam (VN

Grid).

Sau một thời gian nghiên cứu và triển khai, các phiên bản đã được đóng gói,

cài đặt trên hệ thống của Trung tâm tính toán hiệu năng cao. Đang được triển

khai mở rộng tại một số trung tâm khác như: Trung tâm máy tính thuộc

Trường đại học Bách Khoa Hà nội, Trường kỹ thuật Mật Mã.

Trong đó phần đánh giá hiệu năng của hệ thống được tích hợp vào cùng hệ

thống.

Đề tài : Đánh giá hiệu năng hệ thống song song đã trình bày được mục đích,

nhiệm vụ của hệ thống. Về mặt lý thuyết, đề tài đã khảo sát được một số các

phần mềm đánh giá hiệu năng trên thế giới về các mặt như mục đích, cấu trúc

và ý nghĩa của các thứ nguyên biểu diễn số đo hiệu năng.

Các kết quả thực nghiệm thu được về cơ bản đã cho thấy hiệu năng tính toán

của một hệ thống tính toán song song phân cụm đang trong quá trình xây

dựng và hoàn thiện là hệ thống BKCluster. Các kết quả này cũng đã phản ánh

được các đặc tính riêng của từng thành phần trong hệ thống cả về phần cứng

và phần mềm, đó là hiệu năng tính toán của từng máy trạm riêng biệt, tốc độ

truy cập bộ nhớ trong, tốc đô truyền thông mạng và hiệu năng của thư viện

truyền thông điệp MPICH.

Qua việc đánh giá, phân tích tổng hợp những kết quả trên, ta đã đưa ra được

những hạn chế cần khắc phục trong hệ thống hiện tại và chỉ ra được một số

72

ảnh hưởng của các đặc tính riêng đối với hiệu năng tính toán trung của cả hệ

thống, đặc biệt là sự ảnh hưởng của tốc độ truyền thông.

Bên cạnh những kết quả trên, trong khuôn khổ của đề tài này vẫn còn một số

việc chưa làm được, cụ thể như sau :

Các kết quả thu được mới chỉ đánh giá được một phần của hệ thống, vì vậy

các kết quả thu được vẫn còn hạn chế, có thể chưa sát với thực tế

Đề tài đã chỉ ra được một số yếu tố ảnh hưởng đến hiệu năng của hệ thống

nhưng chưa khắc phục được những yếu tố đó.

Việc giải quyết những hạn chế trên cũng là hướng phát triển của đề tài trong

tương lai. Việc khắc phục những hạn chế trên sẽ có thể nâng cao hiệu năng

tính toán nhưng cũng đồng thời làm thay đổi một số đặc tính của hệ thống, khi

đó lại cần phải áp dụng các phần mềm đo hiệu năng tương ứng để đánh giá sự

hiệu quả của hệ thống mới so với hệ thống cũ.

Việc đánh giá hiệu năng của hệ thống là dùng các phần mềm đo hiệu năng của

những tổ chức, cá nhân nước ngoài. Mặc dù các phần mềm này là chuyên

dụng và được sử dụng rộng rãi nhưng vẫn chưa thể phản ánh chính xác được

các đặc tính riêng của hệ thống. Một nhiệm vụ cần đặt ra là phải xây dựng

những chương trình đo hiệu năng riêng dùng trong thống của Trung tâm tính

toán hiệu năng cao, từ đó phát triển lên thành một quy trình đánh giá hiệu

năng riêng, có thể áp dụng đo hiệu năng của Trung tâm máy tính, thư viện

điện tử thuộc trường Đại học Bách Khoa Hà Nội

Từ các qui trình đánh giá, có thể đưa ra kết luận về hiệu năng thực của từng

máy tính riêng lẻ và cả hệ thống, có thể áp dụng trong việc đo kiểm tra khi

mua thiết bị, cũng như khi muốn thiết kế một hệ thống mới để đạt hiệu quả

cao.

73

TÀI LIỆU THAM KHẢO

[1] Nguyễn Thanh Thuỷ, Đặng Minh Quân. “Ảnh hưởng của các yếu tố

không đồng nhất tới hiệu năng hệ thống xử lý song song NOW”, Hội thảo

các vấn đề chọn lọc của công nghệ thông tin, Đại Học Thái Nguyên, 2003

[2] Karl-Johan Andersson, Daniel Aronsson and Patrick Karlsson. “An

evaluation of the system performance of a Beowulf cluster”, Internal

Report No. 2001:4

[3] Roger Hockney. “A Framework for Benchmark Performance

Analysis”, Supercomputer 48, IX-2, 1992

[4] Atul Kumar. “A Performance Evaluation and Benchmarking Tool,

Department of Computer Science & Engineering”, Indian Institute of

Technology, Kanpur January 1998

[5] D.Bailey, E.Barszcz, J. Barton, D. Browning, R. Carter, L. Dagum, R.

Fatoohi, S. Fineberg, P.Frederickson, T. Lasinki, R. Schreiber, H. Simon, V.

Venkatakrishnan, S. Weeratunga. “THE NAS PARALLEL

BENCHMARKS”, RMR Technical Report RNR-94-007, March 1994

[6] D.Bailey, E.Barszcz, L. Dagum and H. Simon. “NAS Parallel

Benchmark Result”, RNR-94-006, March 211994

[7] Jack J. Dongarra, Piotr Lszczek, Antoine Petitet “The Linpack

Benchmark : Past, Present, and Future”, December 2001

[8] John D. McCalpin. “STREAM : Sustainable Memory Bandwidth in

High Performance Computers”, http://www.cs.virginia.edu/stream/

[9] Quinn O.Snell, Armin R. Mikler and John L. Gustafson. “NetPIPE : A

Network Protocol Independent Performance Evaluator”, Ames Laborator

Scalable Computing Lab, Ames, Iowa 50011, USA

[10] “Netperf : A Network Performance Benchmark, Revision 2.1”.

Informtion Networks Divison Hewlett-Packard Company February 15, 1996