1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

90 740 10
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiê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
Tác giả Trương Văn Hiệu
Người hướng dẫn TS. Nguyễn Thanh Bình
Trường học Đại học Đà Nẵng
Chuyên ngành Khoa học Máy tính
Thể loại Luận văn Thạc sĩ
Năm xuất bản 2011
Thành phố Đà Nẵng
Định dạng
Số trang 90
Dung lượng 1,32 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Luận văn thạc sĩ năm 2011Đề 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Định dạng file word kèm slideMụ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ứuTrong 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.- 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ứuNghiê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ệmSử 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ếnNghiê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.5. Ý nghĩa khoa học và thực tiễn của luận vănVề 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ễnViệ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ănNộ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 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.

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

MỤC LỤC

LỜI CAM ĐOAN i

MỤC LỤC ii DANH MỤC CÁC CHỮ VIẾT TẮT iv

DANH MỤC CÁC BẢNG v

DANH MỤC CÁC HÌNH VẼ vi

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

Trang 5

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 63

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

3.2.1 Mô tả bài toán 66

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

Trang 6

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

Trang 7

DANH MỤC CÁC BẢNG

Trang 8

DANH MỤC CÁC HÌNH VẼ

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 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 1.1 Phương pháp song song tính giá trị các phần tử ma trận

Trang 9

Một trong các công nghệ xử lý song song ra đời đó là GPU (GraphicsProcessing 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ư trongngà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ándấ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ưởngdù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ánsong 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áttriể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

Trang 10

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ựngbằ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ảithuậ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 songsong trên hệ thống xử lý đồ họa GPU đa lõi”

Để 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ínhtoá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ênthiết bị đồ họa GPU

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

Đố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ạnnghiên cứu các vấn đề sau:

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

Trang 11

3

Chuyển đổi một số giải thuật xử lý trình tự sang tính toán song song sao chotố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ụnggiả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ônngữ 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ênthiết bị đồ họa GPU của NVIDIA bằng ngôn ngữ CUDA

Đề 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 songsong

- 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ựcnghiệ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ả

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ínhtoán song song

Trang 12

4

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ìnhsong 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 songtrê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ượngtính toán lớn với dữ liệu khổng lồ

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ậtsong song, giới thiệu một số mẫu thiết kế giải thuật song song bằng phương phápchia để 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ínhtổ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ánsong 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ồmcá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 ứngdụ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

Trang 14

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ằngphươ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àitoá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

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ìnhcủa John Von Neumann (Xem Hình 1.1 ), với một đơn vị xử lý được nối với mộtvù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ìnhkiế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ánlớ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

Trang 15

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áykhá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àinguyê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ônggian 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ụngnhiề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ênnhâ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ạnchế:

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ênmộ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ựctiế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ệnphả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]

Trang 16

8

Đị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 đồngthời và cùng tham giải quyết một bài toán Nói chung, xử lý song song được thựchiệ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ựchiệ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ớinhau để 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ùngvớ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ứctạ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ớihạ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ý songsong

Hiện nay giá thành của phần cứng (CPU) giảm mạnh, tạo điều kiện để xâydự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

Trang 17

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ụngnhữ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ềunhất là phân loại của Flynn, được sử dụng từ năm 1966 Michael Flynn dựa vào đặctính về số lượng bộ xử lý, số chương trình thực hiện, cấu trúc bộ nhớ, … để phânmá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 haitrạ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

SISD Single Instruction Single DataTrạ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)

MISDMultiple Instruction Single DataTrạng thái đa

(multiple) Trạng thái đa(multiple) MIMD Multiple Instruction Multiple Data

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)

Trang 18

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

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 Đâychính là mô hình máy tính phổ biến có trên thị trường như: DAP và ConnectionMachine CM-2

Trang 19

11

Máy tính loại MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trêncù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

Máy tính loại MIMD gọi là đa bộ xử lý, trong đó mỗi bộ xử lý có thể thựchiệ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ầuhế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ìnhhoạt động theo Hình 5.1

Trang 20

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

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/ghimột cách không đồng bộ Một số kỹ thuật được dùng trong lập trình bộ nhớ dùngchung 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ùngchung

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

Trong máy tính song song cung cấp kỹ thuật truyền thông điệp để trao đổigiữ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ó

Trang 21

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

