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 1BỘ 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 4MỤ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 52.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 6DANH 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 7DANH MỤC CÁC BẢNG
Trang 8DANH 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 9Mộ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 15Việ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 17Cà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 22sự 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 24Do đó 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 281.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 an1 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 nn = α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 34Dễ 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 35Gọ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 36Có 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 37Ngoà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 39Cá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