Tải bản đầy đủ (.doc) (71 trang)

NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI

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 (1.02 MB, 71 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TRƯƠNG VĂN HIỆU

NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG
TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI

LUẬN VĂN THẠC SĨ KỸ THUẬT

Đà Nẵng - Năm 2011


BỘ GIÁO DỤC VÀ ĐÀO TẠO
ĐẠI HỌC ĐÀ NẴNG

TRƯƠNG VĂN HIỆU

NGHIÊN CỨU CÁC GIẢI THUẬT SONG SONG
TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA LÕI

Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số : 60.48.01

LUẬN VĂN THẠC SĨ KỸ THUẬT

Người hướng dẫn khoa học: TS. Nguyễn Thanh Bình

Đà Nẵng - Năm 2011



LỜI CAM ĐOAN

Tôi xin cam đoan:
a.

Những nội dung trong luận văn này là do tôi thực hiện dưới sự
hướng dẫn trực tiếp của TS. Nguyễn Thanh Bình.

b.

Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng và
trung thực về tên tác giả, tên công trình, thời gian và địa điểm công bố.

Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Tác giả

Trương Văn Hiệu


MỤC LỤC
LỜI CAM ĐOAN...........................................................................................iii
MỤC LỤC.......................................................................................................iv
DANH MỤC BẢNG.......................................................................................vi
.........................................................................................................................vi
DANH MỤC HÌNH......................................................................................vii
MỞ ĐẦU.........................................................................................................ix
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT..............................................................1
1.1. GIỚI THIỆU ĐẠI CƯƠNG VỀ TÍNH TOÁN SONG SONG............................1
1.1.1. Tổng quan về tính toán song song.............................................................1

1.1.2. Phân loại các kiến trúc song song.............................................................3
1.1.3. Các mô hình lập trình song song...............................................................6
1.1.4. Đánh giá hiệu quả tính toán song song.....................................................8
1.2. THIẾT KẾ GIẢI THUẬT SONG SONG(7)......................................................14
1.2.1. Nguyên lý thiết kế giải thuật song song..................................................14
1.2.2. Thiết kế giải thuật song song bằng phân rã phục thuộc dữ liệu.............15
1.2.3. Giải thuật sắp xếp so sánh và đổi chỗ...................................................16
1.2.4. Thiết kế giải thuật song song bằng phương pháp chia để trị..................18
1.2.5. Thiết kế giải thuật song song cho bài toán tính tổng..............................20
1.2.6. Song song hóa một bài toán tuần tự........................................................23
1.2.7. Mẫu thiết kế giải thuật song song bằng phương pháp cây nhị phân......24
1.3. PHÁT BIỂU MỘT SỐ BÀI TOÁN TÍNH TOÁN SONG SONG(7) ...............25
1.3.1. Thuật toán sắp xếp ..................................................................................25
1.3.2. Thuật toán nhân hai ma trận....................................................................25
1.3.3. Tích vô hướng của hai vector..................................................................25
1.3.4. Bài toán tổng con.....................................................................................25
1.4. TỔNG KẾT CHƯƠNG 1...................................................................................25

CHƯƠNG 2: CẤU TRÚC HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU VÀ
CÔNG NGHỆ TÍNH TOÁN HỖ TRỢ SONG SONG DỮ LIỆU
CUDA(25)......................................................................................................26
2.1. CẤU TRÚC HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU(12).....................................26
2.1.1. Giới thiệu công nghệ GPU (2).................................................................26
2.1.2. Kiến trúc GPU (4)[chưa].........................................................................26
2.1.3. So sánh GPU và CPU (3)........................................................................32


2.2. CÔNG NGHỆ TÍNH TOÁN HỖ TRỢ SONG SONG DỮ LIỆU CUDA........33
2.2.1. Giới thiệu công nghệ CUDA...................................................................33
2.2.3. Ứng dụng của CUDA trong các lĩnh vực công nghệ (4)........................36

2.2.4. Môi trường lập trình với CUDA (6)........................................................41
2.2.5. Ví dụ tính toán song song bằng CUDA..................................................46
2.3. TỔNG KẾT CHƯƠNG 2...................................................................................46

CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG ÁP DỤNG GIẢI THUẬT SONG
SONG TRÊN HỆ THỐNG ĐA LÕI XỬ LÝ ĐỒ HỌA GPU CHO BÀI
TOÁN BẮT CẶP TRÌNH TỰ (30)..............................................................47
3.1. GIỚI THIỆU.......................................................................................................47
3.1.1. Trình tự....................................................................................................47
3.1.2. Sắp hàng trình tự......................................................................................49
3.1.3. Sắp hàng trình tự hệ gen..........................................................................52
3.2. PHÁT BIỂU VỀ MỘT BÀI TOÁN BẮT CẶP TRÌNH TỰ.............................55
3.2.1. Mô tả bài toán thực tế..............................................................................55
3.2.2. Phát biểu bài toán cho một số trường hợp đơn giản, đưa ra hướng giải
quyết 55
3.2.3. Đưa về dạng toán học..............................................................................55
3.3. THIẾT KẾ GIẢI THUẬT SONG SONG TRÊN BÀI TOÁN BẮT CẶP TRÌNH
TỰ..................................................................................................................55
3.3.1. Xây dựng giải thuật.................................................................................56
3.3.2. Đưa ra kết quả dự kiến............................................................................56
3.4. CÀI ĐẶT GIẢI THUẬT TRÊN CUDA............................................................56
3.4.1. Cài đặt giải thuật......................................................................................56
3.5. ĐÁNH GIÁ KẾT QUẢ CHẠY CHƯƠNG TRÌNH .........................................56
3.5.1. Kết quả cho từng trường hợp...................................................................56
3.5.2. Phân tích ưu điểm, nhược điểm...............................................................56
3.5.3. So sánh với các phương pháp khác.........................................................56
3.6. KẾT QUẢ CHƯƠNG TRÌNH...........................................................................56
3.7. ĐÁNH GIÁ KẾT QUẢ.......................................................................................56
3.8. TỔNG KẾT CHƯƠNG 3...................................................................................56


........................................................................................................................56
KẾT LUẬN....................................................................................................57
DANH MỤC TÀI LIỆU THAM KHẢO.....................................................58


DANH MỤC BẢNG
Bảng 1.1. Mô tả phân loại kiến trúc của Flynn............................................3
Bảng 1.1. Sắp xếp theo nguyên lý hình ống................................................17


DANH MỤC HÌNH
Hình 1.1. Mô tả kiến trúc Von Neumann......................................................1
Hình 2.1. Mô hình kiến trúc máy SISD.........................................................4
Hình 3.1. Mô hình kiến trúc máy SIMD.......................................................5
Hình 4.1. Mô hình kiến trúc máy MISD.......................................................5
Hình 5.1. Mô hình kiến trúc máy MIMD......................................................6
Hình 1.1. Mô tả lập trình giữa các tác vụ dùng chung bộ nhớ...................6
Hình 2.1. Mô hình lập trình truyền thông giữa hai tác vụ trên hai máy
tính....................................................................................................................7
Hình 3.1. Mô hình lập trình song song dữ liệu.............................................8
Hình 1.1. Mô tả mối quan hệ các tham số trong công thức tính thời gian
truyền thông.....................................................................................................9
Hình 1.2. Kỹ thuật xen kẽ tính toán và truyền thông giữa P1 và P2........11
Hình 1.1. Thí nghiệm tính số PI...................................................................19
Hình 1.1. Mẫu nhị phân tính tổng N số.......................................................24
Hình 1.1. So sánh kiến trúc CPU và GPU...................................................32
Hình 1.2. So sánh floating-point của GPU và CPU....................................33
Hình 1.1. Kiến trúc bộ phần mềm CUDA...................................................34
Hình 1.2. Các thao tác thu hồi và cấp phát bộ nhớ....................................35
Hình 1.3. Vùng nhớ dùng chung mang dữ liệu gần ALU hơn..................35

Hình 1.1. PhysX và quy trình hiển thị hình ảnh trong game....................37
Hình 1.2. Các tính năng do bộ PhysX SDK mang lại cho hiệu ứng trong
game................................................................................................................38
Hình 2.1. Các thành tựu CUDA đã đạt được với các ứng dụng cho người
dùng thông thường........................................................................................39
Hình 2.2. Bodaboom bộ chuyển đổi media nhanh nhất đầu tiên trên thế
giới..................................................................................................................41
Hình 2.3. CUDA với ứng dụng hình ảnh cho người dùng bình thường...41
Hình 5.1. Hình này chưa có..........................................................................44


Hình 6.1. Sơ đồ hoạt động truyền dữ liệu giữa Host và Device................46
Hình 1.1. Ví dụ về một trình tự. Hình trên cùng: 1 đoạn 18S rDNA của
sâu bọ khác cánh. Hình giữa trên: Tổng quát cơ thể động vật chân dốt.
Hình giữa dưới: Orthopteran stridulation. Hình dưới cùng: Đoạn gen
mtDNA [13]....................................................................................................48
Hình 1.1. Các biến đổi ở mức độ gen giữa Người và Khỉ..........................53


MỞ ĐẦU
Nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao và trở
thành một thách thức lớn, từ đó các giải pháp nhằm tăng tốc độ tính toán đã được ra
đời, từ năm 2001 đến năm 2003 tốc độ của Pentium 4 đă tăng gấp đôi từ 1.5GHz lên
đến 3GHz, tuy nhiên hiệu năng của CPU (Central Processing Unit) không tăng
tương xứng như mức gia tăng xung của CPU, và việc gia tăng tốc độ xung của CPU
nhanh chóng chạm phải ngưỡng tối đa mà cụ thể trong khoảng thời gian 2 năm từ
năm 2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3GHz lên 3.8GHz. Trong quá
trình tăng tốc độ xung của CPU các nhà sản xuất đã chạm phải vấn đề về nhiệt độ
của CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức tới hạn không thể
đáp ứng được khả năng làm mát khi CPU hoạt động ở xung quá cao như vậy. Vì

vậy việc gia tăng xung hoạt động của CPU không sớm thì muộn cũng sẽ đi vào bế
tắc.
Trước tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hướng sang phát
triển công nghệ đa lõi, nhiều lõi, với cơ chế xử lý song song trong các máy tính
nhằm tăng hiệu năng và tiết kiệm năng lượng.
Một trong các công nghệ xử lý song song ra đời đó là GPU(Graphisc
Processing Unit - bộ xử lý đồ họa). Ban đầu, việc chế tạo GPU chỉ với những mục
đích công việc phù hợp với khả năng là tăng tốc độ xử lý đồ họa, cũng như trong
ngành game là chủ yếu. Nhưng đến thời điểm GPU NV30 của nVIDIA ra đời, GPU
bắt đầu tham gia vào những công việc khác ngoài đồ họa như: hỗ trợ tính toán dấu
chấm động đơn, hỗ trợ tính toán lên cả ngàn lệnh. Vì thế đã nảy sinh ra ý tưởng
dùng GPU để xử lý, tính toán song song những chương trình không thuộc đồ họa.
Câu hỏi được đặt ra là làm thế nào để ứng dụng GPU vào việc xử lý tính toán
song song? Câu hỏi này nhanh chóng được giải quyết bằng công nghệ CUDA
(Compute Unified Device Architecture – kiến trúc thiết bị hợp nhất cho tính toán)


của NVIDIA ra đời năm 2007. Với CUDA, các lập trình viên nhanh chóng phát
triển các ứng dụng song song trong rất nhiều lĩnh vực khác nhau như: điện toán hóa
học, sắp xếp, tìm kiếm, mô phỏng các mô hình vật lý, chuẩn đoán y khoa, thăm dò
dầu khí, v.v …CUDA là bộ công cụ phát triển phần mềm trên GPU được xây dựng
bằng ngôn ngữ lập trình C. Với CUDA các lập trình viên dùng để điều khiển GPU
để xử lý, tính toán song song các dữ liệu lớn.
Việc tăng tốc trong quá trình tính toán không những đòi hỏi GPU khả năng xử
lý tốc độ cao, với dữ liệu khổng lồ mà cần phải có những thuật toán song song hữu
hiệu.
Xuất phát từ nhu cầu trên tôi chọn đề tài: “NGHIÊN CỨU CÁC GIẢI
THUẬT SONG SONG TRÊN HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU ĐA
LÕI”


1. Mục tiêu và nhiệm vụ nghiên cứu
Để hoàn thành mục đích ý tưởng đề ra cần nghiên cứu các nội dung như sau :
-

Tìm hiểu các thuật toán tính toán song song, các cách thiết kế mẫu trong tính
toán song song.

-

Tìm hiểu cấu trúc của GPU

-

Tìm hiểu và triển khai lập trình song song với CUDA

-

Phát biểu, phân tích, cài đặt thuật toán cho bài toán đặt ra.

-

Xây dựng thuật toán và ứng dụng áp dụng thuật toán tính toán song song trên
card đồ họa GPU.

-

Đánh giá kết quả theo yêu cầu của đề tài.

2. Đối tượng và phạm vi nghiên cứu
1. Đối tượng nghiên cứu

Trong khuôn khổ của luận văn thuật loại nghiên cứu và ứng dụng, tôi chỉ giới
hạn nghiên cứu các vấn đề sau:


-

Lý thuyết tính toán song song.

-

Mong muốn cải tiến được một thuật toán nào đó sang tính toán song song
sao cho tốc độ tính toán nhanh hơn thuật toán cũ và phát biểu bài toán thực tế
có áp dụng thuật toán trên và cài đặt, giải quyết trên bộ đa xử lý card đồ họa
GPU bằng CUDA.
2. Phạm vi nghiên cứu

-

Phần này còn thiếu ????????????

3. Phương pháp nghiên cứu
Đề tài này sẽ kết hợp hai phương pháp nghiên cứu, đó là:
3. Phương pháp nghiên cứu lý thuyết
-

Nghiên cứu lý thuyết về tính toán song song, các giải thuật tính toán song
song.

-


Nghiên cứu lý thuyết về cơ chế hoạt động tính toán trong GPU.
4. Phương pháp nghiên cứu thực nghiệm

Sử dụng phương pháp nghiên cứu lý thuyết kết hợp với nghiên cứu thực
nghiệm:
-

Thiết kế giải thuật song song và cài đặt trên CUDA, …

-

Triển khai xây dựng ứng dụng.

-

Chạy thử nghiệm và lưu trữ các kết quả đạt được, sau đó đánh giá lại kết quả.

4. Kết quả dự kiến
-

Nghiên cứu được một số thuật toán tính toán song song.

-

Cài đặt các thuật toán tính toán song song chạy trên card đồ họa GPU.


-

Xây dựng ứng dụng tính toán trên card đồ họa GPU sử dụng thuật toán tính

toán song song.

5. Ý nghĩa khoa học và thực tiễn của luận văn
5. Về mặt lý thuyết
-

Nắm được các giải thuật, các mẫu thiết kế tính toán song song.

-

Khai thác các bộ thư viện CUDA SDK ứng dụng trong ngôn ngữ lập trình
song song bằng CUDA.
6. Về mặt thực tiễn

-

Việc nghiên cứu và đề xuất giải pháp để “Nghiên cứu các giải thuật song
song trên hệ thống xử lý đồ họa GPU”, làm cơ sở để giải quyết một số bài
toán cần lượng tính toán lớn với dữ liệu khổng lồ.

6. Bố cục luận văn
Nội dung chính của luận văn được chia thành 3 chương như sau:
Chương 1: Cơ sở lý thuyết tính toán song song.
……
Chương 2: Cấu trúc hệ thống xử lý đồ họa GPU và công nghệ tính toán hỗ trợ
song song dữ liệu CUDA.
….
Chương 3: Xây dựng ứng dụng áp dụng giải thuật song song trên hệ thống đa
lõi xử lý đồ họa GPU cho bài toán bắt cặp trình tự.
…..



-1-

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Trong chương này đề cập sơ lược đến các vấn đề cơ bản trong tính toán song
song như: phân loại kiến trúc song song, mô hình lập trình song song, các mẫu thiết
kế giải thuật song song, … Qua đây sẽ đưa ra cái nhìn tổng quan hơn về tính toán
song song.

1.1.

GIỚI THIỆU ĐẠI CƯƠNG VỀ TÍNH TOÁN SONG SONG

1.1.1. Tổng quan về tính toán song song
1.1.1.1. Lịch sử ra đời tính toán song song
Trong những thập niên 60, nền tảng để thiết kế máy tính đều dựa trên mô hình
của John Von Neumann, với một đơn vị xử lý được nối với một vùng lưu trữ làm bộ
nhớ và tại một thời điểm chỉ có một lệnh được thực thi.

Hình 1.1. Mô tả kiến trúc Von Neumann
Với những bài toán yêu cầu về khả năng tính toán và lưu trữ lớn thì mô hình
kiến trúc này còn hạn chế. Để tăng cường sức mạnh tính toán giải quyết các bài toán
lớn có độ tính toán cao, người ta đưa ra kiến trúc mới, với ý tưởng kết hợp nhiều bộ
xử lý vào trong một máy tính, mà người ta hay gọi là xử lý song song
(Multiprocessor) hoặc kết hợp sức mạnh tính toán của nhiều máy tính dựa trên kết
nối mạng (gọi là máy tính song song - multicomputer).


-2Kể từ lúc này, để khai thác được sức mạnh tiềm tàng trong mô hình máy tính

nhiều bộ xử lý song song, cũng như trong mô hình mạng máy tính xử lý song song
thì các giải thuật tuần tự không còn phù hợp nữa cho nên việc xây dựng thiết kế giải
thuật song song là điều quan trọng. Giải thuật song song có thể phân rã công việc
trên các phần tử xử lý khác nhau.
1.1.1.2. Một số khái niệm xử lý song song
7.

Định nghĩa xử lý song song

Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng
thời và cùng tham giải quyết một bài toán. Nói chung, xử lý song song được thực
hiện trên những hệ thống đa bộ xử lý.
8.

Phân biệt xử lý song song và xử lý tuần tự

Trong tính toán tuần tự với một bộ xử lý thì tại mỗi thời điểm chỉ được thực
hiện một phép toán.
Trong tính toán song song thì nhiều bộ xử lý cùng kết hợp với nhau để giải
quyết cùng một bài toán cho nên giảm được thời gian xử lý vì mỗi thời điểm có thể
thực hiện đồng thời nhiều phép toán.
9.

Mục đích của xử lý song song

Là thực hiện tính toán nhanh trên cơ sở sử dụng nhiều bộ xử lý đồng thời.
Cùng với tốc độ xử lý nhanh, việc xử lý song song cũng sẽ giải được những bài toán
phức tạp yêu cầu khối lượng tính toán lớn.
10.


Ba yếu tố chính dẫn đến việc xây dựng các hệ thống xử lý song
song

Tốc độ xử lý của các bộ xử lý theo kiểu Von Neumann đã dần tiến tới giới
hạn, không thể cải tiến thêm được, do vậy dẫn tới đòi hỏi phải thực hiện xử lý song
song. Hiện nay giá thành của phần cứng (CPU) giảm mạnh, tạo điều kiện để xây
dựng những hệ thống có nhiều bộ xử lý với giá thành hợp lý.


-3Sự phát triển của công nghệ mạch tích hợp cho phép tạo ra những hệ thống có
hàng triệu transistor trên mộ chip.

11.

Hệ thống tính song song

Là một tập các bộ xử lý (thường cùng một loại) kết nối với nhau theo một kiến
trúc nào đó để có thể hợp tác với nhau trong hoạt động và trao đổi dữ liệu được với
nhau.
12.

Vấn đề xử lý song song

Liên quan trực tiếp đến kiến trúc máy tính, phần mềm hệ thống (hệ điều hành),
thuật toán và ngôn ngữ lập trình, v.v…
13.

Xét độ phức tạp

Độ phức tạp của xử lý song song sẽ lớn hơn xử lý tuần tự rất nhiều, và tập

trung chủ yếu ở phương diện trao đổi dữ liệu và đồng bộ các tiến trình.
14.

Cài đặt thuật toán song song

Để cài đặt các thuật toán song song trên các máy tính song song, chúng ta phải
sử dụng những ngôn ngữ lập trình song song như: OpenMP với C/C++, MPI với
C/C++, v.v…
1.1.2. Phân loại các kiến trúc song song
Một trong những phân loại kiến trúc máy tính song song được biết đến nhiều
nhất là phân loại của Flynn, được sử dụng từ năm 1966. Michael Flynn dựa vào đặc
tính về số lượng bộ xử lý, số chương trình thực hiện, cấu trúc bộ nhớ, … để phân
máy tính thành 4 loại dựa trên sự biểu hiện của cặp khái niệm: dòng lệnh
(instruction stream) và dòng dữ liệu (data stream), mỗi loại nằm trong một trong hai
trạng thái đơn (single) hoặc đa (multiple) được thể hiện trong bảng sau:
Bảng 1.1. Mô tả phân loại kiến trúc của Flynn


-4Dòng lệnh
(instruction stream)
Trạng thái đơn
(single)
Trạng thái đơn
(single)
Trạng thái đa
(multiple)
Trạng thái đa
(multiple)

Dòng dữ liệu

(data stream)
Trạng thái đơn
(single)
Trạng thái đa
(multiple)
Trạng thái đơn
(single)
Trạng thái đa
(multiple)

Loại kiến trúc
SISD
Single Instruction Single Data
SIMD
Single Instruction Multiple Data
MISD
Multiple Instruction Single Data
MIMD
Multiple Instruction Multiple Data

1.1.2.2. Kiến trúc đơn dòng lệnh đơn luồng dữ liệu (SISD)
Máy tính SISD chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉ
đọc, ghi một mục dữ liệu. Tất cả các máy tính SISD chỉ có một thanh ghi (register)
được gọi là bộ đếm chương trình, được sử dụng để nạp địa chỉ của lệnh tiếp theo và
kết quả là thực hiện theo một thứ tự xác định của các câu lệnh. Kiến trúc máy SISD
có mô hình hoạt động theo hình sau:

Hình 2.1. Mô hình kiến trúc máy SISD
1.1.2.3. Kiến trúc đơn dòng lệnh đa luồng dữ liệu (SIMD)
Máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử lý

thực hiện theo một luồng các câu lệnh. CPU phát sinh tín hiệu điều khiển tới tất cả
các phần xử lý, những bộ xử lý này cùng thực hiện một phép toán trên cấc mục dữ
liệu khác nhau, nghĩa là mỗi bộ xử lý có luồng dữ liệu riêng. Kiến trúc máy SIMD
có mô hình hoạt động theo hình sau:


-5-

Hình 3.1. Mô hình kiến trúc máy SIMD
1.1.2.4. Kiến trúc đa dòng lệnh đơn dữ liệu (MISD)
Máy tính loại MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trên
cùng một mục dữ liệu (ngược với máy tính loại SIMD). Kiến trúc máy MISD có mô
hình hoạt động mô tả theo hình sau:

Hình 4.1. Mô hình kiến trúc máy MISD
1.1.2.5. Kiến trúc đa dòng lệnh đa luồng dữ liệu (MIMD)
Máy tính loại MIMD gọi là đa bộ xử lý, trong đó 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 bộ nhớ
chung khi cần, do vậy giảm thiểu được thời gian trao đổi dữ liệu giữa các bộ xử lý
trong hệ thống. Đây là loại kiến trúc phức tạp nhất, nhưng nó là mô hình hỗ trợ xử


-6lý song song cao nhất và đã có nhiều máy tính được thiết kế theo kiến trúc này, ví
dụ: BBN Butterfly, Alliant FX, iSPC của Intel, v.v...Kiến trúc máy MIMD có mô
hình hoạt động theo hình sau:

Hình 5.1. Mô hình kiến trúc máy MIMD
1.1.3. Các mô hình lập trình song song
1.1.3.1. Lập trình bộ nhớ dùng chung

Lập trình bộ nhớ dùng chung hay còn gọi là lâp trình chia sẻ bộ nhớ. Trong
mô hình này được thiết kế cho máy tính multiprocessors, các tác vụ chia sẻ không
gian địa chỉ dùng chung, được đọc/ghi một cách không đồng bộ. Một số kỹ thuật
được dùng trong lập trình bộ nhớ dùng chung như khoá (locks) hay cờ (semaphores)
được sử dụng để điều khiển truy nhập đến bộ nhớ dùng chung. Truyền thông giữa
các tác vụ thông qua các biến dùng chung.

Hình 1.1. Mô tả lập trình giữa các tác vụ dùng chung bộ nhớ


-71.1.3.2. Lập trình truyền thông điệp
Trong máy tính multicomputers cung cấp kỹ thuật truyền thông điệp để trao
đổi giữa các tác vụ. Hai tác vụ nằm trên hai máy khác nhau có thể trao đổi với nhau
bằng kỹ thuật truyền thông điệp trên mạng kết nối. Các thông điệp có thể là các
lệnh, dữ liệu, tín hiệu đồng bộ hay ngắt. Hai mô hình truyền thông điệp được thực
thi và sử dụng là đồng bộ hay không đồng bộ.

Hình 2.1. Mô hình lập trình truyền thông giữa hai tác vụ trên hai máy tính
1.1.3.3. Mô hình song song dữ liệu
Trong mô hình này, hầu hết các công việc song song đều tập trung thực hiện
các phép toán trên một tập dữ liệu. Tập dữ liệu này thường được tổ chức trong một
cấu trúc dữ liệu thông dụng như mảng hoặc khối. Một tập tác vụ sẽ làm việc trên
cùng cấu trúc dữ liệu nhưng mỗi tác vụ sẽ làm việc trên một phần dữ liệu khác nhau
với cùng phép toán. Mô hình này thiết kế chủ yếu dành cho máy tính song song
kiểu bộ xử lý mảng (array processor).


-8Hình 3.1. Mô hình lập trình song song dữ liệu
1.1.3.4. Mô hình hướng đối tượng
Trong mô hình này, ánh xạ các đơn vị thực hiện vào các đối tượng. Các đối

tượng được tạo ra và thao tác theo cách tự động, việc xử lý được thực hiện thông
qua gửi và nhận giữa các đối tượng. Các mô hình lập trình hiện nay đều xây dựng
các đối tượng từ mức thấp như tiến trình, tác vụ, hàng đợi và cờ tín hiệu đến mức
cao như monitor hay module chương trình.
Các ngôn ngữ lập trình song song hướng đối tượng như CORBA, DCE,
JAVA, C/C++.
1.1.3.5. Mô hình logic
Dựa trên cơ sở logic tiên đề, lập trình logic phù hợp cho xử lý trí thức giải
quyết cơ sở tri thức lớn. Mô hình này chấp nhận một chiến lược tìm kiếm ẩn và hỗ
trợ song song trong xử lý suy luận logic. Một câu hỏi được trả lời nếu hợp với các
sự kiện được tìm thấy trong cơ sở dữ liệu. Hai sự kiện hợp nhau nếu tiền đề của
chúng và các đối kết hợp là như nhau. Xử lý việc hợp và thống nhất có thể được
song song dưới các điều kiện chắc chắn. Mô hình này được áp dụng song song cho
các ứng dụng trí tuệ nhân tạo.
1.1.4. Đánh giá hiệu quả tính toán song song
1.1.4.1. Thời gian thực hiện
15.

Thời gian tính toán

Thời gian tính toán của giải thuật song song là thời gian dành để thực hiện tính
toán. Đối với giải thuật tuần tự thì thời gian này chỉ phụ thuộc vào kích thước của
bài toán nhưng với tính toán song song thì việc tính toán lặp trên các tác vụ có thể
có. Do đó thời gian tính toán sẽ phụ thuộc vào số tác vụ thực hiện. Đối với mô hình
bộ nhớ chung thì số lượng bộ xử lý cũng ảnh hưởng đến tốc độ thực thi trên mỗi bộ
xử lý.


-9Thông thường ta có thể xác định bằng thời gian thực hiện tuần tự cộng với bất
kỳ thời gian nào thêm vào do thực hiện song song. Chẳng hạn như thời gian tính

toán lặp lại cùng một công việc trên các tác vụ.
16.

Thời gian truyền thông

Thời gian truyền thông của một giải thuật là thời gian các tác vụ dành để gửi
và nhận thông điệp. Có hai loại truyền thông cần xác định : truyền thông giữa hai
tác vụ trên hai bộ xử lý khác nhau và truyền thông giữa hai tác vụ cùng nằm trên
cùng bộ xử lý. Thông thường thời gian truyền bên trong bộ xử lý lớn hơn nhiều so
với thời gian truyền giữa hai bộ xử lý, nhất là đối với mô hình máy tính song song
multicomputers.
Trong mô hình multicomputers lý tưởng thì chi phí để gửi một message giữa
hai tác vụ định vị trên bộ xử lý khác nhau phụ thuộc vào hai tham số sau :
Thời gian khởi tạo message: ts là thời gian cần thiết để khởi tạo truyền thông
Thời gian truyền dữ liệu: t w là thời gian cần thiết để truyền đi dữ liệu có kích
thước một word (2 byte). t w được xác định bởi băng thông vật lý của kênh truyền
thông kết nối bộ xử lý nguồn và đích.
Công thức tính thời gian gửi message có kích thước L (đơn vị là word) là:
T msg = ts + L tw
Nếu lượng dữ liệu truyền là nhỏ thì thời gian khởi tạo chiếm phần lớn, còn
khi lượng dữ liệu lớn thì thời gian truyền sẽ chiếm tỷ trọng cao.

Hình 1.1. Mô tả mối quan hệ các tham số trong công thức tính thời gian
truyền thông


- 10 Thông thường ts và tw là các thông số được tính toán phụ thuộc vào cụ thể
kiến trúc máy tính song song. Tuy nhiên đối với mô hình multicomputer thực tế, ta
cần phân tích sự ảnh hưởng của hai kỹ thuật định đường truyền thông là store and
forward và circuit-switched cũng như ảnh hưởng của tranh chấp băng thông trên

đường truyền giữa các bộ xử lý.
Trong sơ đồ của cơ chế store and forward, thời gian cần thiết để gửi một
message từ một bộ xử lý tới một bộ xử lý khác tăng tuyến tính với số bước nhảy
(hops) mà message phải tạo ra để đến được đích. Ngược lại, thời gian cần thiết để
gửi một message từ một bộ xử lý tới một bộ xử lý khác trong lược đồ chuyển mạch
là phụ thuộc rất ít với khoảng cách giữa các bộ xử lý.
Do đó ta có thể phát triển thành các công thức sau :
- Đối với truyền thông định đường theo cơ chế store and forward:
Tmsg = ( ts + tw L) D
Với D là khoảng cách giữa nút nhận và gửi trong bước định đường.
- Đối với truyền thông định đường theo cơ chế circuit-switched:
Tmsg = ts + tw L – th D
Với D là khoảng cách giữa nút nhận và gửi trong bước định đường T h là chi
phí gia tăng cho mỗi bước định đường.
Trong thực tế, th thường rất nhỏ, ta có thể bỏ qua được. Khi xem xét đến sự
tranh chấp băng thông truyền trên mạng kết nối thì công thức tính được thay đổi
như sau:
Tmsg = ts + tw S L
Trong đó S là số bộ xử lý gửi đồng thời trên cùng một đường dây.
17.

Thời gian rỗi


- 11 Thời gian tính toán và truyền thông thường đơn giản hơn trong việc xác định
bởi vì ta có thể xác định sự phân bố của nó đối với thời gian thực hiện. Thời rảnh
rỗi khó có thể xác định bởi vì phụ thuộc vào trình tự các phép được thực hiện.
Một bộ xử lý có thể đặt trong trạng thái rỗi nếu thiếu tính toán hoặc dữ liệu
để tính toán. Trong trường hợp đầu tiên, thời gian rảnh rỗi có thể tránh được bằng
cách sử dụng kỹ thuật căn bằng nạp động. Trong trường hợp thứ hai, bộ xử lý rỗi

trong khi tính toán đang chờ dữ liêu dữ liệu từ xa mà dữ liệu này lại đang trong
trạng thái sử dụng. Thời này có thể được tránh nếu ta cấu trúc chương trình để có
thể thực tính toán hoặc truyền thông trong khí đang chờ dữ liệu từ xa. Kỹ thuật này
thường được gọi là xen kẽ tính toán và truyền thông (overlapping computation and
communication) bởi vì tính toán với dữ liệu cục bộ được thực hiện đồng thời với
tính toán và truyền thông dữ liệu xa.
Cách đơn giản để đạt được điều này là tạo ra nhiều tác vụ trên một bộ xử lý.
Trong khi một tác vụ đang bị dùng để chờ dữ liệu ở xa thì tính toán có thể chuyển
sang tác vụ khác mà dữ liệu đã sẵn có.

Hình 1.2. Kỹ thuật xen kẽ tính toán và truyền thông giữa P1 và P2
Hầu hết các máy tính song song đều hỗ trợ thực hiện kỹ thuật lập lịch trình,
xen kẽ tính toán và truyền thông do đó thời gian rỗi chiếm tỷ trọng rất nhỏ trong
toàn bộ thời gian tính toán, nên thông thường có thể bỏ qua được.
1.1.4.2. Tăng tốc và hiệu quả


- 12 Thời gian thực hiện không luôn là thước đo thuận tiên nhất để đánh giá hiệu
năng của giải thuật. Khi thời gian thực hiện có xu hướng biến đổi theo kích thước
bài toán, thời gian thực hiện phải được tiêu chuẩn hoá khi so sánh hiệu năng giải
thuật với kích thước bài toán khác nhau.
Hiệu quả của giải thuât được định nghĩa là phần thời gian mà các bộ xử lý
dùng để thực hiện công việc có ích, chỉ ra mức độ hiệu quả của một giải thuật khi sử
dụng các tài nguyên tính toán của một máy tính song song theo hướng độc lập với
kích thước bài toán, được xác định theo công thức sau:
Ep =

T1
pT p


Với T1 là thời gian thực hiện giải thuật tuần tự.
Tp là thời gian thực hiện giải thuật song song
Ep là hiệu quả giải thuật
p là số bộ xử lý
Thông thường, Ep ≤ 1.
Một độ đo khác đánh giá được hiệu năng của giải thuật là khả năng tăng tốc,
đây là hệ số mà thời gian thực hiện được giảm đi khi thực hiện bài toán trên p bộ xử
lý. Được xác định theo công thức sau:
Sp =

T1
Tp

Với Sp là khả năng tăng tốc
T1 là thời gian thực hiện giải thuật tuần tự.
Tp là thời gian thực hiện giải thuật song song
Hầu hết các trường hợp thì Sp ≤ p.
Rõ ràng khả năng tăng tốc càng lớn thì giải thuật song song càng tốt.


- 13 Tuy nhiên năm 1967 Amdahl đã đưa ra luật về giới hạn khả năng tăng tốc như
sau:
Luật Amdahl: Giả sử s là phần thao tác tính toán cần phải thực hiện tuần tự,
trong đó 0 ≤ s ≤ 1. Khả năng tăng tốc tối đa Sp đạt được bởi một máy tính song
song có P bộ xử lý thực hiện tính toán là :
Sp ≤

1
s + (1 − s) / p


Luật trên đã sớm đem lại sự bi quan về một tiềm năng của tính toán song song.
Tuy nhiên nếu ta mở rộng vấn đề ra có thể thấy luật Amdahl thích hợp chỉ đối với
bài toán cố định hoặc phần trăm tuần tự là độc lập với kích thước bài toán. Điều này
thường ít gặp trong thực tế vì các bài toán giải quyết song song thường lớn, khi đó
phần tính toán tuần tự sẽ giảm xuống khi kích thước tăng.
1.1.4.3. Tính qui mô
Một giải thuật có tính qui mô nếu mức độ song song ít nhất cũng gia tăng
tuyến tính theo kích thước bài toán. Một kiến trúc có tính qui mô nếu nó tiếp tục
mang lại cùng hiệu năng cho từng bộ xử lý, mặc dù các bộ xử lý được dùng trong
bài toán kích thước lớn hơn, khi số lượng bộ xử lý gia tăng. Tính qui mô về thuật
toán và kiến trúc là quan trọng, bởi vì từ đó mới có thể cho phép người sử dụng giải
quyết các bài toán lớn hơn trong số lượng thời gian như nhau bằng cách mua một
máy tính song song với nhiều bộ xử lý hơn.
Việc đánh giá tính qui mô của giải thuật thường thông qua một tiêu chuẩn
phụ thuộc vào tính hiệu quả. Nếu như giải thuật có thể duy trì hiệu quả là một hằng
số hoặc ít nhất là giới hạn dưới > 0 khi số bộ xử lý gia tăng do kích thước bài toán
tăng lên. Theo công thức tính hiệu quả:
Ep =

T1
pT p

Để duy trì Ep là hằng số khi T1 cần phải tỷ lệ với pTp.


×