Trong mô hình song song dữ liệu được mô tả ở Hình 3.1 , hầu hết các côngviệ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ặckhố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àmviệ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

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 đốitượng Các đối tượng được tạo ra và thao tác theo cách tự động, việc xử lý đượcthự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

Trang 22

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ủachú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ể đượcsong song dưới các điều kiện chắc chắn Mô hình này được áp dụng song song chocác ứng dụng trí tuệ nhân tạo.

1.1.4 Đánh giá hiệu quả tính toán song song

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ínhtoá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ủabà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ánlặ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

Trang 23

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êncù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 sovớ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ệpgiữ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: ts là thời gian cần thiết để khởi tạo truyền thôngThời gian truyền dữ liệu: tw là thời gian cần thiết để truyền đi dữ liệu có kíchthước một word (2 byte) tw được xác định bởi băng thông vật lý của kênh truyềnthô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 khilượ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ệnqua 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 ts và tw là các thông số được tính toán phụ thuộc vào cụ thể kiếntrú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ầnphâ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ư ảnhhưởng của tranh chấp băng thông trên đường truyền giữa các bộ xử lý

Trang 24

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:

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 địnhbở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ỗikhó 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 trongkhi 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ể

Trang 25

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àythườ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ínhtoá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ểnsang tác vụ khác mà dữ liệu đã sẵn có

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ỏ trongtoàn bộ thời gian tính toán, nên thông thường có thể bỏ qua được

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ủagiả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ớikí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ớikích thước bài toán, được xác định theo công thức sau:

Trang 26

18

-(1.5) E p =

p pT

T1

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

T1

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

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:

Khi tăng số lượng bộ xử lý trong máy tính song song, khối lượng công việcđược phân phối cho nhiều bộ xử lý thực hiện

Mục tiêu chính là tìm được kết quả bài toán nhanh nhất có thể hay nói cáchkhác là giảm đến mức tối đa thời gian tính toán

Trang 27

19

-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 songsong có P bộ xử lý thực hiện tính toán là:

Một giải thuật có tính qui mô nếu mức độ song song ít nhất cũng gia tăngtuyế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ụcmang 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 trongbà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ề giảithuật và kiến trúc là quan trọng, bởi vì từ đó mới có thể cho phép người sử dụnggiả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 muamộ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 lớn hơn 0 khi số bộ xử lý gia tăng do kích thước bàitoán tăng lên Theo công thức tính hiệu quả:

(1.8) E p =

p

pT

T1

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

Các giải thuật song song theo dữ liệu thì linh động hơn các giải thuật songsong theo chức năng, bởi vì mức độ song song chức năng thường là một hằng số,

Trang 28

1.2 THIẾT KẾ GIẢI THUẬT SONG SONG

Trong phần này đề cập đến phương pháp thiết kế giải thuật song song cho bàitoán, quá trình thiết kế giải thuật thật sự không dễ dàng để có thể rút gọn thành mộtcông thức đơn giản như công thức giải hệ phương trình bậc hai, giải hệ phươngtrình tuyến tính, … mà yêu cầu có sự sắp xếp tư duy sáng tạo Mục đích của phầnnày đưa ra một khung thiết kế, một sự đánh giá mang tính toán học nhằm giảm bớtnhững chi phí do phải quay lui lại sau khi lựa chọn phương án không hợp lý

1.2.1 Nguyên lý thiết kế giải thuật song song

Khi xử lý song song phải xét đến kiến trúc máy tính và giải thuật song song.Những giải thuật mà trong đó có một số thao tác có thể thực hiện đồng thời đượcgọi là giải thuật song song

Khi thiết kế giải thuật song song, cần phải thực hiện:

- Phân chia dữ liệu cho các tác vụ

- Chỉ ra cách truy cập và chia sẻ dữ liệu

- Phân các tác vụ cho các tiến trình (cho bộ xử lý)

- Các tiến trình được đồng bộ ra sao

Khi thiết kế giải thuật song song, cần tuân thủ 5 nguyên lý sau:

- Các nguyên lý lập lịch: Mục đích là giảm tối thiểu các bộ xử lý sử dụngtrong giải thuật sao cho thời gian tính toán là không tăng (xét theo khía cạnh

độ phức tạp)

Trang 29

- Nguyên lý điều kiện tranh đua: Nếu hai tiến trình cùng muốn truy cập vàocùng một mục dữ liệu chia sẻ thì chúng phải tương tranh với nhau, nghĩa làchúng có thể cản trở lẫn nhau.

Ngoài những nguyên lý nêu trên, khi thiết kế giải thuật song song còn phải chú

ý đến kiến trúc của hệ thống tính toán: Kiến trúc tính toán nào sẽ phù hợp với bàitoán? Những bài toán loại nào sẽ xử lý hiệu quả trong kiến trúc song song chotrước?

Ví dụ: Những máy tính kiểu SIMD không thích hợp để giải các bài toán trong

đó có nhiều tiến trình dị bộ

Ngược lại, máy tính kiểu MIMD lại không hiệu quảđể giải quyết những bài toán trong đó nhiều tiến trình cần phải đồng bộ

1.2.2 Nhận thức vấn đề và chương trình có thể song song hóa

Bước đầu tiên trong việc phát triển phần mềm song song là hiểu được vấn đề,hiểu được công việc chúng ta cần giải quyết song song Nếu chúng ta đang bắt đầuvới một chương trình tuần tự, điều này đòi hỏi sự hiểu biết về giải thuật, mã chươngtrình và cả ngôn ngữ lập trình của chương trình tuần tự đó

Trước khi dùng thời gian và sức lực nhằm phát triển giải pháp song song chomột vấn đề, hãy xác định có phải đó là một trong những vấn đề mà trên thực tế cóthể song song hóa được hay không [5]

Ví dụ về vấn đề có thể song song hóa được

Trang 30

22

-Tính toán năng lượng tiềm năng cho mỗi trong vài nghìn phần hủy độc lập củamột phân tử Khi thực hiện, tìm năng lượng phân hủy tối thiểu Vấn đề này có thểđược giải quyết song song Mỗi một phân hủy của phân tử có thể xác định một cáchđộc lập Tính toán năng lượng phân hủy tối thiểu cũng là một vấn đề có thể songsong hóa

Hoặc khi tính tổng của hai vecter A(n) và B(n) có cùng n phần tử, việc cộng hai phần tử nào đó là độc lập với các phần tử còn lại Vấn đề này cũng có thể giải quyết song song [5]

Ví dụ về vấn đề không song song hóa được

Tính chuỗi Fibonacci (1, 1, 2, 3, 5, 8, 13, 21, …) bằng cách sử dụng côngthức:

(1.9) F(k+2) = F(k+1) + F(k)

Đây là bài toán không song song hóa được bởi vì tính số hạng của dãyFibonacci theo công thức là phụ thuộc chứ không phải là độc lập Việc tính giá trịthứ k + 2 phải sử dụng những giá trị của cả hai k + 1 và k

Ba điều kiện không thể được tính toán một cách độc lập và do đó, không thểtính toán song song

Hoặc khi tính n! trong đó n  N*, thì dùng vòng lặp For đều không song songhóa được [5]

giaithua=1

for i=1 to n do

giaithua*=inext i

Hoặc dùng hàm đệ quy: Giaithua(n)=n*Giaithua(n-1)

Xác định các (điểm nóng) vị trí trong chương trình có thể hoặc không thể song song hóa được

Trang 31

23

-Cần phải biết vị trí trong chương trình, nơi mà hầu hết các tác vụ thực tế đangthực hiện Đa số các chương trình khoa học và kỹ thuật thường thực hiện hầu hếtcông việc của mình ở một vài nơi gọi là điểm nóng của chương trình Chính nhữngđiểm nóng mới có nhiều khả năng song song hóa được Như vậy, nên tập trungphân tích và thiết kế song song hóa vào các điểm nóng và bỏ qua những phần củachương trình cho là ít sử dụng bộ xử lý CPU [5]

Nhận diện tắc nghẽn trong chương trình

Nơi tắc nghẽn thường xảy ra là:

- Có các khu vực chậm không cân đối hoặc là do làm công việc song song nêntạm dừng hoặc được hoàn trả chậm? Ví dụ, nhập/xuất thường làm chậm việctải một chương trình

- Có thể có khả năng cơ cấu lại các chương trình hay sử dụng một thuật toánkhác nhau để giảm hoặc loại bỏ các khu vực chậm nhưng không cần thiết

Nhận diện các hạn chế xử lý song song

- Lớp hạn chế phổ biến nhất là sự phụ thuộc dữ liệu, ví dụ như việc tính sốhạng của dãy Fibonacci hoặc tính n!

- Nghiên cứu các thuật toán khác nếu có thể thay cho giải thuật hiện thời Điềunày có thể rất quang trọng khi thiết kế mộ ứng dụng song song [5]

1.2.3 Thiết kế giải thuật song song bằng phân rã phục thuộc dữ liệu

Muốn tận dụng được khả năng tính toán song song trên nhiều máy tính, điềuquan trọng nhất là tìm được giải thuật thích hợp Nhiều khi sự phụ thuộc tính toángiá trị sau được tính dựa vào giá trị trước đó có vẻ rất bền, nhưng vẫn tách nó ra đểchia cho nhiều máy cùng thực hiện Sau đây là một ví dụ minh họa:

Xét bài toán sau: Cho biết a0 và αk, βk vk, βk vk với k =1, 2, 3 , n; trong đó n 2m 2mSuy ra:

(1.10) a n = α n a n-1 β n với giả thiết số bộ xử lý không giới hạn.

Trang 32

24

-Việc giá trị an phải tính toán qua an1 khiến chúng ta có cảm giác là việc tìm ragiá trị an nhất định phải thực hiện tuần tự qua n bước Tức là phải mất đúng n = 2mbước tính, cho dù có thể huy động rất nhiều máy cùng tính đi chăng nữa Tuy nhiên

sự việc lại không hẳn như vậy, chỉ cần có m bước tính Để thấy được điều này tathực hiện phép biến đổi như sau:

Từ (1.10) suy ra: a2n+1 = αk, βk v2n+1 a2n + βk v2n+1

Ký hiệu Tm là số bước cần để tính ra giá trị cả 2m giá trị: a1, a2, a3, …, a2m Chỉ với một bước tính là biết được tất cả các giá trị n (bằng cách tính các nn = αn βn-1 + βn n = αn βn-1 + βntrên nhiều máy) Như vậy, ta có:

(1.13) T m = 2 + T m-1 ( qua 2 bước tính a2m và a2m 1)

Từ đây suy ra: Tm = 2m Từ đây kết luận, không cần đến 2m bước tính, mà chỉdùng 2m bước tính

1.2.4 Thiết kế giải thuật song song bằng phương pháp chia để trị

Ta chia bài toán thành các bài toán con nhỏ hơn, giải quyết bài toán con chođến khi bài toán con nhỏ nhất có thể giải được

Ví dụ: Bài toán tính tổng A[1:n], ta đã thiết kế thuật toán song song có độphức tạp thời gian O(logn) với O(n) bộ xử lý Thuật toán chưa tối ưu

Trang 33

25

-Sử dụng việc phân chia dữ liệu ta sẽ có thuật toán với độ phức tạp thời gian là O(logn) với O(n/logn) bộ xử lý.

Phân các phần tử của mảng vào n/logn nhóm, mỗi nhóm chứa logn phân tử, đặt k = logn và

r = n/logn, suy ra: k*r = n = 2k

Thời gian cộng trên mỗi bộ xử lý O(logn), cất vào Bi ta thu được B1, B2, , Bn/logn Sau đó

ta đi tính tổng với thời gian O(log(n/logn)) ≡ O(logn) sử dụng O(n/logn) bộ xử lý Giải

thuật tính tổng tối ưu:

Đầu vào: Mảng A[1:n]

Đầu ra: Giá trị tổng

Begin

1 For i=1  n/logn dopar

Bước i: sử dụng giải thuật tuần tự để tính tổng A(i-1)logn + 1 A (i-1)logn + 2 …….Ailogn

và cất vào biến Bi

2 EndPar

3 Tính tổng B1, B2, , Bn/logn , suy ra tổng

End

Độ phức tạp: Thời gian O(logn) với O(n/logn) bộ xử lý

1.2.5 Ví dụ thiết kế giải thuật song song cho bài toán tính tổng

Phát biểu bài toán: Tính tổng của N số (n1, n2,…, nN), trong đó N là lũy thừacủa 2 Giả sử dữ liệu nằm trên các lá của cây nhị phân (xem Hình 2.1 )

Giải thuật tuần tự cho bài toán tính tổng:

Đầu vào: Mảng A[1 n], n = 2i

Đầu ra: Tổng lưu tại A(1)

Begin

Trang 34

Dễ dàng thấy được độ phức tạp của thuật toán là O(n).

Có thể được thực hiện tính toán theo cách sau, có N2 bộ xử lý được giaonhiệm vụ tính toán tổng các cặp dữ liệu, ví dụ (n1, n2), (n3, n4), …, (nN-1, nN)

Kết quả này có thể thực hiện trong một bước tính toán Tiếp theo, dùng

4

N

bộ xử lý

để thực hiện cùng công việc trên N4 cặp dữ liệu, … Rõ ràng các tính toán tiến hành

từ lá tới gốc và toàn bộ quá trình tính toán sẽ kết thúc khi mà phần tử xử lý tại gốcthực hiện xong tính toán của nó

Hình 2.1 Tính tổng N số

Giải thuật song song:

Đầu vào: Mảng A[1 n], n = 2i

Đầu ra: Tổng lưu tại A(1)

Trang 35

Gọi P là số bộ xử lý Vòng lặp while thục hiện logn lần, mỗi lần thời gian tính

là O(1) và đòi hỏi p bộ xử lý Tại bước đầu cần nhiều bộ xử lý nhất p = 2n Dotrong giải thuật không có đòi hỏi cạnh tranh đọc cũng như cạnh tranh ghi nên giảithuật có thể cài đặt với thời gian O(logn) với O(n) bộ xử lý

1.2.6 Ví dụ thiết kế giải thuật song song cho bài toán sắp xếp

Một trong các giải thuật sắp xếp đơn giản nhất là thực hiện so sánh hai phần tửliền kề với nhau và nếu các phần tử chưa theo thứ tự cần sắp thì đổi chỗ của chúngvới nhau Quá trình này lặp lại cho đến khí không còn cặp nào không thoả mãn thìdừng

Sắp xếp mảng a[n] theo thứ tự tăng dần theo phương pháp nổi bọt (buble sort)

Trang 36

Có thể sử dụng n tiến trình kết hợp theo nguyên lý hình ống để sắp xếp mảnga[n] Hệ thống được chia thành hai pha: Pha chẵn và pha lẻ Pha chẵn: Các tiến trìnhđược đánh số chẵn so với những tiến trình tiếp theo (tiến trình có số lẻ), nếu nó giữphần tử lớn hơn thì đổi dữ liệu với tiến trình đó Pha lẻ: Các tiến trình có số lẻ hoạtđộng tương tự như trên.

Ví dụ: Cho n = 8 và dãy số ban đầu là 6, 2, 8, 5, 1, 3, 4, 7 Kết quả sắp xếptheo nguyên lý hình ống được thể hiện ở Bảng 1.1

Giả thiết dữ liệu được lưu trữ ở những tiến trình chẵn là B và những tiến trình

lẻ là A Giải thuật song song theo hình ống được mô tả trong mô hình truyền thôngđiệp như sau:

Pha chẵn

Pi , i = 0, 2, ,n – 2 (chẵn) Pi , i = 1, 3, ,n - 3 (lẻ)

Trang 37

Ngoài ra, trong chương một còn trình bày một số nguyên lý thiết kế giải thuậtsong song cho bài toán chia để trị, phân rã phụ thuộc dữ liệu, … và áp dụng xâydựng giải thuật song song cho một số bài toán cơ bản như sắp xếp từ đó áp dụng đểsong song hóa một bài toán trình tự.

Môi trường để triển khai các giải thuật song song trong luận văn dùng ngônngữ CUDA thực thi trên thiết bị đồ họa GPU của hãng NVIDA Nội dung chi tiết vềphần này được trình bài trong chương hai

Trang 38

30

-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ồmcá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 ứngdụng trên thiết bị đồ họa này và đư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ãngNVIDIA Á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ằngphương pháp song song dùng ngôn ngữ CUDA thực thi trên thiết bị đồ họa

2.1 CẤU TRÚC HỆ THỐNG XỬ LÝ ĐỒ HỌA GPU

2.1.1 Giới thiệu công nghệ GPU

