Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳng - Đại học Công nghệ thông tin Nghiên cứu công nghệ xử lý gpu và ứng dụng...

Tài liệu Nghiên cứu công nghệ xử lý gpu và ứng dụng

.PDF
98
153
123

Mô tả:

i ĐẠI HỌC THÁI NGUYÊN ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ĐINH TIẾN NGỌC NGHIÊN CỨU CÔNG NGHỆ XỬ LÝ GPU VÀ ỨNG DỤNG THÁI NGUYÊN 2017 ii LỜI CAM ĐOAN Tôi xin cam đoan : Những nghiên cứu dưới đây trong luận văn của tôi hoàn toàn trung thực không vi phạm bất kỳ quyền sở hữu trí tuệ nào. Nếu sai tôi xin chịu hoàn toàn trách nhiệm. TÁC GIẢ LUẬN VĂN Đinh Tiến Ngọc iii LỜI CẢM ƠN Lời đầu tiên tôi xin chân thành cảm ơn đếnTS. Lê Quang Minh người thầy đã tận tình giúp đỡ, hướng dẫn tôi hoàn thành luận văn này. Tôi cũng xin chân thành cảm ơn các thầy, cô giảng viên cao học người đã giúp đỡ tôi nâng cao kiến thức giúp tôi có những kiến thức bổ trợ giúp hoàn thiện cho luận văn này. Tôi cũng xin chân thành cảm ơn người thân, bạn bè đã giúp đỡ và động viên tôi trong suốt thời gian học tập cũng như trong thời gian thực hiện đề tài. Xin chân thành cảm ơn! Thái Nguyên, ngày tháng 5 năm 2017 TÁC GIẢ LUẬN VĂN Đinh Tiến Ngọc iv DANH MỤC THUẬT NGỮ TiếngAnh TiếngViệt GPU Bộ xử lý đồ họa gpgpu Tính toán thông dụng trên GPU API Application Program Interface : Định nghĩa một giao diện chuẩn để triệu gọi một tập các chức năng. coproccessor bộ đồng xử lý kernel hạt nhân texture Kết cấu: cấu trúc của đối tượng, nó được xem như mô hình thu nhỏ của đối tượng. texturefetches Hàm đọc kết cấu texturereference Tham chiếu kết cấu warp Mỗi khối được tách thành các nhóm SIMD của các luồng. SIMD Single Instruction Multiple Data: đơn lệnh đa dữ liệu stream Dòng streamingprocessor Bộ xử lý dòng MIMD Multiple Instruction Multiple Data: đa lệnh đa dữ liệu primarysurface Bề mặt chính proccessor Bộ xử lý Rasterization Sự quét mành trên màn hình v MỤC LỤC LỜI CAM ĐOAN ..............................................................................................................i LỜI CẢM ƠN ................................................................................................................ iii DANH MỤC THUẬT NGỮ ..........................................................................................iv MỤC LỤC ....................................................................................................................... v DANH MỤC HÌNHVẼ ................................................................................................ vii LỜI MỞ ĐẦU ............................................................................................................. viii CHƯƠNG I : KHÁI QUÁT VỀ BỘ XỬ LÝ ĐỒ HỌA GPU VÀ XỬ LÝ SONG SONG ......................................................................................................................................... 1 1.1 Khái quát về xử lý song song................................................................................. 1 1.1.1 Khái quát về xử lý song song .......................................................................... 1 1.1.2 Khái quát về Hệ thống máy tính song song ..................................................... 3 1.1.3 Khái quát về lập trình song song ..................................................................... 7 1.1.4 Các nguyên tắc khi thiết kế giải thuật xử lý song song ................................... 9 1.2. Khái quát về công nghệ GPU và các ứng dụng .................................................. 10 1.2.1. Tổng quan về GPU ....................................................................................... 11 1.2.2. Nguồn gốc và quá trình phát triển GPU ....................................................... 11 1.2.3. Cấu trúc của bộ xử lý đồ họa GPU ............................................................... 15 1.2.4. Lập trình trên GPU ....................................................................................... 19 1.2.5. Các hỗ trợ phần mềm cho xử lý tính toán trên GPU .................................... 22 1.2.6. Các kỹ thuật tính toán trên GPU ................................................................... 26 1.2.7.Các giải thuật ứng dụng trên GPU ............................................................. 29 CHƯƠNG II: XỬ LÝ SONG SONG TRÊN THIẾT BỊ ĐỒ HỌA GPU VỚI CUDA . 31 2.1. Khái quát về CUDA ............................................................................................ 31 2.2.Cơ chế lập trình và cách thức hoạt động của CUDA ........................................... 33 2.2.1.Cơ chế lập trình.............................................................................................. 33 2.2.2.Cách thức hoạt động của CUDA ................................................................... 33 2.3. Tổng quan về lập trình với CUDA ...................................................................... 38 2.3.1. Là ngôn ngữ lập trình mở rộng của ngôn ngữ lập trình C ............................ 38 vi 2.3.2. Các phần mở rộng của CUDA ...................................................................... 38 2.3.3.Biến Built-in trong CUDA............................................................................. 41 2.3.4. Biên dịch CUDA thông qua NVCC.............................................................. 42 2.3.5.Một số trường hợp cụ thể tính toán song song bằng CUDA ......................... 42 2.4. Các ứng dụng của CUDA trong các lĩnh vực ..................................................... 45 2.4.1. Ứng dụng của CUDA trong game ................................................................ 45 2.4.2. Ứng dụng của CUDA với video số............................................................... 45 CHƯƠNG III: SỬ DỤNG GPU ĐỂ LÀM TĂNG TỐC ĐỘ TÍNH TOÁN CHO BÀI TOÁN MÃ HÓA AES .................................................................................................. 48 3.1 Giới thiệu về AES ................................................................................................ 48 3.2 Thuật toán mã hóa ........................................................................................... 48 3.2.1 Công đoạn mã hóa............................................................................................. 50 3.2.2 Công đoạn giải mã ............................................................................................ 54 3.3 Chương trình thuật toán song song mã hóa AES sử dụng GPU ....................... 62 3.3.1. Giao diện chương trình demo ....................................................................... 92 3.3.2. Kết quả chương trình và đánh giá hiệu suất tính toán ................................. 93 KẾT LUẬN ................................................................................................................... 88 TÀI LIỆU THAM KHẢO ............................................................................................. 89 vii DANH MỤC HÌNHVẼ Hình 1 : Kiến trúc Von Neumann ............................................................................ 1 Hình 2 : Máy tính song song có bộ nhớ chia sẻ....................................................... 4 Hình 3 : Máy tính song song có bộ nhớ phân tán .................................................... 5 Hình 4 : Kiến trúc máy SISD ................................................................................... 5 Hình 5 : Kiến trúc máy SIMD ................................................................................. 6 Hình 6 : Kiến trúc máy MISD ................................................................................. 6 Hình 7 : Kiến trúc máy MIMD ................................................................................ 7 Hình 8 : Mô hình lập trình truyền thông hai tác vụ của hai máy tính .................... 8 Hình 9 : Mô hình lập trình song song dữ liệu .......................................................... 9 Hình10: Kiến trúc GPU của NVIDIA và AMD................................................. 19 Hình 11: Kiến trúc phần mềm CUDA ................................................................ 31 Hình 12: Thao tác cấp phát và thu hồi bộ nhớ ................................................... 32 Hình 13: Vùng nhớ dùng chung mang dữ liệu gần ALU hơn .......................... 33 Hình 14: Sơ đồ hoạt động truyền dữ liệu giữa Host và Device ............................. 34 Hình 15: Khối luồng .............................................................................................. 36 Hình 16: Mô hình bộ nhớ trên GPU ...................................................................... 37 Hình 17: Chiều của lưới và khối với chỉ số khối và luồng .................................... 42 Hình 18: Phương pháp đánh chỉ số luồng.............................................................. 45 Hình 19 : Mã hóa và giải mã ................................................................................. 49 Hình 20: Biến đổi SubBytes() đối với mảng trạng thái ......................................... 51 Hình 21: Mô tả Hàm ShiftRows() ......................................................................... 51 Hình 22: Mô tả hàm MixColumns() ...................................................................... 52 Hình 23: Mô tả hàm AddRoundKey() ................................................................... 53 Hình 24: Mô tả hàm InvShiftRow()....................................................................... 55 viii LỜI MỞ ĐẦU Với sự phát triển như vũ bão của công nghệ, ngày nay công nghệ thông tin đã trở thành một phần không thể thiếu trong cuộc sống. Không những thế nó còn là một công cụ hữu hiệu trong các ngành khoa học, công nghệ cao,… đặc biệt là những ngành có nhu cầu tính toán lớn. Tuy nhiên trong khi với nhu cầu tính toán ngày cành tăng cao đó, ngành công nghệ thông tin lại vấp phải một vấn đề tối quan trọng đó là năng lực xử lý của CPU có hạn. Các nhà phát triển phần cứng đã thực hiện gia tăng mức độ xử lý cho CPU bằng cách gia tăng xung cho CPU. Tuy nhiên việc này cũng chạm ngưỡng bởi gặp phải vấn đề về tản nhiệt cho CPU do nhiệt độ CPU quá cao. Một hướng mới đã được các nhà nghiên cứu đưa ra đó là phát triển bộ xử lý đa nhân với cơ chế xử lý song song. Một bước phát triển trong hướng mới đó chính là bộ xử lý đồ họa – GPU (Graphics Processing Unit - bộ xử lý đồ họa). Khi mới ra đời, GPU chỉ được sử dụng với 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 với sự phát triển dần của các trò chơi và các phần mềm đồ họa, đã khiến GPU phát triển thêm và đến thế hệ GPUNV30 của NVIDIA ra đời người ta đã bắt đầu phát triển những công việc khác cho GPU 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à đặc biệt với tiềm năng như vậy có thể nghĩ tới việc sử dụng GPU ngoài đồ họa. Cùng với ý tưởng như vậy tôi đã liên tưởng đến việc áp dụng việc xử lý song song trên GPU thông qua ngôn ngữ lập trình CUDA. Xuất phát từ ý tưởng trên tôi đã chọn đề tài: NGHIÊN CỨU CÔNG NGHỆ XỬ LÝ GPU VÀ ỨNG DỤNG. Luận văn gồm 3 chương chính: Chương 1: Khái quát về bộ xử lý đồ họa GPU và xử lý song song, Chương này giới thiệu tổng quan về xử lý song song và bộ xử lý đồ họa GPU Chương 2: Xử lý song song trên thiết bị đồ họa GPU với CUDA. Chương này nghiên cứu về ngôn ngữ lập trình CUDA và cách xử lý song song bằng CUDA trên GPU. Chương 3: Sử dụng GPU để làm tăng tốc độ tính toán cho bài toán mã hóa ix AES. Chương này tiến hành cài đặt thử chương trình song song, xử lý song song mã hóa AES trên GPU bằng ngôn ngữ CUDA và đưa ra kết quả cùng kết luận về hiệu suất của GPU. 1 CHƯƠNG I : KHÁI QUÁT VỀ BỘ XỬ LÝ ĐỒ HỌA GPU VÀ XỬ LÝ SONG SONG 1.1 Khái quát về xử lý song song 1.1.1 Khái quát về xử lý song song Nguồn gốc ra đời của xử lý songsong Một trong những nền tảng máy tính cơ bản đó là thiết kế máy tính của John Von Neumann. Đó là thiết kế mà ở đó một lệnh được thực hiện trên một bộ xử lý. Hình1: Kiến trúc Von Neumann Khi cần tính toán với lượng câu lệnh và phép tính lớn thì thiết kế trên trở nên lỗi thời. Người ta đã đưa ra các phương pháp nhằm giải quyết vấn đề trên. Trong đó có việc tăng số lượng nhân xử lý hoặc kết nối nhiều máy tính thông qua mạng để tăng tốc độ xử lý. Khi tăng tốc xử lý các phép tính trên máy tính song song, việc sử dụng các thuật toán tuần tự đã không còn thích hợp và không tận dụng hết khả năng tiềm tàng của máy tính song song. Dẫn đến việc ra đời các giải thuật song song. Lý do phải xử lý song song Như đã nói ở trên máy tính song song với bộ xử lý nhiều nhân đã thay thế dần máy tính đơn nhân, một bộ xử lý. Và với những thuật toán, câu lệnh, phép xử lý tuần tự đã không còn phù hợp với máy tính song song. Do vậy xử lý song song đã ra đời thay thế cho xử lý tuần tự nhằm đem lại hiệu năng tính toán cao hơn. Bằng chứng đã thấy trong thực tế với nhiều bài toán xử lý với lượng dữ liệu lớn 2 yêu cầu tốc độ nhanh và độ chính xác như các bài toán về đồ họa, xử lý ảnh, xử lý tín hiệu, mô phỏng giao thông, mô phỏng sự chuyển động của các phân tử, nguyên tử, dự báo thời tiết, mô phỏng bản đồ gen……Xử lý song song đã chứng minh được khả năng xử lý cũng như khả năng phát triển của nó sau này. Các khái niệm trong xử lý songsong  Định nghĩa xử lý songsong Xử lý song song là quá trình xử lý thực hiện nhiều tiến trình cùng một lúc để xử lý một bài toán, trên nhiều bộ xử lý.  Làm rõ giữa xử lý song song và xử lý tuần tự Xử lý tuần tự là tại mỗi thời điểm chỉ xử lý một phép toán còn xử lý song song tại một thời điểm có thể thực hiện nhiều phép toán cùng một lúc trên nhiều bộ xử lý, làm cho khả năng xử lý tăng lên đáng kể so với xử lý tuần tự. Bảng dưới đây cho thấy sự khác nhau giữa xử lý tuần tự và xử lý song song. Bảng 1.1: So sánh sự khác nhau giữa lập trình tuần tự và song song Lập trình tính toán tuần tự Lập trình tính toán song song - Chương trình chạy trên một bộ xử lý - Chương trình ứng dụng chạy trên nhiều (single processor). bộ xử lý. - Các câu lệnh được bộ xử lý(CPU) - Các câu lệnh được các bộ vi xử lý thực thực hiện một cách lần lượt. hiện một cách song song, đồng thời. - Mỗi câu lệnh thực thiện trên duy nhất - Mỗi câu lệnh có thể thao tác trên nhiều một thành phần dữ liệu. thành phần dữ liệu khác nhau. 3 - Chỉ cần viết đúng câu lệnh và giải - Viết đúng câu lệnh và giải thuật. Ngoài ra thuật là có thể chạy chương trình phải chỉ rõ phần nào của chương trình cần phải chạy song song. - Dùng với các bài toán dữ liệu nhỏ, độ - Được sử dụng đối với các bài toán có dữ phức tạp không cao và yêu cầu thời gian liệu lớn, độ phức tạp cao và thời gian ngắn. chấp nhận được.  Mục đích của xử lý song song Dựa trên việc tính toán song song trên nhiều bộ xử lý cho tốc độ xử lý cao, xử lý song song thường dùng cho các bài toán có độ phức tạp lớn, yêu cầu khối lượng tính toán lớn. 1.1.2 Khái quát về Hệ thống máy tính song song Là một hệ thống máy tính với nhiều bộ nhân xử lý có khả năng xử lý song song. Bao gồm cả máy tính với bộ xử lý mà trong đó gồm nhiều lõi, cũng được gọi là máy tính song song. Phân loại máy tính song song phổ biến nhất được biết tới là phân loại máy tính song song của Michael Flynn vào năm 1966. Dựa vào các đặc điểm về số lượng bộ xử lý, cấu trúc bộ nhớ,… Michael Flynn đã 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). Dựa theo phân loại của Flynn có 4 loại máy tính song song theo bảng dưới: 4 Bảng 1.2: Mô tả phân loại kiến trúc của Flynn Dòng lệnh (instruction Dòng dữ liệu stream) (data stream) Trạng thái đơn (single) Trạng thái đơn SISD (single) Single Instruction Single Trạng thái đa SIMD Data (multiple) Single Instruction Multiple Trạng thái đơn MISD Data (single) Multiple Instruction Single Trạng thái đa MIMD Data (multiple) Multiple Instruction Multiple Trạng thái đơn (single) Trạng thái đa (multiple) Trạng thái đa (multiple) Loại kiến trúc Data Dựa trên cấu trúc bộ nhớ Flynn đã chia ra làm các loại máy tính trên. Các bộ xử lý với bộ nhớ chia sẻ có thể truy cập đến vùng nhớ chung. Sự thay đổi về nội dung bộ nhớ sẽ được nhận biết bởi các bộ xử lý khác. Hình 2 : Máy tính song song có bộ nhớ chia sẻ Lại có thể chia ra tiếp 2 lớp nhỏ hơn trong loại máy tính này: Lớp máy tính UMA (Uniform Memory Access – Truy cập bộ nhớ đồng nhất) khả năng truy cập bộ nhớ đối với mỗi bộ xử lý có thời gian là như nhau. Lớp máy tính NUMA (NonUniform Memory Access – Truy cập bộ nhớ không đồng nhất) khả năng truy cập bộ nhớ đối với mỗi bộ xử lý có thời gian là không như nhau. 5 Máy tính song song với bộ nhớ phân tán. Mỗi bộ xử lý có một bộ nhớ và khả năng truy cập độc lập. Sự thay đổi nội dung vùng nhớ của một bộ xử lý không làm ảnh hưởng đến các bộ xử lý khác Hình 3 : Máy tính song song có bộ nhớ phân tán Mô hình cấu trúc đơn dòng lệnh đơn luồng dữ liệu (SISD) Là máy tính chỉ có một bộ xử lý tại mỗi thời điểm chỉ thực hiện một lệnh, đọc, ghi một mục dữ liệu. Chỉ có một thanh ghi gọi là bộ đệm và kết quả đầu ra theo tuần tự các câu lệnh. Hình 4 : Kiến trúc máy SISD Mô hình cấu trúc đơn dòng lệnh đa luồng dữ liệu (SIMD) Mỗi bộ xử lý thực hiện xử lý một luồng dữ liêu. Các bộ xử lý cùng thực hiện một phép toán trên nhiều luồng dữ liệu khác nhau và có một thành phần để điều khiển cho các bộ xử lý thực hiện xử lý các luồng câu lệnh. 6 Hình 5 : Kiến trúc máy SIMD Mô hình cấu trúc đa dòng lệnh đơn luồng dữ liệu (MISD) Là loại máy tính có thể thực hiện nhiều câu lệnh trên cùng một mục dữ liệu. Hình 6 : Kiến trúc máy MISD Mô hình cấu trúc đa dòng lệnh đa luồng dữ liệu (MIMD) Là loại máy tính đa nhân, đa bộ xử lý có thể thực hiện nhiều câu lệnh trên nhiều luồng khác nhau.Các bộ xử lý đều có bộ nhớ riêng biệt nhưng cũng có thể truy cập vào bộ nhớ chung khi cần giúp tăng tốc độ xử lý. Mô hình kiến trúc này là mô hình kiến trúc phức tạp nhất nhưng cũng là mô hình ưu việt nhất và cũng đã có nhiều máy tính được xây dựng trên kiến trúc này, ví dụ: BBN Butterfly. 7 Hình 7 : Kiến trúc máy MIMD 1.1.3 Khái quát về lập trình song song Là việc lập trình các câu lệnh các đoạn chương trình song song để chạy trên hệ thống máy tính song song. Cũng có thể hiểu là việc song song hóa các thuật toán tuần tự nhằm tăng tốc độ xử lý tính toán lên nhiều lần. Trong đó việc lập trình song song là chia các chương trình, bài toán lớn thành các bài toán con rồi chia các bài toán con thành các bài toán con nhỏ hơn…rồi chia các bài toán con nhỏ đó cho các bộ xử lý giải quyết và đồng bộ về mặt thời gian xử lý công việc để nhận được kết quả cuối cùng . Việc quan trong nhất ở đây là xử lý các bài toán đồng thời. Do vậy khi muốn lập trình song song một thuật toán ta cần xác định là có thể song song hóa thuật toán đó hay không. Các kiểu song song hóa:  Song song hóa mặc định: Việc phân chia công việc đến các bộ xử lý là tự động.  Song song hóa thủ công: Việc phân chia công việc đến các bộ xử lý do người lập trình tự quyết định. Trong đó cần để ý đến vấn đề cân bằng tải. Khi một bộ xử đang giải quyết quá nhiều công việc cần chuyển các công việc đến các bộ xử lý khác đang giải quyết các công việc ít hơn. 8 Một vấn đề quan trọng trong lập trình song song đó là việc kết nối giữa các bộ nhớ. Có hai kỹ thuật kết nối cơ bản là: sử dụng bộ nhớ chia sẻ và truyền thông điệp. Mô hình lập trình song song bao gồm các hệ thống truyền thông và vào/ra song song, các ứng dụng, ngôn ngữ, bộ biên dịch, thư viện. Việc phân chia công việc cho máy tính song song hiệu quả cho tất cả các bài toán là không khả thi. Vấn đề là người lập trình viên song song phải biết sử dụng hiệu quả các mô hình cho từng bài toán hoăc kết hợp chúng với nhau. Hiện nay có các mô hình lập trình song song: Truyền thông điệp (Message Passing) và Song song dữ liệu (Data Parallel). Truyền thông điệp trong xử lý song song Là mô hình được sử dụng rộng rãi cho các hệ phân tán. Bao gồm các đặc trưng sau:  Trong quá trình tính toán mỗi luồng sử dụng một vùng nhớ cục bộ riêng.  Các luồng có thể sử dụng chung tài nguyên.  Việc trao đổi giữa các luồng được thực hiện bằng cách gửi các thông điệp.  Mỗi luồng sẽ thực hiện việc điều khiển việc truyền dữ liệu. Ví dụ mỗi thao tác gửi ở một luồng thì phải ứng với một thao tác nhận ở luồng khác. Hình 8: Mô hình lập trình truyền thông hai tác vụ của hai máy tính Song song dữ liệu trong xử lý song song Ở mô hình này chủ yếu việc song song được thực hiện trên một tập dữ liệu. Cấu trúc của tập dữ liệu này là mảng hoặc khối. Cùng một phép toán, Các tác vụ sẽ thực hiện trên cùng một kiểu dữ liệu nhưng trên các tập dữ liệu khác nhau. Mô hình 9 này chủ yếu dành cho máy tính song song kiểu bộ xử lý mảng. Hình 9 : Mô hình lập trình song song dữ liệu 1.1.4 Các nguyên tắc khi thiết kế giải thuật xử lý song song Để xét đến việc xử lý song song cần quan tâm đến giải thuật và việc thực hiện giải thuật song song đó trên loại máy tính nào. Những bước cần thực hiện khi thiết kế giải thuật song song:  Phân nhỏ bài toán thành bài toán con nhỏ hơn sao cho độc lập về mặt dữ liệu và chức năng, và giải quyết các bài toán này đồng thời.  Chỉ rõ việc chia sẻ dữ liệu và truy cập.  Chia các tác vụ cho các tiến trình cho các nhân xử lý.  Việc đồng bộ các tiến trình. Các bước thiết kế giải thuật song song và chương trình có thể xử lý song song Khi bắt tay thiết kế một giải thuật song song điều quan trọng là ta phải biết được cần song song trong công đoạn nào. Trước khi song song thuật toán ta cần biết thuật toán đó ở dạng tuần tự, đồng thời phải hiểu về giải thuật và ngôn ngữ lập trình cụ thể. Khi đó ta xét các bước sau để xem bài toán đó có song song hóa được không: - Phân tích bài toán, xác định các thành phần của giải thuật có thể hoặc không thể song song hóa được. - Để ý đến các hạn chế của xử lý song song trong đó hạn chế lớn nhất là sự 10 phụ thuộc dữ liệu. Các ví dụ về chương trình có thể song song hóa Một bài toán ví dụ có thể song song hóa đó là cộng hai mảng số nguyên có cùng phần tử. Công đoạn có thể song song hóa là cộng các phẩn tử có cùng thứ tự sẽ độc lập với các phần tử khác. A 1 1 1 1 1 + B = 4 C 5 4 4 5 5 4 4 5 5 Các ví dụ về chương trình không thể song song hóa Tính chuỗi Fibonacci (1, 1, 2, 3, 5, 8, 13, 21,…) bằng cách sử dụng công thức: F(k+2)= F(k+1) + F(k), với n > 1. Bài toán này không song song hóa được vì nguyên nhân tính số hạng của dãy Fibonacci theo công thức là phụ thuộc chứ không phải là độc lập. Trong đó việc tính giá trị thứ k+2 phải sử dụng giá trị của cả hai giá trị k+1 và k. Cách thiết kế giải thuật song song Cách thiết kế khái quát được đề cập đến trong luận văn này là phân chia dữ liệu.  Áp dụng khi liên quan đến tính toán trên nhiều cấu trúc dữ liệu. Các cấu trúc dữ liệu này có thể phân chia nhỏ hơn và có thể tính toán trên phần cấu trúc dữ liệu nhỏ hơn này. Minh chứng cho lập luận trên là bài toán cộng hai mảng số nguyên. Trường hợp ta có n bộ xử lý cùng làm việc để cộng hai mảng X[0…N-1] và Y[0…N-1] lưu vào mảng kết quả Z[0...N-1], việc phân chia dữ liệu sẽ đặt N/n phần tử của mỗi mảng vào từng quá trình và nó sẽ tính toán N/n phần tử tương ứng của mảng kết quả. Như 11 vậy, với n bộ xử lý càng nhiều thì thời gian chạy càng nhanh, ngược lại thì chạy càng chậm. 1.2. Khái quát về công nghệ GPU và các ứng dụng 1.2.1. Tổng quan về GPU Một phần không thể tách rời của hệ thống máy tính ngày nay đó là bộ xử lý đồ họa (Graphic Proccessing Unit) gọi tắt là GPU.Từ khi ra đời cho đến nay GPU đã cho ta thấy sự phát triển ấn tượng về hiệu suất. GPU hiện nay khô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ình song 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ức tạp và băng thông bộ nhớ tăng hơn đáng kể so với CPU cùng loại. Sự phát triển mạnh về hiệu suất của GPU trong cả việc hỗ trợ lập trình và khả năng tính toán của nó đã tạo ra một hướng nghiên cứu mới. Một nhóm các chuyên gia đã nghiên cứu 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. Việc này đã góp phần ứng dụng GPU vào giải quyết các bài toán hiệu năng cao của tính toán hiện đại. Tính toán và lập trình trên GPU là một thay thế tiềm năng cho CPU trong hệ thống máy tính hiện đại. Trong một tươ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. 1.2.2. Nguồn gốc và quá trình phát triển GPU GPU là bộ xử lý của card đồ họa, dùng để tính toán các phép toán dấu phảy động. Lúc đầu GPU là bộ xử lý gắn trên card đồ họa phục vụ cho việc tính toán các phép toán dấu phảy động. Với các vi mạch siêu nhỏ, cùng các phép toán đăc biệt , GPU được sử dụng chủ yếu trong các hoạt động cần đến xử lý đồ họa cao như trong các game đồ họa cao hoặc các xử lý đồ họa 3D. Việc xử lý một số phép toán đồ họa nguyên thủy khiến GPU chạy nhanh hơn nhiều so với việc vẽ trực tiếp trên màn hình với CPU.
- Xem thêm -

Tài liệu liên quan