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

Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

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

TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
ĐẠI HỌC
BÁCH
HÀ NỘI THÔNG
VIỆN TRƯỜNG
CÔNG NGHỆ
THÔNG
TINKHOA
VÀ TRUYỀN
VIỆN CÔNG---------------------*--------------------NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
---------------------*---------------------

NGUYỄN VĂN QUYẾT

ĐÁNH GIÁ HIỆU NĂNG PHẦN MỀM XỬ LÝ SONG SONG
TRÊN HỆ THỐNG KẾT HỢP CPU VÀ GPU

ĐỀ TÀI TIỂU LUẬN

AN TOÀN
CÁC
HỆ
THỐNG
THÔNG TIN
LUẬN
VĂN
THẠC
SĨ KỸ THUẬT
CÔNG TÊN
NGHỆ
ĐỀTHÔNG


TÀI TIN

TẤN CÔNG SQL INJECTION
Nhóm thực hiện: 1. Chu Bá Thành
2. Nguyễn Văn Quyết

NGƯỜI HƯỚNG DẪN
Lớp: Cao học 2011A
PGS.TS HUỲNH QUYẾT THẮNG
Giảng viên hướng dẫn:
PGS.TS Nguyễn Linh Giang

LỜI NÓI ĐẦU
HƯNG YÊN - 2012
1


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

LỜI CẢM ƠN

Để hoàn thành luận văn tốt nghiệp “Đánh giá hiệu năng phần mềm xử lý song song
trên hệ thống kết hợp CPU và GPU”, lời đầu tiên em xin gửi lời cảm ơn sâu sắc nhất tới
PGS.TS Huỳnh Quyết Thắng, người đã hướng dẫn và chỉ bảo em tận tình trong suốt thời
gian làm khóa luận.
Em xin chân thành cảm ơn TS. Hồ Khánh Lâm, Trưởng bộ môn KTMT – Khoa CNTT
– Trường ĐHSP Kỹ Thuật Hưng Yên, đã cung cấp cho em các kiến thức nền tảng để thực
hiện đề tài.
Em cũng xin gửi lời cảm ơn tới TS. Nguyễn Hữu Đức và các cán bộ trong Trung tâm
tính toán hiệu năng cao – Trường ĐHBK Hà Nội, đã dành thời gian hướng dẫn cho em

cách thử nghiệm chương trình và đánh giá hiệu năng hệ thống xử lý song song.
Cuối cùng, em xin gửi lời cảm ơn sâu sắc tới các thầy cô, đồng nghiệp và người thân
trong gia đình đã động viên, khích lệ em trong quá trình thực hiện luận văn.

Học viên
Nguyễn Văn Quyết

2


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

LỜI CAM ĐOAN

Với mục đích học tập, nghiên cứu để nâng cao trình độ chuyên môn nên tôi đã làm
luận văn này một cách nghiêm túc và hoàn toàn trung thực.
Trong luận văn, tôi có sử dụng tài liệu tham khảo của một số tác giả, tôi đã nêu trong
phần tài liệu tham khảo ở cuối luận văn.
Tôi xin cam đoan và chịu trách nhiệm về nội dung, sự trung thực trong luận văn tốt
nghiệp Thạc sĩ của mình.
Hà Nội, tháng 12 năm 2012
Học viên

Nguyễn Văn Quyết

3


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU


MỤC LỤC

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT .................................................... 6
DANH MỤC CÁC BẢNG .............................................................................................. 7
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ ......................................................................... 8
MỞ ĐẦU ....................................................................................................................... 10
1. Lý do chọn đề tài .................................................................................................. 10
2. Lịch sử nghiên cứu ............................................................................................... 10
3. Mục đích nghiên cứu ............................................................................................ 11
4. Đối tƣợng nghiên cứu ........................................................................................... 11
5. Phạm vi nghiên cứu .............................................................................................. 11
6. Phƣơng pháp nghiên cứu ..................................................................................... 12
CHƢƠNG 1: TỔNG QUAN VỀ HỆ THỐNG XỬ LÝ SONG SONG VÀ ĐÁNH
GIÁ HIỆU NĂNG ......................................................................................................... 13
1.1.
Tính toán song song ....................................................................................... 13
1.1.1. Khái niệm tính toán song song ................................................................. 13
1.1.2.

Các hình thức song song .......................................................................... 14

1.1.3.

Tăng tốc tính toán song song sử dụng GPU.............................................. 16

1.2.
Máy tính song song ........................................................................................ 21
1.2.1. Mô hình máy tính song song .................................................................... 21
1.2.2.


