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

Công nghệ tính toán hiệu năng cao sử dụng card đồ họa trong diễn họa

69 26 0

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

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

THÔNG TIN TÀI LIỆU

NGUYỄN QUỐC HUY BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - Nguyễn Quốc Huy CƠNG NGHỆ THƠNG TIN CƠNG NGHỆ TÍNH TỐN HIỆU NĂNG CAO SỬ DỤNG CARD ĐỒ HỌA TRONG DIỄN HỌA LUẬN VĂN THẠC SĨ KỸ THUẬT CƠNG NGHỆ THƠNG TIN KHĨA 2010 Hà Nội – 2012 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Nguyễn Quốc Huy CƠNG NGHỆ TÍNH TỐN HIỆU NĂNG CAO SỬ DỤNG CARD ĐỒ HỌA TRONG DIỄN HỌA Chuyên ngành : CÔNG NGHỆ THÔNG TIN LUẬN VĂN THẠC SĨ KỸ THUẬT CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC : TS PHẠM ĐĂNG HẢI Hà Nội – 2012 LỜI CAM ĐOAN Tôi - Nguyễn Quốc Huy - cam kết luận văn tốt nghiệp thạc sĩ kỹ thuật cơng trình nghiên cứu thân hướng dẫn TS Phạm Đăng Hải Các kết nêu luận văn trung thực, khơng phải chép tồn văn cơng trình khác Hà Nội, ngày 12 tháng năm 2012 Tác giả Nguyễn Quốc Huy LỜI CẢM ƠN Trước tiên, em xin gửi lời cảm ơn sâu sắc tới TS Phạm Đăng Hải, Viện Công nghệ thông tin Truyền thông, Trường Đại Học Bách Khoa Hà Nội, Thầy người trực tiếp tận tình hướng dẫn em suốt thời gian làm luận văn tốt nghiệp Em xin bày tỏ lòng biết ơn chân thành GS.TS Nguyễn Thanh Thuỷ, Phó hiệu trưởng trường Đại học Công nghệ - Đại học Quốc Gia Hà Nội, Thầy cho em lời khuyên quý báu để hoàn thành luận văn Em xin trân thành cảm ơn Thầy, Cô, cán thuộc Viện Công nghệ thông tin Truyền thông, Viện đào tạo sau đại học Trường Đại học Bách Khoa Hà Nội tạo điều kiện thuận lợi cho em trình học tập hồn thành luận văn thạc sĩ Mình xin gửi lời cảm ơn tới bạn học viên cao học khóa 2010B – Trường đại học Bách Khoa Hà Nội, sát cánh giúp đỡ vượt qua khó khăn q trình học tập, hồn thành luận văn tốt nghiệp Cuối cùng, tơi xin cảm ơn bạn bè gia đình ln động viên chỗ dựa vững tinh thần cho sống Hà Nội, ngày 12 tháng năm 2012 Tác giả Nguyễn Quốc Huy MỤC LỤC LỜI CAM ĐOAN LỜI CẢM ƠN TÓM TẮT LUẬN VĂN DANH MỤC HÌNH VẼ DANH MỤC CÁC TỪ VIẾT TẮT VÀ CÁC THUẬT NGỮ 11 CHƯƠNG 1: TỔNG QUAN VỀ TÍNH TOÁN HIỆU NĂNG CAO 12 1.1 Tổng quan tính tốn hiệu cao 12 1.1.1 Nhu cầu tính tốn hiệu cao 12 1.1.2 Giải pháp 12 1.2 Các hướng tiếp cận tính tốn hiệu cao tiêu biểu 13 1.2.1 Các siêu máy tính (Super Computers) 13 1.2.2 Tính tốn song song phân cụm (Cluster Computing) 15 1.2.3 Cơng nghệ tính tốn lưới – Grid Computing 19 1.2.4 Các xử lý multi-cores many-cores 21 1.2.5 Tính tốn song song hệ thống card đồ họa đa dụng 22 CHƯƠNG 2: CƠNG NGHỆ TÍNH TỐN HIỆU NĂNG SỬ DỤNG CARD ĐỒ HỌA GPGPU 23 2.1 Giới thiệu Bộ xử lý đồ họa GPU 23 2.2 Bộ vi xử lý đồ họa đa dụng GPGPU 24 2.3 Kiến trúc Tesla NVIDIA 27 CHƯƠNG 3: MƠI TRƯỜNG LẬP TRÌNH SONG SONG CUDA TRÊN HỆ THỐNG GPGPU 31 3.1 Giới thiệu chung CUDA 31 3.1.1 CUDA : Kiến trúc tính toán song song đa dụng 31 3.1.2 Mơ hình lập trình tự động mở rộng quy mô thực thi 32 3.2 Mô hình lập trình CUDA 34 3.2.1 CUDA Kernels 34 3.2.2 Mơ hình phân cấp luồng 35 3.2.3 Mơ hình phân cấp nhớ 39 3.2.4 Phân cấp thực thi chương trình CPU GPU 40 3.2.5 Khả tính tốn Device - Compute Capability 42 3.3 Lập trình ứng dụng với CUDA 42 3.3.1 Thiết lập môi trường CUDA 42 A Kiểm tra GPU có hỗ trợ CUDA 42 B Download gói phần mềm cài đặt CUDA 43 C Cài đặt CUDA 43 D Kiểm tra trình cài đặt 44 E Biên dịch chương trình với NVCC 44 3.3.2 Bộ nhớ GPU - Device Memory 45 3.3.3 Thực thi đồng thời Host Device 47 3.4 Sự mở rộng CUDA-C so với ngôn ngữ C 48 3.4.1 Định kiểu hàm - Function Type Qualifiers 48 3.4.1.1 device 48 3.4.1.2 global 48 3.4.1.3 host 48 3.4.2 Các từ khóa khai báo kiểu biến - Variable Type Qualifiers 49 3.4.2.1 device 50 3.4.2.2 constant 50 3.4.2.3 shared 50 3.4.3 Các kiểu liệu vector xây dựng sẵn - Built-in Vector Types 51 3.4.4 Các biến định nghĩa sẵn - Built-in Variables 51 3.4.4.1 gridDim 51 3.4.4.2 blockIdx 51 3.4.4.3 blockDim 51 3.4.4.4 threadIdx 52 3.4.4.5 warpSize 52 3.4.5 Các Function đồng hóa 52 CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG DIỄN HỌA TRÊN HỆ THỐNG NVIDIA GPU 54 4.1 Giới thiệu toán N-Body simulation 54 4.2 Cơ sở tính tốn lý thuyết 55 4.3 Cài đặt toán N-Body simulation sử dụng CUDA 57 4.3.1 Tính tốn lực tương tác cặp thực thể Body-Body 58 4.3.2 Tính tốn Tile 59 4.3.3 Phân chia Tiles vào Thread Blocks 59 4.3.4 Định nghĩa Grid Thread Blocks 61 4.4 Các kết thu 62 CHƯƠNG : KẾT LUẬN 66 TÀI LIỆU THAM KHẢO 67 TÓM TẮT LUẬN VĂN Đề tài : Cơng nghệ tính tốn hiệu cao sử dụng card đồ họa diễn họa Tác giả luận văn: Nguyễn Quốc Huy Khóa: 2010B Người hướng dẫn: TS Phạm Đăng Hải Nội dung tóm tắt: A, Lý chọn đề tài Với tiến nhanh công nghệ chế tạo phần cứng máy tính, GPU (Gaphics Processing Units – Bộ xử lý đồ họa) phát triển với kiến trúc song song hóa mức cao, xử lý đa luồng với kiến trúc manycore processor đem lại khả tính tốn với băng thơng nhớ lớn Từ xuất kỹ thuật dùng tính tốn GPU làm công việc trước CPU để tăng cường hiệu tính tốn, lý tác giả chọn đề tài luận văn ‘Cơng nghệ tính tốn hiệu cao sử dụng card đồ họa diễn họa’ B, Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu - Tìm hiểu cơng nghệ kiến trúc hệ thống tính tốn hiệu cao sử dụng card đồ họa NVIDIA - Tìm hiểu Mơi trường phát triển ứng dụng CUDA hệ thống GPGPU NVIDIA - Sử dụng hệ thống tính tốn hiệu cao card đồ họa NVIDIA ứng dụng diễn họa C, Tóm tắt nội dung luận văn Luận văn bao gồm chương : Chương 1: Tổng quan tính tốn hiệu cao : Trình bày cần thiết điểm bật cơng nghệ tính tốn hiệu cao giới Chương 2: Công nghệ tính tốn hiệu cao sử dụng card đồ họa GPGPU : Nghiên cứu cơng nghệ tính tốn hiệu cao sử dụng sức mạnh tính tốn song song xử lý đồ họa đa dụng Chương 3: Mơi trường lập trình song song CUDA hệ thống GPGPU : Tìm hiểu làm chủ mơi trường lập trình song song để viết phần mềm thực thi hệ thống card đồ họa đa dụng GPGPU Chương 4: Xây dựng ứng dụng diễn họa hệ thống NVIDIA GPU : Chương áp dụng kiến thức nghiên cứu vào việc xây dựng ứng dụng tính tốn song song hệ thống NVIDIA GPU, cụ thể giải toán “N-Body Simulation” Chương 5: Kết luận : Tóm tắt kết đạt phương hướng phát triển int  syncthreads_or(int predicate);   Hàm giống syncthreads() với tính thêm tính giá trị predicate cho tất thread block trả giá trị khác không predicate có giá trị khác thread block 53 CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG DIỄN HỌA TRÊN HỆ THỐNG NVIDIA GPU 4.1 Giới thiệu bài toán N‐Body simulation Bài tốn ‘N-body simulation’ mơ tiến hóa hệ thống thực thể, thực thể liên tục tương tác với thực thể khác hệ thống Một ví dụ quen thuộc ‘N-body simulation’ mơ thiên văn học tực thể đại diện cho ngân hà, nhóm sao; thực thể tương tác với thông qua lực hấp dẫn Hình 18: N-body simulation: Mơ tương tác hành tinh thiên văn học 54 Bài toán ‘N-body simulation’ xuất nhiều vấn đề tính tốn khoa học khác Ví dụ sinh học, ‘N-body simulation’được sử dụng để tính tốn lực tĩnh điện lực van der Waals nghiên cứu protein Mơ dịng chảy hỗn loạn tính tốn chiếu sáng đồ họa máy tính ví dụ vấn đề sử dụng ‘N-body simulation’ Tiếp cận all-pairs (tất cặp đôi) cho vấn đề ‘N-body simulation’ kỹ thuật tính tốn tất các tương tác N thực thể Cách tiếp cận đơn giản thường không sử dụng mô hệ thống có số lượng thực thể lớn có độ phức tạp tính tốn O(N 2) Tuy nhiên, tiếp cận all-pairs thường sử dụng Kernel để xác định lực tương tác phạm vi gần Phương pháp all-pairs kết hợp với phương pháp nhanh dựa xấp xỉ hóa lực tương tác xa, xấp xỉ phần hệ thống phân vùng tốt Các giải thuật Fast N-body thuộc dạng bao gồm phương pháp Barnes-Hut (BH) (Barnes and Hut 1986), phương pháp fast multipole (FMM) (Greengard 1987), phương pháp particle-mesh (Hockney and Eastwood 1981, Darden et al 1993) Trong thuật tốn trên, phận tính tốn all-pairs chiếm tỷ trọng thời gian lớn thực thi phận cần tăng tốc Cải thiện hiệu tính tốn phận all-pairs nhân tố để cải thiện tốc độ tính tốn tốn mơ Trong chương tập trung vào kernel tính tốn all-pairs cách thức cài đặt dụng mơ hình lập trình NVIDIA CUDA 4.2 Cơ sở tính tốn lý thuyết Trong tính tốn sau, quy ước sử dụng font chữ đậm để vector (thường chiều) 55 Cho trước N thực thể với vị trí ban đầu xi vận tốc vi với ≤ i ≤ N, vector lực hấp dẫn fij tác dụng lên thực thể i thực thể j tính theo cơng thức sau : Trong mi mj khối lượng tương ứng thực thể i j ; r ij = x j x i vector từ thực thể i đến thực thể j; G số hấp dẫn Phía trái cơng thức, độ lớn lực tính tích hai khối lượng chia cho bình phương khoảng cách thực thể i j Phía phải cơng thức vector đơn vị có hướng từ thực thể i tới thực thể j xác định hướng lực (bởi lực hấp dẫn lực hút) Lực tổng hợp Fi tác dụng lên thực thể i dựa tương tác với N - thực thể cịn lại tính tổng N-1 lực hấp dẫn: Vì thực thể có xu hướng tiến lại gần nhau, lực hấp dẫn chúng tăng lên khơng giới hạn, trường hợp khơng mong muốn tích hợp số hóa Trong mơ vật lý thiên văn, va chạm thực thể thường ngăn ngừa , điều hợp lý thực thể mô ngân hà – chúng di chuyển xuyên qua Bởi vậy, hệ số mềm e > thêm vào mẫu số công thức viết lại sau : 56 Điều kiện j ≠ i khơng cịn cần thiết phép tính tổng f ii = e > Hệ số mềm giới hạn độ lớn lực hấp dẫn thực thể, điều cần thiết việc mơ số hóa trạng thái hệ thống Tiếp theo cần tính tốn gia tốc a i = F i /mi để cập nhật vị trí vận tốc thực thể i theo thời gian, ta có cơng thức : 4.3 Cài đặt bài tốn N‐Body simulation sử dụng CUDA Thuật tốn all-pairs tính tốn lực f ij NxN grid (lưới) tất lực cặp thực thể hệ thống Lực tổng hợp Fi (hay gia tốc ) thực thể i thu từ tổng tất phần tử dòng i Mỗi mục NxN grid tính tốn hồn tồn độc lập nên triển khai O(N 2) phép tính song song Tuy nhiên tiếp cận địi hỏi O(N 2) nhớ bị giới hạn băng thơng nhớ Thay vào hóa số phép tính tốn để tận dụng liệu giảm băng thơng nhớ cần thiết Từ đó, đưa vào ký hiệu tile, vùng hình vng gồm p dòng p cột NxN grid lực hấp dẫn Chỉ phần liệu mô tả 2p thực thể cần để tính tốn tất p tương tác tile Các liệu lưu vùng nhớ chia sẻ ghi sử dụng lại Để tối ưu hóa việc tận dụng lại liệu, đặt việc tính tốn tile tương tác hàng tính tuần tự, sau cập nhật vector gia tốc, hàng khác tính tốn song song với Trong hình sau, hình phía trái mơ tả chiến lược tính tốn song song tuần tự, hình bên phải mơ tả input output tính tốn tile 57 Hình 19: Bài tốn N-Body : Cơ chế tính tốn Tile 4.3.1 Tính tốn lực tương tác giữa một cặp thực thể Body‐Body Sự tương tác cặp thực thể hệ thống cài đặt hoàn toàn Đoạn mã nguồn sau thực tính lực hấp dẫn tác dụng lên thực thể i gây thực thể j cập nhật gia tơc a i Có 20 FLOP (floating-point operations) đoạn mã này, bao gồm phép cộng, nhân, chia bình phương sqrtf()     device  float3    bodyBodyInteraction(float4 bi, float4 bj, float3 ai)    {      float3 r;      // tính vector r_ij  [3 FLOPS]      r.x = bj.x ‐ bi.x;      r.y = bj.y ‐ bi.y;      r.z = bj.z ‐ bi.z;      // distSqr = dot(r_ij, r_ij) + EPS^2  [6 FLOPS]    10    float distSqr = r.x * r.x + r.y * r.y + r.z * r.z + EPS2;    11   // invDistCube =1/distSqr^(3/2)  [4 FLOPS (2 mul, 1 sqrt, 1 inv)]    12    float distSixth = distSqr * distSqr * distSqr;    13   float invDistCube = 1.0f/sqrtf(distSixth);    14   // s = m_j * invDistCube [1 FLOP]    15    float s = bj.w * invDistCube;    16   // cập nhật vector gia tốc a_i =  a_i + s * r_ij [6 FLOPS]    17   ai.x += r.x * s;    18   ai.y += r.y * s;    19   ai.z += r.z * s;    20   return ai;    21 }   58 Ở sử dụng kiểu liệu float4 CUDA cho phần thông tin mô tả thực thể Khối lượng thực thể lưu trương w float4 Các vector chiều lưu biến kiểu float3 4.3.2 Tính tốn trong một Tile Mỗi tile tính tốn p thread thực thao tác liệu khác Mỗi thread cập nhật gia tốc thực thể thông qua tương tác với p thực thể khác Chúng ta nạp p khối liệu mô tả thực thể từ nhớ GPU vào vùng nhớ chia sẻ cung cấp thread block mơ hình CUDA Mỗi thread block tính tốn p tương tác Kết việc tính tốn tile p gia tốc cập nhật Mã nguồn cho việc tính tốn tile thể phần sau Biến số đầu vào myPosition lưu vị trí thực thể, biến shPosition mảng liệu chứa thông tin mô tả thực thể không gian nhớ chia sẻ Tính tốn tương tác Tile     device  float3    tile_calculation(float4 myPosition, float3 accel)    {      int i;      extern  shared  float4[] shPosition;      for (i = 0; i 

Ngày đăng: 27/02/2021, 23:45

Xem thêm:

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN