Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 81 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
81
Dung lượng
1,5 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ====[ \==== Nguyễn Thị Thùy Linh TÍNH TỐN HIỆU NĂNG CAO VỚI BỘ XỬ LÝ ĐỒ HỌA GPU VÀ ỨNG DỤNG Ngành : Công nghệ thông tin Chuyên ngành : Hệ thống thông tin Mã số : 60 48 05 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Hải Châu Hà Nội – 2009 iii MỤC LỤC LỜI CAM ĐOAN .i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC THUẬT NGỮ v DANH MỤC HÌNH VẼ, BẢNG BIỂU vi Danh mục hình vẽ vi Danh mục bảng biểu vi MỞ ĐẦU Chương TỔNG QUAN VỀ TÍNH TỐN SONG SONG VÀ GPU .2 1.1 Tổng quan tính toán song song 1.1.1 Các mơ hình máy tính song song 1.1.2 Mơ hình lập trình song song .5 1.1.3 Sự cần thiết công cụ phát triển ứng dụng song song 1.2 Tổng quan xử lý đồ họa (GPU) 10 1.2.1 Giới thiệu GPU 10 1.2.2 Lịch sử phát triển GPU 10 1.2.3 Kiến trúc GPU 13 1.2.4 Tính tốn GPU (GPU Computing) 18 1.2.5 Môi trường phần mềm 21 1.2.6 Kỹ thuật ứng dụng 24 Chương HỆ THỐNG CHƯƠNG TRÌNH DỊCH VÀ NGƠN NGỮ LẬP TRÌNH GPU 30 2.1 Giới thiệu mơi trường phát triển CUDA 30 2.2 Mơ hình lập trình 32 2.2.1 Bộ đồng xử lý đa luồng mức cao 32 2.2.2 Gom lô luồng (Thread Batching) 32 2.2.3 Mơ hình nhớ 34 2.3 Thiết lập phần cứng 35 2.3.1 Tập đa xử lý SIMD với nhớ dùng chung chip 35 2.3.2 Mơ hình thực thi 36 2.3.3 Khả tính tốn 37 2.3.4 Đa thiết bị 37 2.3.5 Cơ chế chuyển đổi 38 2.4 Giao diện lập trình ứng dụng 38 2.4.1 Mở rộng cho ngơn ngữ lập trình C 38 2.4.2 Mở rộng ngôn ngữ 38 2.4.3 Thành phần chung thời gian chạy 44 2.4.4 Thành phần thiết bị thời gian chạy 47 2.5 Hướng dẫn hiệu 50 2.5.1 Hiệu lệnh 50 2.5.2 Số lượng luồng khối 56 2.5.3 Truyền liệu Host device 58 2.5.4 Lợi ích việc tổ chức nhớ 58 Chương ỨNG DỤNG GPU VÀO BÀI TOÁN N-BODY .59 3.1 Bài tốn mơ N-body 59 3.2 Xây dựng toán N-body CPU 61 3.2.1 Cơng thức tính lực tính 62 iv 3.2.2 Thuật tốn mơ N-Body 63 3.3 Xây dựng toán N-body GPU 63 3.4 Thử nghiệm 65 3.4.1 Môi trường thử nghiệm: 65 3.4.2 Kết thử nghiệm 66 3.5 Kết luận thử nghiệm 71 KẾT LUẬN 72 PHỤ LỤC .73 TÀI LIỆU THAM KHẢO 74 v DANH MỤC THUẬT NGỮ STT Tiếng Anh API coproccessor gpgpu GPU kernel MIMD 10 primary surface proccessor Rasterization SIMD 11 12 13 stream streaming processor texture 14 15 16 texture fetches texture reference warp Tiếng Việt Application Program Interface: API định nghĩa giao diện chuẩn để triệu gọi tập chức đồng xử lý tính tốn thơng dụng GPU Bộ xử lý đồ họa hạt nhân Multiple Instruction Multiple Data: đa lệnh đa liệu Bề mặt chính, khái niệm dùng kết cấu Bộ xử lý Sự quét mành hình Single Instruction Multiple Data: đơn lệnh đa liệu Dòng Bộ xử lý dòng Kết cấu: cấu trúc đối tượng, xem mơ hình thu nhỏ đối tượng Hàm đọc kết cấu Tham chiếu kết cấu Mỗi khối tách thành nhóm SIMD luồng vi DANH MỤC HÌNH VẼ, BẢNG BIỂU Danh mục hình vẽ Hình Máy tính song song có nhớ dùng chung Hình Máy tính song song có nhớ phân tán Hình Hoạt động hệ thống SIMD Hình Hoạt động hệ thống MIMD Hình Mơ hình lập trình đa luồng Hình Mơ hình truyền thông điệp Hình Mơ hình song song liệu Hình Mơ hình SPMD Hình Mơ hình MPMD Hình 11: Kiến trúc GPU nVidia AMD có lượng đồ sộ đơn vị lập trình tổ chức song song thống 18 Hình 12:Hiệu quét CPU, GPU dựa đồ họa (sử dụng OpenGL), GPU tính toán trực tiếp (sử dụng CUDA) 26 Hình 13: Kiến trúc phần mềm CUDA 30 Hình 14: Các thao tác thu hồi cấp phát nhớ 31 Hình 15: Vùng nhớ dùng chung mang liệu gần ALU 32 Hình 16: Khối luồng 33 Hình 17:Mơ hình nhớ 34 Hình 18: Mơ hình phần cứng 36 Hình 19: Hình ảnh mơ N-body [9] 61 Hình 20: Biểu đồ so sánh thời gian thực GPU CPU theo số lượng phần tử mô n-body với trục Y dạng logarithmic scale .66 Hình 21: Biểu đồ so sánh thời gian thực GPU CPU theo số lượng phần tử mô n-body với trục Y dãn 67 Hình 22:Biểu đồ thể tỷ số tăng tốc CPU/GPU số phần tử mô n-body tăng 68 Hình 23: Tải tính tốn CPU chạy mơ n-body với số phần tử 256K .69 Hình 24: Biểu đồ hiệu GPU GeForce 8800 GTX mô n-body số phần tử tăng 70 Danh mục bảng biểu Bảng 1: Kết thử nghiệm toán N-body GPU Nvidia GeForce 8800 GTX CPU Intel(R) Core(TM)2 Quad 2.66GHz .66 Bảng 2: Tỷ số tăng tốc CPU GPU 68 Bảng 3: Tốc độ xử lý GPU 8800 GTX số phần tử tăng 70 MỞ ĐẦU Bộ xử lý đồ họa (GPU - Graphic Proccessing Unit) trở thành phần tách rời hệ thống máy tính ngày Sáu năm vừa qua đánh dấu gia tăng ấn tượng hiệu suất khả GPU GPU đại không cơng cụ xử lý đồ họa mạnh mà cịn xử lý hỗ trợ lập trình song song mức cao, giúp xử lý toán số học phức tạp băng thông nhớ tăng đáng kể so với CPU loại Sự tăng tốc nhanh chóng GPU khả hỗ trợ lập trình lực tính tốn tạo xu hướng nghiên cứu Một cộng đồng nghiên cứu ánh xạ thành công lượng lớn vấn đề phức tạp đòi hỏi tính tốn lớn vào thực GPU Điều nỗ lực chung nhằm mục đích ứng dụng GPU vào giải toán hiệu cao tính tốn đại Tính tốn thơng dụng xử lý đồ họa GPU (GPGPU) thay hấp dẫn cho CPU truyền thống hệ thống máy tính đại áp dụng rộng rãi nhiều lĩnh vực: Vật lý, hóa học, sinh học, tài chính, Trong tương lai khơng xa, thấy GPU đảm nhận thay cho CPU cơng việc xử lý hình ảnh đồ họa, tính tốn phức tạp tốn tính tốn hiệu cao Với ý nghĩa thực tiễn đó, tơi chọn đề tài "Tính tốn hiệu cao với xử lý đồ họa GPU ứng dụng" Luận văn vào nghiên cứu tính tốn thơng dụng GPU thử nghiệm trực tiếp toán n-body, toán kinh điển lĩnh vực tính tốn hiệu cao Luận văn gồm chương chính: Chương 1: Tổng quan tính toán song song GPU, chương giới thiệu kiến thức tổng quan tính tốn song song, từ tìm hiểu kiến thức xử lý đồ họa GPU cách thức ứng dụng tính tốn Chương 2: Hệ thống chương trình dịch ngơn ngữ lập trình GPU Chương cung cấp kiến thức mơi trường lập trình, ngơn ngữ lập trình, cách thiết lập chương trình dẫn hiệu cài đặt ứng dụng tính toán GPU Chương 3: Ứng dụng GPU vào tốn n-body thử nghiệm chương trình Trên cở kiến thức trình bày chương trên, tác giả luận văn tiến hành cài đặt thử nghiệm mô n-body CPU GPU Từ có so sánh, nhận xét lực tính tốn vượt trội GPU so với CPU truyền thống Đồng thời mở hướng cải tiến hiệu cho toán n-body chạy GPU Chương TỔNG QUAN VỀ TÍNH TỐN SONG SONG VÀ GPU 1.1 Tổng quan tính tốn song song Khoa học kỹ thuật ngày phát triển, đặt nhiều tốn với khối lượng tính tốn lớn Trong số có tốn mà kết có ý nghĩa hồn thành khoảng thời gian cho phép Ví dụ tính tốn thời gian thực, mơ hoạt động mức lượng tử, tính quĩ đạo chuyển động vật thể không gian, mô vụ nổ vũ trụ, dự báo thời tiết Để giải toán này, người ta nghiên cứu tăng tốc độ tính tốn hai phương pháp hay kết hợp hai: Phương pháp 1: Cải tiến công nghệ, tăng tốc độ xử lý máy tính Cơng việc địi hỏi nhiều thời gian, cơng sức tiền của, tốc độ đạt đến giới hạn Phương pháp 2: Chia tốn thành cơng việc nhỏ để chạy song song nhiều xử lý Việc phát triển cơng nghệ tính tốn theo phương pháp cho đời cơng nghệ tính tốn song song, việc sử dụng đồng thời nhiều tài ngun tính tốn để giải tốn Các tài ngun tính tốn bao gồm máy tính với nhiều vi xử lý, tập máy tính kết nối mạng kết hợp hai dạng Cơng nghệ tính tốn song song cho phép giảm thời gian thực thi toán tùy thuộc cách phân chia số xử lý thực thi chương trình Ngun tắc quan trọng tính tốn song song tính đồng thời hay xử lý nhiều tác vụ lúc Trong tính tốn song song nay, có hai cơng nghệ chính: Thứ sử dụng siêu máy tính với nhiều xử lý tích hợp bên thiết kế đồng phần cứng phần mềm Các cơng nghệ áp dụng siêu máy tính thường công nghệ tiên tiến làm cho giá thành hệ thống siêu máy tính tăng cao.Vì siêu máy tính thường sử dụng lĩnh vực mà vấn đề tính tốn phức tạp, nhạy cảm yêu cầu thời gian thực mô thực động máy bay, quốc phòng, vũ trụ Cách thứ hai kết nối máy tính lại với thực tốn Hệ thống máy tính kết nối hệ thống tính tốn song song phân cụm Hệ thống có ưu điểm giá thành rẻ nhiều so với siêu máy tính có sức mạnh (do sử dụng thiết bị thông thường) tính linh hoạt hệ thống (số nút, số xử lý, nhớ, thiết bị mạng mang tính tuỳ biến cao) Sự phát triển mạnh mẽ mạng máy tính, cơng nghệ mạng lấp hạn chế truyền thông hệ thống máy tính song song phân cụm làm cho phát triển rộng rãi Các lĩnh vực sử dụng hệ thống tính tốn song song phân cụm thường u cầu tính tốn khơng q lớn, khơng u cầu thời gian thực xử lý ảnh, nhận dạng vân tay, tính tốn kết cấu cơng trình, mơ thí nghiệm 1.1.1 Các mơ hình máy tính song song Một hệ thống máy tính song song máy tính với nhiều xử lý cho phép xử lý song song Định nghĩa bao quát tất siêu máy tính với hàng trăm xử lý, mạng máy tính trạm, hay hệ thống nhúng … Thậm chí năm gần máy tính có vi xử lý áp dụng công nghệ multicore cho phép nhiều nhân xử lý coi hệ thống máy tính song song [35] Dựa vào phân biệt kết nối xử lý (hay thành phần xử lý), xử lý nhớ mà có nhiều loại kiến trúc máy tính song song khác Nhưng theo nguyên tắc phân loại Flynn có hai kiến trúc máy tính song song song thông dụng sau [35]: SIMD - Single Instruction Multiple Data: đơn lệnh đa liệu MIMD - Multiple Instruction Multiple Data: đa lệnh đa liệu Sự phân chia dựa kiến trúc nhớ máy tính song song Các máy tính song song có nhớ dùng chung (shared memory) có nhiều xử lý truy nhập đến vùng nhớ tổng thể dùng chung Tất thay đổi nội dung nhớ xử lý tạo nhận biết xử lý khác Hình Máy tính song song có nhớ dùng chung Trong lớp máy tính phân chia làm lớp nhỏ hơn: Lớp UMA (Uniform Memory Access – Truy cập nhớ đồng nhất) cho phép thời gian truy cập nhớ xử lý nhau; Lớp NUMA (Non-Uniform Memory Access – Truy cập nhớ khơng đồng nhất) có thời gian truy cập nhớ lúc Cịn lại, máy tính song song có nhớ phân tán có nhiều xử lý với xử lý truy cập đến nhớ cục nó, khơng có vùng nhớ dùng chung cho tất xử lý Các xử lý hoạt động độc lập với thay đổi vùng nhớ cục không làm ảnh hưởng đến vùng nhớ xử lý khác Hình Máy tính song song có nhớ phân tán 1.1.1.1 Mơ hình đơn lệnh đa liệu - SIMD Hình Hoạt động hệ thống SIMD SIMD kiểu máy tính song song có tất xử lý thực lệnh Tuy nhiên lệnh thực liệu khác ứng với xử lý khác Mô hình có ưu điểm đơn giản phần cứng phần mềm phù hợp để giải vấn đề tương đối đặc thù có tính cân đối cao xử lý xử lý ảnh … Các giải thuật cho đa máy tính thường chạy không hiệu máy SIMD 1.1.1.2 Mơ hình đa lệnh đa liệu - MIMD MIMD mơ hình kiến trúc máy tính song song thơng dụng Với mơ hình tất xử lý thực lệnh khác với liệu riêng khác Sự thực thi lệnh theo chế đồng không đồng (synchronous or asynchronous), xác định hay không xác định (deterministic or non-deterministic) Điều giúp cho mơ hình MIMD linh hoạt việc xử lý song song Hình Hoạt động hệ thống MIMD Tuy nhiên, với tính linh hoạt mình, mơ hình MIMD mang theo phức tạp định Việc lập trình tốn song song theo mơ hình địi hỏi nhiều cơng sức nghiên cứu, phân tích tốn để tìm cách phân rã tối ưu Để lập trình theo mơ hình này, lập trình viên cần có trình độ cao chuyên môn kỹ thuật lập trình song song 1.1.2 Mơ hình lập trình song song Cơng việc lập trình song song bao gồm việc thiết kế, lập trình chương trình máy tính song song cho chạy hệ thống máy tính song song Hay có nghĩa song song hố chương trình nhằm giải vấn đề lớn làm giảm thời gian thực thi hai Lập trình song song tập trung vào việc phân chia toán tổng thể thành công việc nhỏ định vị công việc đến xử lý (processor) đồng công việc để nhận kết cuối Nguyên tắc quan trọng tính đồng thời xử lý nhiều tác vụ lúc Do đó, trước lập trình song song bạn cần phải biết tốn song song hố hay khơng (có thể dựa liệu hay chức tốn) Có hai hướng việc tiếp cận lập trình song song: ... công việc xử lý hình ảnh đồ họa, tính tốn phức tạp tốn tính tốn hiệu cao Với ý nghĩa thực tiễn đó, tơi chọn đề tài "Tính tốn hiệu cao với xử lý đồ họa GPU ứng dụng" Luận văn vào nghiên cứu tính tốn... triển ứng dụng song song 1.2 Tổng quan xử lý đồ họa (GPU) 1.2.1 Giới thiệu GPU Bộ xử lý đồ họa (Graphics Processing Unit) hay gọi tắt GPU xử lý chuyên dụng cho biểu diễn hình ảnh 3D từ vi xử lý. .. Sự phát triển card đồ họa kết hợp chặt chẽ với chip vi xử lý 11 Ban đầu GPU xử lý gắn card đồ họa phục vụ việc tính tốn cho phép tốn dấu phảy động Bộ gia tốc đồ họa kết hợp với vi mạch siêu nhỏ