Phân loại máy tính song song ................................................................... 22

1.3.
Lập trình song song với CUDA ...................................................................... 26
1.3.1. Môi trường phát triển CUDA ................................................................... 26
1.3.2.

Mô hình lập trình ..................................................................................... 30

1.3.3.

Lập trình song song với CUDA C/C++ .................................................... 37

1.3.4.

Nguyên tắc tối ưu hóa hiệu năng .............................................................. 37

1.4.
Vấn đề đánh giá hiệu năng phần mềm xử lý song song ................................... 39
1.4.1. Định nghĩa về đánh giá hiệu năng phần mềm ........................................... 39
1.4.2.

Mục đích của việc đánh giá hiệu năng phần mềm xử lý song song ........... 40

1.4.3.

Yêu cầu của bài toán đánh giá hiệu năng.................................................. 40

CHƢƠNG 2: GIẢI PHÁP KỸ THUẬT ĐÁNH GIÁ HIỆU NĂNG PHẦN MỀM
XỬ LÝ SONG SONG ................................................................................................... 42

2.1.
Kỹ thuật phân tích mô hình bài toán ............................................................... 42
2.2.
Kỹ thuật mô phỏng chương trình .................................................................... 43
4


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
2.3.
Kỹ thuật đo lường........................................................................................... 44
2.3.1. Đo hiệu năng tính toán ............................................................................. 44
2.3.2.

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

2.3.3.

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

2.4.
Đánh giá kết quả đo hiệu năng........................................................................ 46
2.4.1. Đánh giá tốc độ xử lý ............................................................................... 46
2.4.2.

Đánh giá hiệu quả xử lý ........................................................................... 48

CHƢƠNG 3: ÁP DỤNG ĐÁNH GIÁ HIỆU NĂNG VÀO BÀI TOÁN N-BODY .. 49
3.1.
Mô tả bài toán N-Body ................................................................................... 49
3.2.

Phân tích mô hình bài toán N-Body ................................................................ 50
3.3.
Song song hóa bài toán N-Body trên hệ thống kết hợp CPU và GPU .............. 51
3.3.1. Tính lực giữa hạt-hạt (body-body) ........................................................... 51
3.3.2.

Tính toán các lớp luồng (Tile Caculation) ................................................ 53

3.3.3.

Hợp nhất các lớp luồng vào các Thread Blocks ........................................ 53

3.3.4.

Định nghĩa một mạng lưới của khối luồng (Grid of Thread Block) .......... 54

3.3.5.

Mô phỏng bài toán với chế độ đồ họa ...................................................... 55

3.4.
Thực hiện đo hiệu năng bài toán N-Body ....................................................... 58
3.4.1. Môi trường thử nghiệm ............................................................................ 58
3.4.2.

Đo hiệu năng tính toán với chế độ benchmark.......................................... 59

3.4.3.

Phân tích hiệu năng ứng dụng với Visual Profiler .................................... 61


CHƢƠNG 4: ĐÁNH GIÁ KẾT QUẢ ĐO HIỆU NĂNG ......................................... 66
4.1.
Đánh giá tốc độ xử lý ..................................................................................... 66
4.2.
Đánh giá hiệu quả xử lý .................................................................................. 67
4.3.
Kết luận về hiệu năng ..................................................................................... 69
KẾT LUẬN ................................................................................................................... 71
1. Kết quả đạt đƣợc của đề tài ................................................................................. 71
2. Hạn chế của đề tài ................................................................................................ 71
3. Hƣớng phát triển của đề tài ................................................................................. 71
PHỤ LỤC ...................................................................................................................... 73
TÀI LIỆU THAM KHẢO ............................................................................................ 75

5


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Từ viết tắt

Từ đầy đủ

Giải thích

ALU

Arithmetic Logic Unit


Bộ xử lý số học logic

CPU

Central Processing Unit

Đươn vị xử lý trung tâm

CUDA

Compute

Unified

Device Kiến trúc thiết bị tính toán hợp nhất

Architecture
GPU

Graphics Processing Unit

SISD

Single

Instruction

Stream, Máy tính một dòng lệnh, một dòng số
liệu


Single Data Stream
SIMD

Single

Instruction

Stream, Máy tính một dòng lệnh, nhiều dòng

Multiple Data Stream
MISD

SM

số liệu

Multiple Instructions Stream, Máy tính nhiều dòng lệnh, một dòng
Single Data Stream

MIMD

Bộ xử lý đồ họa

số liệu.

Multiple Instructions Stream, Máy tính nhiều dòng lệnh, nhiều
Multiple Data Stream

dòng số liệu


