Tải bản đầy đủ (.doc) (90 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 (772.22 KB, 90 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
v


DANH MỤC CÁC CHỮ VIẾT TẮT vi
DANH MỤC CÁC BẢNG vii
vii
DANH MỤC CÁC HÌNH VẼ viii
MỞ ĐẦU 1
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 6
1.1. TỔNG QUAN VỀ TÍNH TOÁN SONG SONG 6
1.1.1. Tổng quan về tính toán song song 6
1.1.2. Phân loại các kiến trúc song song 9
1.1.3. Các mô hình lập trình song song 12
1.1.4. Đánh giá hiệu quả tính toán song song 14
1.2. THIẾT KẾ GIẢI THUẬT SONG SONG 20
1.2.1. Nguyên lý thiết kế giải thuật song song 20
1.2.2. Nhận thức vấn đề và chương trình có thể song song hóa 21
1.2.3. Thiết kế giải thuật song song bằng phân rã phục thuộc dữ liệu 23
1.2.4. Thiết kế giải thuật song song bằng phương pháp chia để trị 24
1.2.5. Ví dụ thiết kế giải thuật song song cho bài toán tính tổng 25
1.2.6. Ví dụ thiết kế giải thuật song song cho bài toán sắp xếp 27
1.3. TỔNG KẾT CHƯƠNG 1 29
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 30
2.1. CẤU TRÚC HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU 30
2.1.1. Giới thiệu công nghệ GPU 30
2.1.2. Kiến trúc GPU 31
2.1.3. So sánh GPU và CPU 35
2.2. CÔNG NGHỆ TÍNH TOÁN HỖ TRỢ SONG SONG DỮ LIỆU CUDA 37
2.2.1. Giới thiệu công nghệ CUDA 37
2.2.2. Ứng dụng của CUDA trong các lĩnh vực công nghệ 39
2.2.3. Môi trường lập trình với CUDA 40

2.2.4. Mô hình lập trình 42
2.2.5. Mô hình bộ nhớ 44
2.2.6. Tìm hiểu ngôn ngữ lập trình CUDA 46
2.2.7. Ví dụ tính toán song song bằng CUDA 58
2.3. TỔNG KẾT CHƯƠNG 2 60
CHƯƠNG 3: XÂY DỰNG ỨNG 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 SO SÁNH TRÌNH TỰ 61
3.1. GIỚI THIỆU 61
3.1.1. So sánh trình tự 61
3.1.2. Định nghĩa so sánh trình tự 62
3.1.3. Hệ thống ký tự 63
3.1.4. Các phép biến đổi 63
3.1.5. Khoảng cách 64
3.1.6. Sắp hàng trình tự hệ gen 64
3.1.7. Các thuật toán sắp hàng trình tự hệ gen 64
3.2. PHÁT BIỂU BÀI TOÁN SO SÁNH TRÌNH TỰ 67
3.2.1. Mô tả bài toán 67
3.2.2. Hướng giải quyết bằng giải thuật quy hoạch động 67
3.3. THIẾT KẾ GIẢI THUẬT SONG SONG 71
3.3.1. Xây dựng giải thuật 71
3.3.2. Cài đặt giải thuật trên CUDA 72
3.3.3. Kết quả 73
3.4. ĐÁNH GIÁ KẾT QUẢ CHẠY CHƯƠNG TRÌNH 74
3.5. TỔNG KẾT CHƯƠNG 3 75
KẾT LUẬN 76
DANH MỤC TÀI LIỆU THAM KHẢO 78
PHỤ LỤC 80

DANH MỤC CÁC CHỮ VIẾT TẮT

CUDA Compute Unified Device Architecture
CPU Central Processing Unit
GPU Graphisc Processing Unit
SISD Single Instruction Single Data
SIMD Single Instruction Multiple Data
MISD Multiple Instruction Single Data
MIMD Multiple Instruction Multiple Data
SDK Software Development Kit
AMD Advanced Micro Devices
GPGPU General Purpose Computing on Graphics Processing Units
DRAM Dynamic Random Access Memory
DNA Deoxyribonucleic Acid
RNA Ribonucleic Acid
AND Associates Degree in Nursing
DMA Direct Memory Access
NVCC NVIDIA C Compiler
SW Smith-Waterman
API Application Programming Interface
DANH MỤC CÁC BẢNG
Số hiệu bảng Tên bảng Trang
Bảng 1.1. Mô tả phân loại kiến trúc của Flynn 9
Bảng 1.1. Sắp xếp theo nguyên lý hình ống 28
3.4.1.1. Bảng
1.1.
Bảng kết quả chạy thực nghiệm 75

DANH MỤC CÁC HÌNH VẼ
Số hiệu hình vẽ Tên hình vẽ Trang
Hình 1.1. Mô tả kiến trúc Von Neumann 6
Hình 2.1. Hình 2.1. Mô hình kiến trúc máy SISD 10

Hình 3.1. Mô hình kiến trúc máy SIMD 10
Hình 4.1. Mô hình kiến trúc máy MISD 11
Hình 5.1. Mô hình kiến trúc máy MIMD 12
Hình 1.1. Mô tả lập trình giữa các tác vụ dùng chung bộ nhớ 12
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
13
Hình 3.1. Mô hình lập trình song song dữ liệu 13
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
15
Hình 1.2. Kỹ thuật xen kẽ tính toán và truyền thông giữa P1 và P2 17
Hình 2.1. Tính tổng N số 26
Hình 1.1. So sánh kiến trúc CPU và GPU 36
Hình 1.2. So sánh floating-point của GPU và CPU 36
Hình 1.1. Kiến trúc bộ phần mềm CUDA 37
Hình 1.2. Các thao tác thu hồi và cấp phát bộ nhớ 38
Hình 1.3. Vùng nhớ dùng chung mang dữ liệu gần ALU hơn 39
Hình 1.1. Sơ đồ hoạt động truyền dữ liệu giữa Host và Device 42
Hình 2.1. Khối luồng 44
Hình 1.1. Mô hình bộ nhớ trên GPU 45
Hình 1.1. Cộng hai ma trận 58
Hình 2.1. Nhân hai ma trận 59
Hình 1.1. Ví dụ về so sánh trình tự 62
Hình 1.1. So sánh hai trình tự 67
Hình 2.1. Giải thuật quy hoạch động cho bài toán PSA 68
Hình 2.2. Ma trận đánh giá S(i, j) 69
Hình 2.3. Kết quả giải thuật quy hoạch động cho bài toán PSA 69
Hình 1.1. Phương pháp song song tính giá trị các phần tử ma trận
đánh giá

72
3.3.3. Hình 1.1. Ma trận đánh giá 74

- 1 -
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 đã gặp 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 (Graphics
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 trò chơi 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

- 2 -
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í, … 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 những thiết bị
GPU có khả năng xử lý tốc độ cao với dữ liệu khổng lồ mà cần phải có những giải
thuật 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 giải thuật 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 giải thuật cho bài toán đặt ra.
- Xây dựng giải thuật và ứng dụng áp dụng giải thuật tính toán song song trên
thiết bị đồ 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
Đối tượng nghiên cứu
Trong khuôn khổ luận văn thuộc 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.

- 3 -
- Chuyển đổi một số giải thuật xử lý trình tự sang tính toán song song sao cho

tốc độ tính toán nhanh hơn giải thuật cũ, phát biểu bài toán thực tế có áp dụng
giải thuật trên, cài đặt và giải quyết trên thiết bị xử lý đồ họa GPU bằng ngôn
ngữ lập trình CUDA.
Phạm vi nghiên cứu
Nghiên cứu chuyển một số giải thuật cơ bản tuần tự sang song song chạy
trên thiết bị đồ họa GPU của NVIDIA bằng ngôn ngữ CUDA.
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à:
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.
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 bằng 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ố giải thuật tính toán song song.
Cài đặt các giải thuật tính toán song song chạy trên thiết bị đồ họa GPU.
Xây dựng ứng dụng tính toán trên thiết bị đồ họa GPU sử dụng giải thuật tính
toán song song.

- 4 -
5. Ý nghĩa khoa học và thực tiễn của luận văn
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.

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.
Trong chương này giới thiệu tổng quan về tính toán song song như: Lịch sử
phát triển song song, phân loại kiến trúc song song, các mô hình lập trình song song
và đánh giá hiệu quả tính toán song song. Trình bày nguyên lý thiết kế giải thuật
song song, giới thiệu một số mẫu thiết kế giải thuật song song bằng phương pháp
chia để trị, phương pháp cây nhị phân. Giới thiệu bài toán sắp xếp, bài toán tính
tổng dùng giải thuật song song. Qua đây đưa ra cái nhìn tổng quan hơn về 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 này giới thiệu về thiết bị đồ họa GPU đa lõi của hãng NVIDIA gồm
các vấn đề: lịch sử phát triển, mô tả kiến trúc, nguyên lý hoạt động và những ứng
dụng trên thiết bị đồ họa này. Đưa ra những so sánh khác biệt của CPU và GPU.
Trình bày ngôn ngữ lập trình song song CUDA trên thiết bị đồ họa GPU của hãng

- 5 -
NVIDIA. Áp dụng giải quyết một số bài toán cộng ma trận, nhân ma trận, …bằng
phương pháp song song dùng ngôn ngữ CUDA thực thi trên thiết bị đồ họa.
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ự.
Trong chương này trình bày một số khái niệm cơ bản về tin sinh học: AND,
protein, … Từ đó tập trung mô tả bài toán so sánh trình tự sử dụng giải thuật Smith-
Waterman và giải quyết bằng giải thuật song song bằng CUDA đưa ra những đánh
giá về lợi ích của việc sử dụng giải thuật song song.


- 6 -
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
Trong chương này giới thiệu tổng quan về tính toán song song như: Lịch sử
phát triển song song, phân loại kiến trúc song song, các mô hình lập trình song song
và đánh giá hiệu quả giải thuật tính toán song song. Trình bày nguyên lý thiết kế
giải thuật song song, giới thiệu một số mẫu thiết kế giải thuật song song bằng
phương pháp chia để trị, phương pháp cây nhị phân. Giới thiệu bài toán sắp xếp, bài
toán tính tổng dùng giải thuật song song. Qua đây đưa ra cái nhìn tổng quan hơn về
tính toán song song.
1.1. TỔNG QUAN 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 (Xem Hình 1.1. ), 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à hay gọi là xử lý song song (Multiprocessor) hoặc

- 7 -
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).
Kể 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 [5].

1.1.1.2. Tại sao phải tính toán song song
Việc tính toán song song là rất cần thiết. Ngoài hai nguyên nhân chính là nó
được dùng để tính toán các bài toán yêu cầu thời gian tính toán lớn và khối lượng
dữ liệu lớn còn có các nguyên nhân khác như để sử dụng tài nguyên của các máy
khác trong một mạng nội bộ hoặc thông qua mạng internet, có thể sử dụng nhiều tài
nguyên tính toán như kết hợp lại tạo nên một siêu máy tính. Do giới hạn về không
gian lưu trữ của bộ nhớ trên một máy đơn để giải quyết một vấn đề lớn việc sử dụng
nhiều bộ nhớ trên nhiều máy tính là rất hữu hiệu trong trường hợp này.
Giới hạn của tính toán tuần tự bao gồm cả hai nguyên nhân thực tế và nguyên
nhân vật lý. Ðể xây dựng nên một máy tính tuần tự tốc độ cao gặp rất nhiều hạn
chế:
Về kích cỡ: Công nghệ chế tạo bộ xử lý cho phép gắn nhiều bóng bán dẫn trên
một con chip. Tuy nhiên việc làm này sẽ làm tăng kích thuớc của bộ xử lý.
Về tốc độ truyền dữ liệu: Tốc độ truyền của máy tính tuần tự phụ thuộc trực
tiếp vào sự di chuyển dữ liệu trong phần cứng. Cho nên việc tăng tốc độ thực hiện
phải chủ yếu căn cứ vào các yếu tố tính toán.
Về thương mại: Việc tạo ra một bộ xử lý có tốc độ xử lý cao là rất tốn kém. Sử
dụng nhiều bộ xử lý nhỏ đạt hiệu quả tương tự mà lại ít tốn kém hơn [7].

- 8 -
1.1.1.3. Một số khái niệm xử lý song song
Định nghĩa về 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ý.
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.

Mục đích của xử lý song song
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.
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ý.
Sự 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 bộ vi xử lý.
Hệ thống tính song song
Hệ thống tính toán 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.

- 9 -
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),
giải thuật và ngôn ngữ lập trình, …
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.
Cài đặt giải thuật song song
Để cài đặt các giải thuật song song trên các máy tính song song, 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++, …
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 bốn 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 1.1.
Bảng 1.1. Mô tả phân loại kiến trúc của Flynn
Dòng lệnh
(instruction stream)
Dòng dữ liệu
(data stream)
Loại kiến trúc
Trạng thái đơn
(single)
Trạng thái đơn
(single)
SISD
Single Instruction Single Data
Trạng thái đơn
(single)
Trạng thái đa
(multiple)
SIMD
Single Instruction Multiple Data
Trạng thái đa
(multiple)
Trạng thái đơn
(single)
MISD
Multiple Instruction Single Data
Trạng thái đa
(multiple)

Trạng thái đa
(multiple)
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)

