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: 62 3.2.1 Cơng thức tính lực tính r r r r Để công thức đơn giản, ta giả sử N= 2, gọi r1 , v1 , m1 r2 , v2 , m2 vị trí, vận tốc gia tốc số lượng lớn hai hạt P1, P2, hệ thống phần tử Lực F1 đưa vào hạt P1 phụ thuộc vào P2: r r Công thức tương tự cho lực F2 Sử dụng định luật NewTon F = ma gia tốc hạt P1 là: Trong G số hấp dẫn Thế Φ1 vị trí rˆ12 véc-tơ đơn vị r r1 phụ thuộc vào P2: Trong mô tả sản xuất, nhà nghiên cứu thường sử dụng tham số mềm để tránh lực gia tốc lớn gây khoảng cách gần hạt Trong hệ thống N-body, tham số mềm thường định nghĩa : Sử dụng tham số mềm, biểu thức (4), (5) trở thành: Và: Động Ki hạt Pi với i=1,2 là: Và Wi hạt Pi là: 63 Động Ki Wi hệ thống hạt là: Và lượng tổng cộng hệ thống là: 3.2.2 Thuật tốn mơ N-Body Đánh giá gia tốc ban đầu hạt cách sử dụng biểu thức (7) Đánh giá tổng lượng ban đầu E0 hệ thống cách sử dụng biểu thức (2), (8) - (13) Xác định tham số mềm ε cách sử dụng biểu thức (6) Set ∆t = ε / , t=0 Xác định số lượng bước thời gian giới hạn t t u Vịng lặp cho bước theo thời gian 5.1 Tính vận tốc hạt thời điểm t + ∆t / sử dụng biểu thức (2) 5.2 Tính vị trí hạt thời điểm t + ∆t biểu thức (1) 5.3 Tính gia tốc hạt thời điểm t + ∆t sử dụng biểu thức (7) 5.4 Tính tốc độ hạt thời điểm t + ∆t sử dụng biểu thức (2) 5.5 Tính tổng lượng Et hệ thống sử dụng biểu thức (8)-(13) 5.6 Tính sai số tương đối (Et − E0)/E0 bước 5.3 thực 5.7 Tính 2K/|W| để giám sát cân hệ thống (equilibirum) 5.7 t = t + ∆t / 5.9 t > tu số bước thời gian đạt tới số lượng định trước, thoát khỏi vòng lặp Kết thúc vòng lặp 3.3 Xây dựng toán N-body GPU Bài toán thử nghiệm N-body GPU tham khảo từ [9] Tác giả luận văn tìm hiểu, nghiên cứu mã nguồn ví dụ, điều chỉnh tham số chương trình cài đặt môi trường thử nghiệm Các bước thực hiện: Cài đặt tool kit NIVIDIA phiên 1.0 trở lên Có thể download http://developer.nvidia.com/cuda 64 Cấu hình GPU cần thiết: nVidia 8-Series Biên dịch chương trình Linux: Make file biên dịch chương trình: ############################################################################ #### # # Build script for project # ############################################################################ #### # Add source files here EXECUTABLE := nbody # Cuda source files (compiled with cudacc) CUFILES := bodysystemcuda.cu # C/C++ source files (compiled with gcc / c++) CCFILES := \ nbody_gold.cpp bodysystemcpu.cpp bodysystemcuda.cpp nbody.cpp \ render_particles.cpp \ USEGLLIB := USEPARAMGL := USEGLUT := ############################################################################ #### # Rules and targets include / /common/common.mk Ở thư mục gốc, gõ lệnh: Make; Make dbg=1 "Make -f Makefile_paramgl; Make -f Makefile_paramgl dbg=1 Vào thư mục: projects/nbody, gõ lệnh: Make; Make dbg=1; Make emu=1; Make emu=1 dbg=1 Chương trình chạy thư mục: bin/linux/release/nbody Chương trình có chế độ chạy: interactive, benchmark test 65 Chế độ interactive: chạy đồ họa, cho phép người dùng nhìn thấy mơ n-body, hạt chuyện động Chế độ test: mô chạy CPU GPU Nếu mô GPU nằm cho phép mơ CPU kết hiển thị "Test PASSED", ngược lại hiển thị "Test FAILED" Chế độ benchmark: chạy tính tốn tương tác, khơng có chuyển đổi sang đồ họa 3D khơng có thời gian chờ Báo cáo mơ gồm: tổng thời gian, thời gian trung bình, trung bình tương tác phần tử giây, tỷ số GFLOP/s Tác giả lựa chọn chế độ để chạy thử nghiệm hiệu GPU so sánh với CPU Lệnh chạy sau: nbody -benchmark -n=8388608 , đó: -benchmark: chế độ chạy -n: số phần tử mô Tác giả sửa mã nguồn để số bước lặp mặc định từ 100 thành 3.4 Thử nghiệm 3.4.1 Môi trường thử nghiệm: Hai mô miêu tả phần 3.2 3.3 cài đặt phịng thí nghiệm trung tâm RIKEN Máy PC thử nghiệm có cấu sau: CPU: Intel(R) Core(TM)2 Quad CPU @ 2.66GHz Cache: 4096 KB RAM: GB GPU: Nvidia GeForce 8800 GTX (Chi tiết thông số kỹ thuật xem phần Phụ lục) Hệ điều hành Linux 66 3.4.2 Kết thử nghiệm 3.4.2.1 So sánh thời gian thực GPU CPU Số phần tử (K ) Thời gian chạy Thời gian chạy GPU CPU 0.348 0.035 0.687 141 0.7 16 10 32 36 64 148 128 608 256 12 2940 512 48 10009 1024 179 38922 2048 719 1556882 4096 2820 622752 8192 11348 2491008 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 Thời gian thực (giây) So sánh thời gian thực theo số lượng phần tử GPU CPU 10.000.000,000 1.000.000,000 100.000,000 10.000,000 1.000,000 100,000 10,000 1,000 0,100 0,010 GPU CPU 16 32 64 128 256 512 1024 2048 4096 8192 Số phần tử (K) 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 Các thời gian tính CPU từ số phần tử 2048K trở lên tác giả luận văn dự đoán dựa số liệu thực nghiệm trước độ phức tạp O(N2) thuật toán 67 Thời gian thực (giây) So sánh thời gian thực theo số lượng phần tử GPU CPU 3.000.000 2.500.000 GPU 2.000.000 CPU 1.500.000 1.000.000 500.000 16 32 64 128 256 512 1024 2048 4096 8192 Số phần tử (K) 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 Nhận xét: Với số lượng phần tử nhỏ < 8K tính tốn CPU GPU nhanh, cỡ giây, CPU có phần nhanh Nhưng số lượng phần tử mô tăng lên theo cấp số tính tốn GPU nhanh CPU nhiều lần Trên đồ thị thời gian thực chứng minh độ phức tạp thuật tốn O(N2) với N số phần tử Khi số phần tử tăng lên gấp thời gian thực tăng lên gấp lần CPU GPU 68 3.4.2.2 Tỷ số tăng tốc CPU GPU Số phần tử Tỷ số tăng tốc 16 32 64 128 256 512 1024 0,10 0,21 1,43 2,00 10,00 36,00 148,00 202,67 245,00 208,52 217,44 Bảng 2: Tỷ số tăng tốc CPU GPU Tỷ số tăng tốc CPU GPU Tỷ số tăng tốc (lần) 300 250 200 tỷ số tăng tốc 150 100 50 16 32 64 128 256 512 1024 Số lượng phần tử (K) Hình 22:Biểu đồ thể tỷ số tăng tốc CPU/GPU số phần tử mô n-body tăng Nhận xét: Thực nghiệm khảo sát tỷ lệ tăng tốc tốc độ CPU GPU Ở mô số lượng phần tử thấp tốc độ CPU GPU tương đương Nhưng số lượng phần tử cao từ 64K trở nên tốc độ chênh lệnh đáng kể trì mức 200 lần Điều cho thấy sức mạnh tính tốn GPU 69 3.4.2.3 Hiệu tính tốn CPU Hình 23: Tải tính tốn CPU chạy mơ n-body với số phần tử 256K Nhận xét: Hình chụp cho thấy CPU 100%, chiếm thêm tải 100% CPU khác Khi thực mơ CPU tải CPU ln đạt mức cao 100% suốt thời gian chạy Chứng tỏ tiêu tốn tài ngun tính tốn CPU 70 3.4.2.4 Hiệu tính tốn GPU Biểu đồ hiệu GPU số phần tử tăng Số phần tử (K) 300.000 250.000 200.000 150.000 100.000 Sô GFLOP/s 50.000 64 12 25 51 10 24 20 48 40 96 81 92 32 16 GFLOP/s Hình 24: Biểu đồ hiệu GPU GeForce 8800 GTX mô n-body số phần tử tăng Số phần tử (K) Tố độ xử lý (GFLOP/s ) 60.191 122.183 245.350 247.043 16 247.676 32 247.999 64 248.091 128 248.119 256 248.137 512 248.146 1024 248.144 2048 248.145 4096 248.142 8192 248.139 Bảng 3: Tốc độ xử lý GPU 8800 GTX số phần tử tăng Nhận xét: Khi thực mô N-body GPU 8899 GTX, tài nguyên sử dụng mở mức tối đa số phần tử từ 4K trở nên Và trì mức 248GFLOP/s 71 3.5 Kết luận thử nghiệm Các kết thử nghiệm luận văn cho thấy lực tính tốn vượt trội GPU so với CPU tốn tính tốn song song mô n-body Kết cho thấy card đồ họa GeForce 8800 GTX có lực xử lý toán song song gấp khoảng 200 lần so với chip Itel Quad core 2.66GHz Tuy nhiên độ phức tạp thuật toán thử nghiệm mức cao O(N2) số lượng phần tử tăng lên gấp đôi thời gian thực thi tăng lên gấp lần Đây giới hạn mà mô n-body sát với thực tế số lượng phần tử tăng So với kết thử nghiệm [1], luận văn thử nghiệm tập liệu lớn nhiều lần cỡ triệu phần tử so với 16384 phần tử [1] Từ thấy rõ lực xử lý GPU, CPU, chênh lệch hiệu GPU CPU truyền thống Thử nghiệm cho thấy hiệu suất xử lý toán n-body card nVidia GeForce 8800 GTX mức xấp xỉ 250 GFLOP/s so với thông số kỹ thuật card 518 GFLOP/s (xem phụ lục) Điều chứng tỏ giới hạn toán thử nghiệm, cịn cải tiến để tận dụng hiệu suất GPU thử nghiệm cao 72 KẾT LUẬN Luận văn nghiên cứu tổng quan tính tốn song song, mơ hình cách thức hoạt động hệ thống song song Đó điều kiện cần để phát triển ứng dụng GPU thông dụng Tác giả tìm hiểu tổng quan GPU, tiến hóa kiến trúc bên nó, mơ hình tính tốn GPU Trong chương 2, luận văn tìm hiểu cơng cụ lập trình GPU phổ biến CUDA Chương trình bay chi tiết mơ hình lập trình, thiết lập phần cứng card đồ họa Nvidia, giao diện lập trình dẫn hiệu chạy ứng dụng card đồ họa Từ hiểu biết trên, tác giả thực thử nghiệm lực tính tốn GPU so sánh với CPU tốn mơ n-body để kiểm chứng, đánh giá điều mà lý thuyết nói Các kết thử nghiệm trình bày chi tiết chương luận văn Các kết chứng tỏ lực xử lý vượt trội GPU tốn tính tốn song song Với kết đạt được, tác giả mong muốn có nghiên cứu thêm cải tiến hiệu tốn mơ n-body GPU, giảm độ phức tạp tính tốn từ O(N2) xuống O(NlogN) [32] Đồng thời mong muốn nghiên cứu sâu hệ thống multiGPU, GPU cluster, kết hợp nhiều GPU tính tốn thơng qua mơ hình lập trình song song CUDA Từ ứng dụng GPU vào giải toán thực tế 73 PHỤ LỤC Bảng chi tiết thông số kỹ thuật card đồ họa nVidia GeForce 8800GTX so với loại dòng3 Nguồn: http://en.wikipedia.org/wiki/GeForce_8_Series website nVidia: http://www.nvidia.com/page/geforce_8800.html 74 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Luận văn Thạc sĩ năm 2009, Trần Thanh Hùng, Đại học Bách Khoa Hà Nội, "Nghiên cứu cơng nghệ Tính tốn thơng dụng xử lý đồ họa ứng dụng tốn mơ N-Body" Tiếng Anh: [2] E Lefohn, “A streaming narrow-band algorithm: Interactive computation and visualization of level-set surfaces,” Master’s thesis, University of Utah, Dec 2003 [3] Bustos, O Deussen, S Hiller, and D Keim, “A graphics hardware accelerated algorithm for nearest neighbor search,” in Proceedings of the 6th International Conference on Computational Science, ser Lecture Notes in Computer Science Springer, May 2006, vol 3994, pp 196– 199 [4] Blythe, “The Direct3D 10 system,” ACM Transactions on Graphics, vol 25, no 3, pp 724–734, Aug 2006 [5] Horn, “Stream reduction operations for GPGPU applications,” in GPU Gems 2, M Pharr, Ed Addison Wesley, Mar 2005, ch 36, pp 573–589 [6] Tarditi, S Puri, and J Oglesby, “Accelerator: Using data-parallelism to program GPUs for general-purpose uses,” in Proceedings of the Twelfth International Conference on Architectural Support for Programming Languages and Operating Systems, Oct 2006, pp 325–335 [7] Eclipse Parallel Tools Platform, http://www.eclipse.org/ptp/ [8] Gingold and J J Monaghan, “Smoothed particle hydrodynamics - theory and application to non-spherical stars,” MNRAS, vol 181, pp 375–389, 1977 [9] GPU Gems 3, Chapter 31 Fast N-Body Simulation with CUDA http://http.developer.nvidia.com/GPUGems3/gpugems3_ch31.html [10] I Buck, T Foley, D Horn, J Sugerman, K Fatahalian, M Houston, and P Hanrahan, “Brook for GPUs: Stream computing on graphics hardware,” ACM Transactions on Graphics, vol 23, no 3, pp 777–786, Aug 2004 [11] Introduction to Parallel Computing, http://www.llnl.gov/computing/tutorials/parallel_comp/ [12] J Barnes and P Hut, “A Hierarchical O(NlogN) Force-Calculation Algorithm,” Nature, vol 324, pp 446–449, Dec 1986 [13] J Bolz, I Farmer, E Grinspun, and P Schrăoder, Sparse matrix solvers on the GPU: Conjugate gradients and multigrid,” ACM Transactions on Graphics, vol 22, no 3, pp 917–924, Jul 2003 75 [14] J D Owens, D Luebke, N Govindaraju, M Harris, J Krăuger, A E Lefohn, and T Purcell, “A survey of general-purpose computation on graphics hardware,” Computer Graphics Forum, vol 26, no 1, pp 80– 113, 2007 [15] J Krăuger and R Westermann, Linear algebra operators for GPU implementation of numerical algorithms,” ACM Transactions on Graphics, vol 22, no 3, pp 908–916, Jul 2003 [16] J Krăuger, P Kipfer, P Kondratieva, and R Westermann, A particle system for interactive visualization of 3D flows,” IEEE Transactions on Visualization and Computer Graphics, vol 11, no 6, pp 744–756, Nov./ Dec 2005 [17] J Postel, J Reynolds, http://www.ietf.org/rfc/rfc0959.txt , RFC File Transfer Protocol, 1985 [18] John D Owens, Mike Houston, David Luebke, Simon Green, John E Stone, and James C Phillips, "GPU Computing", PROCEEDINGS OF THE IEEE, VOL 96, NO 5, MAY 2008 [19] K E Batcher, “Sorting networks and their applications,” in Proceedings of the AFIPS Spring Joint Computing Conference, vol 32, Apr 1968, pp 307–314 [20] K Fatahalian, J Sugerman, and P Hanrahan, “Understanding the efficiency of GPU algorithms for matrix-matrix multiplication,” in Graphics Hardware 2004, Aug 2004, pp 133–138 [21] L B Lucy, “A numerical approach to the testing of the fission hypothesis,” Astronomical Journal, vol 82, pp 1013–1024, Dec 1977 [22] L Greengard and V Rokhlin, “A fast algorithm for particle simulations,” Journal of Computational Physics, vol 73, pp 325–348, Dec 1987 [23] M Harris, “Mapping computational concepts to GPUs,” in GPU Gems 2, M Pharr, Ed Addison Wesley, Mar 2005, ch 31, pp 493–508 [24] M Kass, A Lefohn, and J Owens, “Interactive depth of field using simulated diffusion on a GPU,” Pixar Animation Studios, Tech Rep #06-01, Jan 2006, http://graphics.pixar.com/DepthOfField/ [25] M McCool, “Data-parallel programming on the Cell BE and the GPU using the RapidMind development platform,” in GSPx Multicore Applications Conference, Oct./Nov 2006 [26] M McCool, S Du Toit, T Popa, B Chan, and K Moule, “Shader algebra,” ACM Transactions on Graphics, vol 23, no 3, pp 787–795, Aug 2000" [27] N Galoppo, N K Govindaraju, M Henson, and D Manocha, “LUGPU: Efficient algorithms for solving dense linear systems on graphics hardware,” in Proceedings of the ACM/IEEE Conference on Supercomputing, Nov 2005, p 76 [28] N K Govindaraju and D Manocha, “Efficient relational database management using graphics processors,” in ACM SIGMOD Workshop on Data Management on New Hardware, Jun 2005, pp 29–34 [29] N K Govindaraju, B Lloyd, W Wang, M Lin, and D Manocha, “Fast computation of database operations using graphics processors,” in Proceedings of the 2004 ACM SIGMOD International Conference on Management of Data, Jun 2004, pp 215–226 [30] N K Govindaraju, M Henson, M C Lin, and D Manocha, “Interactive visibility ordering of geometric primitives in complex environments,” in Proceedings of the 2005 Symposium on Interactive 3D Graphics and Games, Apr 2005, pp 49–56." [31] "NVIDIA CUDA Programming Guide" version 1.0 [32] Tsuyoshi Hamada, Toshiaki Iitaka - Computational Astrophysics Laboratory, RIKEN, 2-1 Hirosawa, Wako, Saitama 351-0198, Japan, "The Chamomile Scheme: An Optimized Algorithm for N-body simulations on Programmable Graphics Processing Units" Internet: [33] PADE, http://math.nist.gov/mcsd/savg/pade/ [34] P-GRADE, http://www.lpds.sztaki.hu/pgrade/ [35] wikipedia, http://www.wikipedia.org ... 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ý. .. phần cứng tốt 1.2.4.2 Tính tốn thơng dụng GPU (GPGPU) GPGPU việc ánh xạ toán tính tốn mục đích thơng thường lên GPU sử dụng phần cứng đồ họa theo cách giống ứng dụng đồ họa chuẩn Bởi tương tự