Streaming Multiprocessors

Bộ đa xử lý luồng

6


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

DANH MỤC CÁC BẢNG

Bảng 1: So sánh một số đặc điểm của CPU và GPU .................................................. 19
Bảng 2: Các đặc điểm của môi trường lập trình với CUDA ....................................... 30
Bảng 3: Kết quả do thời gian xử lý của CPU và GPU trong bài toán N-Body ............ 66
Bảng 4: Kết quả đo tốc độ tính toán trung bình trong chế độ xử lý đồ họa ................. 68

7


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1: Mô hình kiến trúc SISD ................................................................................ 22
Hình 2: Mô hình kiến trúc SIMD ............................................................................... 23
Hình 3: Mô hình kiến trúc MISD ............................................................................... 23
Hình 4: Mô hình kiến trúc MIMD ............................................................................. 24
Hình 5: Mô hình kiến trúc máy tính song song chia sẻ bộ nhớ ................................... 25
Hình 6: Mô hình kiến trúc máy tính song song phân tán ............................................ 26
Hình 7: Mô hình kiến trúc Fermi ............................................................................... 17

Hình 8: Minh họa số thanh ghi ALU trên GPU .......................................................... 18
Hình 9: So sánh sự tăng tốc về tốc độ xử lý CPU và GPU ......................................... 20
Hình 10: Minh họa tăng tốc băng thông bộ nhớ của CPU và GPU ............................. 21
Hình 11: Mô hình kiến trúc CUDA............................................................................ 28
Hình 12: Môi trường phát triển phần mềm với CUDA ............................................... 29
Hình 13: Grid of Thread Blocks ................................................................................ 33
Hình 14: Mô hình phân cấp bộ nhớ............................................................................ 35
Hình 15: Mô hình lập trình không đồng nhất ............................................................. 36
Hình 16: Mô hình tương quan giữa tốc độ xử lý và số bộ xử lý ................................. 47
Hình 17: Minh họa hệ N-Body trong không gian 3D ................................................. 49
Hình 18: Minh họa Grid of Thread Blocks ................................................................ 55
Hình 19: Minh họa bài toán N-Body trên CPU với độ chính xác đơn......................... 56
Hình 20: Minh họa bài toán N-Body trên CPU với độ chính xác kép ......................... 56
Hình 21: Minh họa bài toán N-Body trên CPU&GPU với độ chính xác đơn .............. 57
Hình 22: Minh họa bài toán N-Body trên CPU&GPU với độ chính xác kép .............. 57
8


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
Hình 23: Visual Profiler - Công cụ phân tích hiệu năng phần mềm xử lý song song .. 62
Hình 24: Cấu hình tham số đầu vào cho phần mềm Visual Profiler ........................... 63
Hình 25: Giao diện kết quả chạy phân tích hiệu năng ứng dụngN-Body .................... 63
Hình 26: Chi tiết phân tích kết quả xử lý của ứng dụng N-Body ................................ 64
Hình 27: Kết quả chi tiết xử lý song song với N=4096 của bài toán N-Body ............. 65
Hình 28: Minh hoạ kết quả đo thời gian xử lý trên CPU & GPU ............................... 67
Hình 29: Minh họa kết quả đo hiệu quả xử lý ở chế độ đồ họa với GPU .................... 68

9



Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

MỞ ĐẦU
1. Lý do chọn đề tài
Với sự phát triển của công nghệ được thách thức bởi lớp bài toán lớn cần giải quyết
trong nhiều lĩnh vực của đời sống xã hội như: khai phá dữ liệu, mô phỏng các hiện tượng
trong khoa học vũ trụ,...Các lớp bài toán này vừa đòi hỏi đáp ứng thời gian thực vừa yêu
cầu xử lý trên khối dữ liệu lớn. Để giải quyết bài toán đó đòi hỏi các bộ xử lý phải có hiệu
năng cao. Và hệ thống máy tính song song ra đời với mục đích làm tăng khả năng tính
toán của máy tính bằng cách kết hợp nhiều bộ xử lý tham gia đồng thời vào quá trình xử
lý. Đó là sự kết hợp giữa các bộ xử lý của CPU và GPU.
Hiện nay, việc xử lý song song không những chỉ thực hiện trên những siêu máy tính
mà có thể được thực hiện trên các trạm làm việc, máy tính cá nhân, mạng máy tính.
Nhưng hầu hết các phần mềm chạy trên máy tính này là những phần mềm xử lý tuần tự.
Bởi vậy cần xây dựng những phần mềm, cấu trúc dữ liệu cho phép xử lý một cách song
song. Để sử dụng một cách hiệu quả các ứng dụng phần mềm này, cần có giải pháp đánh
giá hiệu năng của chúng trên các hệ thống máy tính song song.
Trong khuôn khổ của khóa luận, áp dụng xử lý song song vào việc giảm thời gian tính
lực tương tác giữa các body trong hệ mô phỏng N-body và thực hiện đánh giá hiệu năng
của bài toán trên.

2. Lịch sử nghiên cứu
Hiện nay trên thế giới, với sự phát triển mạnh mẽ của 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 (xem phụ
lục 1), 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. Hệ thống máy tính với chip đa lõi ngày
càng nhiều, kết hợp với sự ra đời của thiết bị GPU đã hỗ trợ trong xử lý đồ họa và tính
toán song song. Để khai thác và sử dụng một cách hiệu quả các phần mềm xử lý song
song trên hệ thống đó cần phải có các giải pháp nhằm đánh giá hiệu năng hệ thống. Từ

nhu cầu đó, trên thế giới từ đã có rất nhiều nhà khoa học, các hãng phần mềm đã nghiên
10


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
cứu và đưa ra nhiều giải pháp cũng như công cụ để đánh giá hiệu năng phần mềm nói
chung và phần mềm xử lý song song nói riêng.
Tuy nhiên ở Việt Nam, thời điểm đầu khi máy tính song song ra đời, với thực 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 chúng lại tạo ra hệ thống tính toán lớn. Khi đó,
các bài toán xử lý bắt đầu được đưa vào thử nghiệm như: thám mã, xử lý dữ liệu khí
tượng thủy văn…và nhiều công trình, bài báo khoa học đề cập đến vấn đề này đã được
công bố. Một trong những nới đầu tiên tại Việt Nam triển khai bài các dự án liên quan đến
tính toán song song là Trung Tâm tính toán hiệu năng cao – Đại Học Bách Khoa Hà Nội
(10/2001)
Vấn đề đánh giá hiệu năng phần mềm xử lý song song tuy không phải là mới nhưng
việc ứng dụng các kết quả của nó vào trong thực tế hiện nay còn nhiều vấn đề để nghiên
cứu.

3. Mục đích nghiên cứu
 Nghiên cứu về hệ thống xử lý song song: máy tính song song, tính toán song
xong và lập trình song song với CUDA.
 Xây dựng được giải pháp kỹ thuật nhằm đánh giá hiệu năng phần mềm xử lý
song song trên hệ thống kết hợp CPU và GPU.
 Áp dụng đánh giá hiệu năng vào bài toán mô phỏng

4. Đối tƣợng nghiên cứu
Nghiên cứu tìm hiểu lý thuyết về máy tính song song, tính toán song song và lập trình
xử lý song song. Nghiên cứu các giải pháp kỹ thuật đo hiệu năng. Áp dụng đánh giá hiệu

năng phần mềm xử lý song song qua bài toán mô phỏng N-Body.

5. Phạm vi nghiên cứu
 Tổng quan về hệ thống xử lý song song và lập trình song song với CUDA C
11


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
 Xây dựng giải pháp kỹ thuật đánh giá hiệu năng phần mềm xử lý song song
 Sử dụng bài toán N-Body để mô phỏng và đánh giá hiệu năng.

6. Phƣơng pháp nghiên cứu
 Nghiên cứu tài liệu khoa học về hệ thống máy tính song song.
 Nghiên cứu kỹ thuật lập trình song song với CUDA
 Nghiên cứu lý thuyết về đánh giá hiệu năng của phần mềm
 Mô phỏng xử lý song song trên bài toán N-Body
 Xây dựng giải pháp đánh giá hiệu năng của bài toán mô phỏng.

12


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
CHƢƠNG 1: TỔNG QUAN VỀ HỆ THỐNG XỬ LÝ SONG SONG VÀ ĐÁNH
GIÁ HIỆU NĂNG
1.1.

Tính toán song song

Tính toán song song thường được dùng để giải quyết các vấn đề hết sức phức tạp yêu
cầu thời gian tính toán lớn hoặc làm việc với khối dữ liệu lớn như các bài toán dự báo thời