- 10 -
đượ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 Hình 2.1.
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 3.1.
Hình 3.1. Mô hình kiến trúc máy SIMD
Mô hình SIMD còn được gọi là SPMD, đơn chương trình và đa dữ liệu. Đây
chính là mô hình máy tính phổ biến có trên thị trường như: DAP và Connection
Machine CM-2.

- 11 -
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 4.1.
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ử
lý 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, Kiến trúc máy MIMD có mô hình
hoạt động theo Hình 5.1.

- 12 -
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 (Xem Hình 1.1. ) này được thiết kế cho máy tính xử lý song song
(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ớ
1.1.3.2. Lập trình truyền thông điệp
Trong máy tính song song cung cấp kỹ thuật truyền thông điệp để trao đổi
giữa các tác vụ (Xem Hình 2.1. ). 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ó

- 13 -
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 song song dữ liệu được mô tả ở Hình 3.1. , 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 song song dữ
liệu thiết kế chủ yếu dành cho máy tính song song kiểu bộ xử lý mảng.
Hì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 hướng đối tượng 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

- 14 -
đề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ư mô-đun 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
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ý.
Thông thường 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ụ.
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

- 15 -
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.
Trong mô hình máy tính song song lý tưởng thì chi phí để gửi một thông điệp
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 thông điệp: t
s
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 thông điệp có kích thước L (đơn vị là word) là:

(1.1) T
msg
= t
s
+ L t
w

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, điều này được thể hiện
qua Hình 1.1.
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
Thông thường t
s
và t
w
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 máy tính song song thực tế, cần
phân tích sự ảnh hưởng của hai kỹ thuật định đường truyền thông là lưu trữ và
chuyển tiếp (store and forward), chuyển mạch kênh (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ý.

- 16 -
Trong sơ đồ của cơ chế lưu trữ và chuyển tiếp, thời gian cần thiết để gửi một
thông điệp 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
mà thông điệp phải tạo ra để đến được đích. Ngược lại, thời gian cần thiết để gửi
một thông điệp 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 đó 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ế lưu trữ và chuyển tiếp:

(1.2) T
msg
= ( t
s
+ t
w
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ế chuyển mạch kêmh:
(1.3) T
msg
= t
s
+ t
w
L – t
h
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ế, t
h
thường rất nhỏ, 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:
(1.4) T
msg
= t
s

+ t
w
S L
Trong đó S là số bộ xử lý gửi đồng thời trên cùng một đường dây.
Thời gian rỗi
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ì 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 từ xa mà dữ liệu này lại đang trong trạng thái sử
dụng. Thời gian rảnh rỗi này có thể được tránh nếu cấu trúc chương trình có thể

- 17 -
thực tính toán hoặc truyền thông trong khi đ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 (xem Hình 1.2. ) 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 P
1
và P
2
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ả

Thời gian thực hiện 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:

×