Bộ xử lý đồ họa (Graphic Proccessing Unit) gọi tắc là GPU đã trở thành mộtphần không thể tách rời của hệ thống máy tính ngày nay Trong sáu năm vừa qua đãđánh dấu sự gia tăng ấn tượng trong hiệu suất và khả năng của GPU GPU hiện đạikhông chỉ là một công cụ xử lý đồ họa mạnh mà còn là một bộ xử lý hỗ trợ lập trìnhsong song ở mức cao, giúp giải các bài toán số học cần khả năng xử lý số học phứctạp và băng thông bộ nhớ tăng hơn đáng kể so với CPU cùng loại Sự tăng tốcnhanh chóng của GPU trong cả khả năng hỗ trợ lập trình và năng lực tính toán của

nó đã tạo ra một xu hướng nghiên cứu mới Một cộng đồng đã nghiên cứu và đã ánh

xạ thành công một lượng lớn các vấn đề phức tạp đòi hỏi tính toán lớn vào GPU.Điều này trong nỗ lực chung nhằm mục đích ứng dụng GPU vào giải quyết các bàitoán hiệu năng cao của tính toán hiện đại Tính toán mục đích thông dụng trên GPU

là một thay thế hấp dẫn cho CPU tại trong hệ thống máy tính hiện đại Trong mộttương lai không xa, GPU sẽ đảm nhận thay cho CPU những công việc như xử lýhình ảnh, đồ họa, các tính toán phức tạp thay vì chỉ dừng lại ở những ứng dụng tròchơi 3D [3]

Trang 39

Các đầu vào của GPU là danh sách các hình học nguyên thủy, điển hình là tamgiác, trong một thế giới không gian ba chiều Qua nhiều bước, những khối hìnhnguyên thủy đó được làm bóng mờ (shade) và được tô vẽ lên màn hình, nơi chúngđược lắp ráp để tạo ra một hình ảnh cuối cùng Đây là kiến thức cơ bản đầu tiên đểgiải thích các bước cụ thể trong đường ống dẫn kinh điển trước khi cho thấy làmcách nào mà các đường ống đã trở thành lập trình được.

Trang 40

32

-một thành tố nguyên thủy được gọi là “mảnh” tại các vị trí điểm ảnh trong khônggian màn hình mà nó bao chứa Do nhiều tam giác có thể chồng lên nhau tại một vịtrí điểm ảnh bất kỳ nên giá trị màu của mỗi điểm ảnh có thể được tính từ nhiềumảnh

Thành phần

Các mảnh được lắp ráp thành hình ảnh cuối cùng với một màu cho mỗi điểmảnh bằng cách giữ lại mảnh gần ống kính nhất cho mỗi vị trí điểm ảnh Trước đây,các phép toán hiện có tại khung cảnh vector và mảnh đã được cấu hình nhưngkhông thể lập trình được Ví dụ, một trong những tính toán chính ở khung cảnhvector là tính toán các màu sắc ở mỗi vector như là một chức năng của thuộc tínhvector và các độ sáng trong bối cảnh đó Trong đường ống chức năng cố định, cáclập trình viên có thể kiểm soát được vị trí, màu sắc của các vector và ánh sángnhưng không phải là mô hình chiếu sáng mà xác định tương tác giữa chúng

Các đường ống chức năng cố định thiếu tính tổng quát để có biểu diễn hiệuquả các trường hợp làm bóng mờ phức tạp hơn và các phép toán ánh sáng, mà đó lại

là những điều kiện tiên quyết cho các hiệu ứng phức tạp Bước then chốt trên đãđược thay thế bằng các hàm cố định chức năng trên mỗi vector và các phép toántrên mỗi mảnh với chương trình chỉ định người sử dụng chạy trên từng vector vàtừng mảnh Trong hơn sáu năm qua, các chương trình vector và chương trình mảnh

đã có ngày càng nhiều khả năng, với giới hạn lớn hơn về kích cỡ và tiêu thụ tài