tiết, mô phỏng tai nạn xe hơi, xây dựng các mô hình thương mại và các vấn đề khoa học
như khai phá dữ liệu, trí tuệ nhân tạo, an toàn dữ liệu…Để giải quyết các bài toán trên,
người ta đã nghiên cứu và đưa ra các phương pháp sau:
Phƣơng pháp 1: Tăng tốc phần cứng bằng cách tăng tốc các bộ vi xử lý và kết hợp
nhiều bộ xử lý với nhau. Tuy nhiên phương pháp này tốn nhiều thời gian, tiền bạc và tốc
độ cũng chỉ cải tiến đến một giới hạn nhất định.
Phƣơng pháp 2: Chia bài toán thành các công việc nhỏ để có thể chạy song song trên
nhiều bộ xử lý.
Sự kết hợp của hai phương pháp trên là lựa chọn giải pháp công nghệ nhằm tăng tốc
tính toán, nó là nền tảng của tính toán song song cũng như các sự ra đời của máy tính
song song và lập trình song song.
1.1.1. Khái niệm tính toán song song
Tính toán song song là một hình thức tính toán trong đó nhiều phép tính được thực
hiện đồng thời, hoạt động trên nguyên tắc là những vấn đề lớn đều có thể chia thành nhiều
phần nhỏ hơn, sau đó được giải quyết tương tranh (trong lĩnh vực tính toán).
Có nhiều hình thức khác nhau của tính toán song song: cấp bit, cấp lệnh, dữ liệu, và
tác vụ. Song song đã được sử dụng từ nhiều năm qua, chủ yếu là trong lĩnh vực tính toán
hiệu năng cao, tuy nhiên gần đây công nghệ này đã nhận được nhiều sự quan tâm hơn. Nó
trở thành mô hình thống trị trong lĩnh vực kiến trúc máy tính, phần lớn là dưới dạng bộ xử
lý đa nhân.
Các máy tính song song có thể được phân loại tùy theo cấp độ hỗ trợ cho song song
của phần cứng, với những chiếc máy tính đa nhân và đa xử lý có bộ phận đa xử lý trong
13


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
một máy đơn lẻ, trong song song phân cụm, và mạng lưới sử dụng nhiều máy tính để xử
lý cùng một công việc. Những kiến trúc máy tính song song chuyên dụng thỉnh thoảng
cũng sử dụng các bộ xử lý truyền thống nhằm tăng tốc độ cho những công việc đặc trưng.
Chương trình máy tính song song khó viết hơn so với những chương trình tuần tự, vì

sự tương tranh tạo ra nhiều lớp mới tiềm tàng các lỗi phần mềm. Sự kết nối và đồng bộ
giữa các phần việc nhỏ là một trong những trở ngại lớn nhất để tạo ra một chương trình
song song tốt.
1.1.2. Các hình thức song song
a. Song song cấp bit
Từ sự ra đời của công nghệ chế tạo chip máy tính very-large-scale integration (VLSI)
từ những năm 1970 cho đến năm 1986, tăng tốc trong kiến trúc máy tính được điều khiển
bằng cách tăng gấp đôi kích cỡ từ máy tính về khối lượng thông tin bộ xử lý có thể thao
tác trên một chu kỳ. Tăng kích thước từ làm giảm số lượng chỉ lệnh các bộ xử lý phải
thực thi để thực hiện một hoạt động trên các biến có kích cỡ lớn hơn độ dài của từ. Ví dụ,
khi một bộ xử lý 8-bit phải tạo thêm 2 nguyên số 16-bit, trước tiên bộ xử lý phải thêm vào
các bit bậc thấp hơn 8 từ mỗi số nguyên bằng cách sử dụng lệnh cộng tiêu chuẩn, sau đó
thêm vào các bit bậc cao hơn 8 bằng cách sử dụng lệnh cộng có nhớ và bit nhớ lấy từ việc
thêm vào bậc thấp; do đó, bộ xử lý 8-bit cần đến hai câu lệnh để hoàn thành một thao tác,
trong khi bộ xử lý 16-bit có thể làm xong công việc này chỉ với một câu lệnh duy nhất.
Trong lịch sử, các vi xử lý 4-bit đã từng được thay thế bằng 8-bit, 16-bit, sau đó là 32bit. Xu hướng này đã kết thúc với sự ra đời của bộ vi xử lý 32-bit, đã trở thành tiêu chuẩn
cho các tính toán chung trong hai thập kỷ. Cho đến gần đây (khoảng 2003–2004), với sự
ra đời của kiến trúc x86-64, bộ xử lý 64-bit đã trở nên phổ biến.
b. Song song cấp lệnh
Một chương trình máy tính, về bản chất là một loạt những câu lệnh được thực hiện bởi
một bộ xử lý. Những câu lệnh này sẽ được sắp xếp lại và kết hợp thành các nhóm mà sau
đó được thực hiện song song mà không thay đổi kết quả của chương trình. Đây được gọi
14


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
là song song cấp câu lệnh. Những ưu điểm của song song cấp câu lệnh đã thống trị kiến
trúc máy tính từ giữa những năm 1980 cho đến giữa thập niên 1990.
Các bộ xử lý hiện đại có những đường liên kết câu lệnh đa công đoạn. Mỗi giai đoạn
trong đường liên kết tương ứng với mỗi hành động khác nhau mà bộ xử lý thực hiện với

câu lệnh trong giai đoạn đó; bộ xử lý với một đường liên kết N giai đoạn có thể có đến N
câu lệnh ở những giai đoạn khác nhau. Ví dụ tiêu chuẩn của một bộ xử lý đường liên kết
là bộ xử lý RISC, với 5 công đoạn: nạp lệnh, giải mã, thực thi, truy cập bộ nhớ, và write
back. Bộ xử lý Pentium 4 có một đường liên kết 35 giai đoạn.
c. Song song dữ liệu
Song song dữ liệu là tập trung vào phân phối dữ liệu qua các nút tính toán khác nhau
để được xử lý song song. Vòng song song thường dẫn đến những chuỗi hoạt động tương
tự (không nhất thiết phải giống nhau) hoặc các chức năng được thực hiện trên các yếu tố
của một cấu trúc dữ liệu lớn. Nhiều ứng dụng khoa học và kỹ thuật áp dụng song song dữ
liệu. Một phụ thuộc loop-carried là sự phụ thuộc của một vòng lặp vào kết quả đầu ra của
một hoặc nhiều lần lặp lại trước. Phụ thuộc loop-carried ngăn chặn sự song song hóa của
các vòng. Ví dụ, xem xét giả mã sau khi tính một vài số Fibonacci đầu tiên:
1: PREV1 := 0
2: PREV2 := 1
4: do:
5: CUR := PREV1 + PREV2
6: PREV1 := PREV2
7: PREV2 := CUR
8: while (CUR <10)
Vòng này không thể song song vì CUR phụ thuộc vào chính nó (PREV2) và PREV1,
được tính toán trong mỗi lần lặp vòng. Vì mỗi lần lặp phụ thuộc vào kết quả của lần lặp
trước đó, nên chúng không thể song song.
15


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
d. Song song tác vụ
Song song tác vụ là thuộc tính của một chương trình song song mà "các phép tính
hoàn toàn khác nhau có thể được thực hiện trên các bộ dữ liệu giống hoặc khác nhau".
1.1.3. Tăng tốc tính toán song song sử dụng GPU

a. Tổng quan về GPU
Bộ xử lý đồ họa (Graphics Processing Unit) hay gọi tắt là GPU là bộ xử lý chuyên
dụng cho biểu diễn hình ảnh 3D từ bộ vi xử lý của máy tính. Nó được sử dụng trong các
hệ thống nhúng, điện thoại di động, máy tính cá nhân, máy trạm, và điều khiển game. Bộ
xử lý đồ họa ngày nay rất hiệu quả trong các thao tác đồ họa máy tính, và cấu trúc song
song cao cấp làm cho chúng có năng lực xử lý tốt hơn nhiều so với bộ vi xử lý thông
thường trong các thuật toán phức tạp. Trong máy tính cá nhân, một GPU được biết tới
như một card màn hình (video card) hoặc được tích hợp luôn trên bảng mạch chủ. Hơn
90% các máy tính cá nhân hoặc máy tính xách tay hiện đại đã có tích hợp GPU nhưng
thường yếu hơn nhiều so với GPU tích hợp trên các card màn hình chuyên dụng.
Sự phát triển của card đồ họa kết hợp chặt chẽ với các chip vi xử lý. Ban đầu GPU là
bộ xử lý gắn trên card đồ họa phục vụ việc tính toán cho các phép toán dấu phảy động. Bộ
gia tốc đồ họa kết hợp với các vi mạch siêu nhỏ tùy chọn chứa một số phép toán đặc biệt
được sử dụng phổ biến trong biến đổi thành đồ họa ba chiều (graphic rendering). Khả
năng của các vi mạch từ đó xác định khả năng của bộ gia tốc đồ họa. Chúng được sử dụng
chủ yếu trong các trò chơi 3D, hoặc biến đổi thành đầu ra 3D.
GPU thực thi một số phép toán đồ họa nguyên thủy làm chúng chạy nhanh hơn rất
nhiều so với việc vẽ trực tiếp trên màn hình với CPU.
Ngày nay, GPU đã bắt đầu thực hiện xâm nhập máy tính và cạnh tranh với CPU, và
theo một vài kết quả nghiên cứu cho thấy việc sử dụng GPGPU cho tính toán chung
(General Purpose Computing) trên GPU, đã tìm thấy con đường của mình ứng dụng vào
các lĩnh vực khác nhau như thăm dò dầu, xử lý hình ảnh khoa học, đại số tuyến tính, tái
tạo 3D và hỗ trợ lựa chọn giá cổ phiếu... Điều này tăng áp lực lên các nhà sản xuất GPU
16


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
từ "người dùng GPGPU" để cải tiến thiết kế phần cứng, thường tập trung vào việc thêm
tính linh hoạt hơn cho mô hình lập trình.
b. Kiến trúc của GPU

Thế hệ GPU mới dựa trên kiến trúc Fermi [1] đã mang lại nhiều giá trị thực tiễn: nâng
cao chất lượng, tốc độ dựng hình, giả lập, mô phỏng 3D trên máy tính; tăng tốc tính toán
song song cho siêu máy tính; và tạo hạ tầng sẵn sàng cho dịch vụ web 3D.
Kiến trúc Fermi vượt nhiều lần về độ chính xác dấu phảy động so với kiến trúc hiện
tại nhằm đáp ứng siêu máy tính (HPC) chuyên xử lý đại số tuyến tính, mô phỏng, lượng
tử; và lần đầu tiên đưa vào GPU bộ đệm dữ liệu song song Parallel DataCache. Kiến trúc
Fermi cũng được quan tâm bởi Bloomberg, Cray, Dell, HP, IBM và Microsoft.

Hình 1: Mô hình kiến trúc Fermi
17


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
Kiến trúc Fermi đầu tiên dựa trên GPU được triển khai thực hiện với 3,0 tỷ transistor,
và 512 CUDA core. Các CUDA core được tổ chức trong 16 SM với 32 lõi. GPU có sáu
phân vùng bộ nhớ 64-bit. Giao diện kết nối GPU với CPU thông qua PCI-Express.
c. Tính toán trên GPU
Với mong muốn ban đầu GPU thiết kế ra nhằm hỗ trợ xử lý đồ họa, tuy nhiên sau này
người ta đã tận dụng nó vào tính toán xử lý dữ liệu lớn. Trên GPU được thiết kế rất nhiều
thanh ghi ALU, gấp nhiều lần so với CPU bởi vậy nó có thể tính toán với tốc độ nhanh
gấp trăm, nghìn lần so với tốc độ tính toán của CPU. Mô hình dưới đây sẽ minh họa cho
điều đó:

Hình 2: Minh họa số thanh ghi ALU trên GPU
Để thấy rõ được những ưu điểm của GPU trong việc ứng dụng xử lý song song, phần
này sẽ thực hiện so sánh GPU và CPU ở một số khía cạnh, cụ thể trong bảng sau:
CPU

GPU


1. Mục đích sử dụng
Dành cho việc xử lý các tính toán thông Nhu cầu hiển thị đồ họa 3D, thời gian thực,
thường, làm bộ đệm và điều khiển

độ phân giải cao -> cần có GPU nhiều
nhân, chạy song song, đa luồng, băng thông
bộ nhớ rất lớn.
18


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
GPU dùng trong xử lý dữ liệu lớn.
2. Kiến trúc
Số lượng ALU nhiều  Tăng khả năng

Số lượng ALU ít

tính toán
3. Tối ƣu phần cứng
Các ALU chạy những lệnh riêng

Các ALU cùng chạy chung một lệnh

Tiểu trình của CPU cần hàng trăm chu kì Tiểu trình của GPU chỉ tốn vài chu kì đồng
đồng hồ để tạo và lập lịch

hồ để tạo và lập lịch  GPU có xử lý với
số lượng tiểu trình lớn và nhanh chóng.

4. Tốc độ phát triển

Tốc độ tính toán tăng 1.4x mỗi năm

Bộ xử lý mảnh: 1.7x mỗi năm
Bộ xử lý đỉnh: 2.3x mỗi năm

Bảng 1: So sánh một số đặc điểm của CPU và GPU
Hai mô hình sau đây được đưa ra bởi NVIDIA [9] vào tháng 8 năm 2012, mô tả sự
khác biệt về tốc độ xử lý và băng thông bộ nhớ của một số loại GPU và CPU

19


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

Hình 3: So sánh sự tăng tốc về tốc độ xử lý CPU và GPU

20


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

Hình 4: Minh họa tăng tốc băng thông bộ nhớ của CPU và GPU
1.2.

Máy tính song song