Ngày đăng: 03/04/2014, 19:44

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] PSG TS Nguyễn Đức Nghĩa (2007), Tính Toán Song Song, Nhà xuất bản Đại học Quốc gia Hà Nội Sách, tạp chí
Tiêu đề: Tính Toán Song Song
Tác giả: PSG TS Nguyễn Đức Nghĩa
Nhà XB: Nhà xuất bản Đại học Quốc gia Hà Nội
Năm: 2007
[2] Đức Khánh (2/2010), “Cuda quá khứ - hiện tại & tương lai của điện toán GPU”, Tạp chí CGEZINE, X4, tr 34 - 41 Sách, tạp chí
Tiêu đề: Cuda quá khứ - hiện tại & tương lai của điện toán GPU”, "Tạp chí CGEZINE
[3] Nguyễn Thị Thùy Linh (2009), Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng , Luận văn thạc sĩ, Đại học Công nghiệp - Đại học quốc gia HàNội, tr 17-60 Sách, tạp chí
Tiêu đề: Tính toán hiệu năng cao với bộ xử lý đồ họa GPU và ứng dụng
Tác giả: Nguyễn Thị Thùy Linh
Năm: 2009
[4] Ngô Quốc Vinh (2008), Hướng dẫn cách thiết lập dự án CUDA , Kyoto-Japan Sách, tạp chí
Tiêu đề: Hướng dẫn cách thiết lập dự án CUDA
Tác giả: Ngô Quốc Vinh
Năm: 2008
[5] TS Lê Huy Thập (8/2010), Cơ sở lý thuyết song song , Nhà xuất bản thông tin và truyền thông, Hà Nội Sách, tạp chí
Tiêu đề: Cơ sở lý thuyết song song
Nhà XB: Nhà xuất bản thông tin và truyền thông
[6] Phạm Mạnh Hùng (2007), Các kỹ thuật toán học cho bài toán so sánh đa trình tự , Luận văn thạc sĩ Khoa học máy tính, Đại học Bách khoa thành phố Hồ Chí Minh Sách, tạp chí
Tiêu đề: Các kỹ thuật toán học cho bài toán so sánh đa trình tự
Tác giả: Phạm Mạnh Hùng
Năm: 2007
[7] Trịnh Công Quý (2005), Phát triển ứng dụng song song với OpenMP , Luận văn tốt nghiệp Đại học, Đại học Công nghệ - Đại học quốc gia Hà Nội, tr 3, 12.Tiếng Anh Sách, tạp chí
Tiêu đề: Phát triển ứng dụng song song với OpenMP
Tác giả: Trịnh Công Quý
Năm: 2005
[8] Thuy T.Nguyen, Duc H.Nguyen, Phong H.Phan (2010), Accelerating Smith- Waterman local sequence alignment on GPU cluster , Department of Information Systems Hanoi University of Science and Technology Hanoi, Vietnam Sách, tạp chí
Tiêu đề: Accelerating Smith-Waterman local sequence alignment on GPU cluster
Tác giả: Thuy T.Nguyen, Duc H.Nguyen, Phong H.Phan
Năm: 2010
[9] NVIDIA (3/6/2011), NVIDIA CUDA C Programming Guide , NVIDIA CUDA. Trang Web Sách, tạp chí
Tiêu đề: NVIDIA CUDA C Programming Guide

HÌNH ẢNH LIÊN QUAN

Bảng 1.1.  Mô tả phân loại kiến trúc của Flynn 9 - 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ảng 1.1. Mô tả phân loại kiến trúc của Flynn 9 (Trang 7)
Hình 1.1. Mô tả kiến trúc Von Neumann - 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
Hình 1.1. Mô tả kiến trúc Von Neumann (Trang 14)
Bảng 1.1. Mô tả phân loại kiến trúc của Flynn - 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ảng 1.1. Mô tả phân loại kiến trúc của Flynn (Trang 17)
Hình 3.1. Mô hình kiến trúc máy SIMD - 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
Hình 3.1. Mô hình kiến trúc máy SIMD (Trang 18)
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) - 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
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) (Trang 18)
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) - 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
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) (Trang 19)
Hình 5.1. Mô hình kiến trúc máy MIMD - 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
Hình 5.1. Mô hình kiến trúc máy MIMD (Trang 20)
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 - 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
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 (Trang 20)
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 - 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
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 (Trang 21)
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 - 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
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 (Trang 21)
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 - 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
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 (Trang 25)
Hình 2.1. Tính tổng N số - 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
Hình 2.1. Tính tổng N số (Trang 34)
Bảng 1.1. Sắp xếp theo nguyên lý hình ống - 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ảng 1.1. Sắp xếp theo nguyên lý hình ống (Trang 36)
Hình 1.2. So sánh floating-point của GPU và CPU - 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
Hình 1.2. So sánh floating-point của GPU và CPU (Trang 44)
Hình 1.1. So sánh kiến trúc CPU và GPU - 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
Hình 1.1. So sánh kiến trúc CPU và GPU (Trang 44)

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w