1.2.1. Mô hình máy tính song song
Một hệ thống máy tính song song là một máy tính với nhiều hơn một bộ xử lý cho
phép xử lý song song. Định nghĩa này có thể bao quát được tất cả các siêu máy tính với
hàng trăm bộ xử lý, các mạng máy tính trạm, hay các hệ thống nhúng…Trong những năm

gần đây các máy tính có vi xử lý áp dụng công nghệ mới multicore cho phép nhiều nhân
trong một bộ xử lý cũng được coi là máy tính song song.

21


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
1.2.2. Phân loại máy tính song song
d. Phân loại dựa trên cơ chế điều khiển chung
Dựa vào cơ chế điều khiển chung Michael Flynn đã chia máy tính song song thành 4
loại sau:
 SISD (Single Instructions stream, Single Data stream - Máy tính một dòng
lệnh, một dòng số liệu): Máy chỉ có một CPU. Ở mỗi thời điểm chỉ thực hiện
một lệnh và chỉ đọc/ghi; có một thanh ghi, gọi là bộ đếm chương trình
(program counter), được sử dụng để nạp địa chỉ của lệnh tiếp theo khi xử lý
tuần tự. Các câu lệnh được thực hiện theo một thứ tự xác định. Đây chính là mô
hình máy tính truyền thống kiểu Von Neumann.

Hình 5: Mô hình kiến trúc SISD
 SIMD (Single Instructions stream, Multiple Data stream - Máy tính một dòng
lệnh, nhiều dòng số liệu): Các máy SIMD có một số lớn các bộ xử lý giống
nhau, cùng thực hiện một lệnh giống nhau để xử lý nhiều dòng dữ liệu khác
nhau. Mỗi bộ xử lý có bộ nhớ dữ liệu riêng, nhưng chỉ có một bộ nhớ lệnh và
một bộ xử lý điều khiển, bộ này đọc và thi hành các lệnh. Tính song song dùng
trong các máy SIMD là tính song song dữ liệu. Nó chỉ có hiệu quả nếu cấu trúc
các dữ liệu dễ dàng thích ứng với cấu trúc vật lý của các bộ xử lý thành viên.
Các bài toán xử lý vector và mảng thuộc loại máy tính này.

22



Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

Hình 6: Mô hình kiến trúc SIMD
 MISD (Multiple Instructions stream, Single Data stream - Máy tính nhiều dòng
lệnh, một dòng số liệu): Các máy tính yêu cầu mỗi đơn vị xử lý nhận những
lệnh khác nhau để thực hiện trên cùng một mục dữ liệu. Các máy tính có các
luồng dữ liệu được chuyển tuần tự theo dãy các CPU liên tiếp gọi là kiến trúc
hình ống xử lý theo vector thông qua một dãy các bước. Trong đó mỗi bước
thực hiện một chức năng và sau đó chuyển kết quả cho PU thực hiện bước tiếp
theo.

Hình 7: Mô hình kiến trúc MISD
 MIMD (Multiple Instruction stream, Multiple Data stream - Máy tính nhiều
dòng lệnh, nhiều dòng số liệu): Mỗi bộ xử lý có thể thực hiện những luồng lệnh
(chương trình) khác nhau trên các luồng dữ liệu riêng. Hầu hết các hệ thống
MIMD đều có bộ nhớ riêng và cũng có thể truy cập vào được bộ nhớ chung
23


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU
(global) khi cần, do vậy giảm thiểu được sự trao đổi giữa các bộ xử lý trong hệ
thống.

Hình 8: Mô hình kiến trúc MIMD
e. Phân loại dựa trên sự tƣơng tác giữa các bộ xử lý và bộ nhớ
 Máy tính song song có bộ nhớ chia sẻ
Máy có một bộ nhớ trung tâm duy nhất được phân chia cho các bộ xử lý và một hệ
thống bus chia sẻ để nối các bộ xử lý và bộ nhớ. Vì chỉ có một bộ nhớ trong nên hệ thống
bộ nhớ không đủ khả năng đáp ứng nhu cầu thâm nhập bộ nhớ của một số lớn các bộ xử

lý. Kiểu kiến trúc bộ nhớ chia sẻ được dùng trong hệ thống SMP.

24


Đánh giá hiệu năng phần mềm xử lý song song trên hệ thống kết hợp CPU và GPU

Hình 9: Mô hình kiến trúc máy tính song song chia sẻ bộ nhớ
 Máy tính song song có bộ nhớ phân tán
Mỗi máy của nhóm này gồm có các nút, mỗi nút chứa một bộ xử lý, bộ nhớ, một vài
ngã vào ra và một giao diện với hệ thống kết nối giữa các nút.

25


×