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

Luận Văn Xây Dựng Thuật Toán Song Song Tìm Đường Đi Ngắn Nhất Với Cuda.pdf

88 0 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

Thông tin cơ bản

Định dạng
Số trang 88
Dung lượng 1,99 MB

Nội dung

i LỜI CẢM ƠN Lời đầu tiên chúng tôi xin chân thành cảm ơn đến thầy Vũ Đình Trung đã tận tình giúp đỡ chúng tôi trong suốt thời gian nghiên cứu vừa qua, và hướng dẫn chúng tôi hoàn thành đề tài này Chú[.]

-iLỜI CẢM ƠN Lời xin chân thành cảm ơn đến thầy Vũ Đình Trung tận tình giúp đỡ chúng tơi suốt thời gian nghiên cứu vừa qua, hướng dẫn chúng tơi hồn thành đề tài Chúng chân thành cảm ơn quý thầy Khoa Cơng nghệ thơng tin góp ý, hỗ trợ suốt thời gian qua Chúng xin chân thành cảm ơn người thân, bạn bè giúp đỡ động viên suốt thời gian học tập thời gian thực đề tài Xin chân thành cảm ơn ! Biên Hịa, ngày 31 tháng 10 năm 2012 Nhóm sinh viên thực Nguyễn Việt Đức - Nguyễn Nam Giang -iiMỤC LỤC LỜI CẢM ƠN i MỤC LỤC ii DANH MỤC CÁC TỪ VIẾT TẮT v DANH MỤC BẢNG vi DANH MỤC HÌNH vii MỞ ĐẦU .1 Lý chọn đề tài Mục tiêu Đối tượng phạm vi nghiên cứu Phương pháp nghiên cứu Bố cục đề tài .3 CHƢƠNG 1: TỔNG QUAN VỀ TÍNH TỐN SONG SONG VÀ GPU 1.1 Tổng quan tính tốn song song 1.1.1 Tổng quan tính tốn song song .4 1.1.1.1 Lịch sử đời tính tốn song song .4 1.1.1.2 Tại phải tính tốn song song 1.1.1.3 Một số khái niệm xử lý song song .5 1.1.2 Mơ hình máy tính song song 1.1.3 Mơ hình lập trình song song 11 1.1.3.1 Mơ hình truyền thơng điệp 12 1.1.3.2 Mơ hình song song liệu .12 1.1.4 Nguyên lý thiết kế giải thuật song song 13 1.1.5 Nhận thức vấn đề chương trình song song hóa 13 -iii1.1.6 Phương pháp xây dựng thuật toán song song 14 1.2 Tổng quan GPU .15 1.2.1 Giới thiệu GPU 15 1.2.2 Lịch sử phát triển GPU 15 1.2.3 So sánh CPU GPU 19 CHƢƠNG 2: TÌM HIỂU VỀ CUDA VÀ THUẬT TỐN TÌM ĐƢỜNG ĐI NGẮN NHẤT .21 2.1 Tìm hiểu CUDA .21 2.1.1 Giới thiệu công nghệ CUDA 21 2.1.2 Ứng dụng CUDA lĩnh vực công nghệ .23 2.1.2.1 CUDA cho ngành cơng nghiệp trị chơi 23 2.1.2.2 CUDA cho ứng dụng video số 24 2.1.3 Môi trường lập trình chế hoạt động chương trình CUDA .24 2.1.3.1 Mơi trường lập trình 24 2.1.3.2 Cơ chế hoạt động chương trình CUDA .25 2.1.4 Mơ hình lập trình .26 2.1.4.1 Bộ đồng xử lý đa luồng mức cao 26 2.1.4.2 Gom lô luồng 26 2.1.5 Mơ hình nhớ 28 2.1.6 Lập trình ứng dụng với CUDA 29 2.1.6.1 CUDA mở rộng ngơn ngữ lập trình C 29 2.1.6.2 Những mở rộng CUDA so với ngơn ngữ lập trình C 30 2.1.6.3 Từ khóa phạm vi kiểu hàm .30 2.1.6.4 Từ khóa phạm vi kiểu biến .31 -iv2.1.6.5 Thực cấu hình 32 2.1.6.6 Các biến Built-in .32 2.1.6.7 Biên dịch với NVCC 33 2.1.7 Ví dụ tính tốn song song CUDA 34 2.2 Thuật tốn tìm đường ngắn .40 2.2.1 Mở đầu .40 2.2.2 Các khái niệm mở đầu .40 2.2.3 Đường ngắn xuất phát từ đỉnh 41 2.2.3.1 Thuật toán Dijkstra 42 2.2.3.2 Thuật toán Ford Bellman 43 2.2.4 Đường ngắn giữa tất cặp đỉnh thuật toán Floyd .44 2.3 Tình hình nghiên cứu thuật tốn song song tìm đường ngắn 46 2.3.1 Tình hình nghiên cứu giới 46 2.3.2 Tình hình nghiên cứu nước 47 2.3.3 Một số cơng trình tiêu biểu 47 CHƢƠNG 3: XÂY DỰNG THUẬT TOÁN SONG SONG TÌM ĐƢỜNG ĐI NGẮN NHẤT VỚI CUDA 53 3.1 Song song hóa số thuật tốn tìm đường ngắn .53 3.1.1 Song song hóa thuật tốn Dijkstra .53 3.1.2 Song song hóa thuật tốn Ford Bellman 58 3.1.3 Song song hóa thuật tốn Floyd 63 3.2 Kết chạy thử nghiệm 67 KẾT LUẬN 79 TÀI LIỆU THAM KHẢO 80 -vDANH MỤC CÁC TỪ VIẾT TẮT API Application Programming Interface CPU Central Processing Unit CUDA Compute Unified Device Architecture DRAM Dynamic Random Access Memory GPGPU General Purpose Computing on Graphics Processing Units GPU Graphisc Processing Unit MIMD Multiple Instruction Multiple Data MISD Multiple Instruction Single Data NVCC NVIDIA C Compiler SDK Software Development Kit SIMD Single Instruction Multiple Data SISD Single Instruction Single Data -viDANH MỤC BẢNG Bảng 1.1: So sánh khác lập trình song song Bảng 1.2: Mô tả phân loại kiến trúc Flynn .7 Bảng 3.1: Kết thực Dijkstra 68 Bảng 3.2: Kết thực Ford Bellman 71 Bảng 3.3: Kết thực Floyd 75 -viiDANH MỤC HÌNH Hình 1.1: Mơ tả kiến trúc Von Neumann Hình 1.2: Máy tính song song có nhớ chia sẻ Hình 1.3: Máy tính song song có nhớ phân tán Hình 1.4: Mơ hình kiến trúc máy SISD Hình 1.5: Mơ hình kiến trúc máy SIMD .9 Hình 1.6: Mơ hình kiến trúc máy MISD .10 Hình 1.7: Mơ hình kiến trúc máy MIMD 10 Hình 1.8: Mơ hình lập trình trun thơng hai tác vụ hai máy tính .12 Hình 1.9: Mơ hình lập trình song song liệu 13 Hình 1.10: So sánh kiến trúc CPU GPU 19 Hình 1.11: So sánh floating-point GPU CPU 19 Hình 2.1: Kiến trúc phần mềm CUDA 21 Hình 2.2: Các thao tác thu hồi cấp phát nhớ 22 Hình 2.3: Vùng nhớ dùng chung mang liệu gần ALU 23 Hình 2.4: Sơ đồ hoạt động truyền liệu Host Device 25 Hình 2.5: Khối luồng 27 Hình 2.6: Mơ hình nhớ GPU 28 Hình 2.7: Chiều lưới khối với số khối luồng 33 Hình 2.8: Phương pháp đánh số luồng 36 Hình 2.9: Cộng hai ma trận 37 Hình 2.10: Cơ chế hai chiều block thread 38 Hình 2.11: Ánh xạ threads đến vertexs 51 Hình 3.1: Đồ thị biểu diễn thời gian chạy Dijkstra .69 Hình 3.2: Kết chạy thử nghiệm 15 nghìn đỉnh dùng Dijkstra 69 Hình 3.3: Kết chạy thử nghiệm 15 nghìn đỉnh dùng Dijkstra CUDA 70 Hình 3.4: Đồ thị biểu diễn thời gian chạy Ford Bellman 72 Hình 3.5: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman 72 Hình 3.6: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman CUDA 1D 73 -viiiHình 3.7: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman CUDA 2D 73 Hình 3.8: Đồ thị biểu diễn thời gian chạy Floyd 76 Hình 3.9: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd 76 Hình 3.10: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd CUDA 1D 77 Hình 3.11: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd CUDA 2D 77 -1MỞ ĐẦU Nhu cầu tính tốn lĩnh vực khoa học, cơng nghệ ngày cao trở thành thách thức lớn Từ giải pháp nhằm tăng tốc độ tính toán đời, từ năm 2001 đến năm 2003 tốc độ Pentium đă tăng gấp đôi từ 1.5GHz lên đến 3GHz Tuy nhiên hiệu CPU (Central Processing Unit) không tăng tương xứng mức gia tăng xung CPU việc gia tăng tốc độ xung CPU nhanh chóng chạm phải ngưỡng tối đa mà cụ thể khoảng thời gian năm từ năm 2003 đến năm 2005 tốc độ CPU tăng từ 3GHz lên 3.8GHz Trong trình tăng tốc độ xung CPU nhà sản xuất gặp phải vấn đề nhiệt độ CPU cao giải pháp tản nhiệt đến mức tới hạn đáp ứng khả làm mát CPU hoạt động xung cao Vì việc gia tăng xung hoạt động CPU khơng sớm muộn vào bế tắc Trước tình hình này, nhà nghiên cứu vi xử lý chuyển hướng sang phát triển công nghệ đa lõi, nhiều lõi, với chế xử lý song song máy tính nhằm tăng hiệu tiết kiệm lượng Một công nghệ xử lý song song đời GPU (Graphics Processing Unit - xử lý đồ họa) Ban đầu, việc chế tạo GPU với mục đích công việc phù hợp với khả tăng tốc độ xử lý đồ họa, ngành trò chơi chủ yếu Nhưng đến thời điểm GPU NV30 NVIDIA đời, GPU bắt đầu tham gia vào cơng việc khác ngồi đồ họa như: Hỗ trợ tính tốn dấu chấm động đơn, hỗ trợ tính tốn lên ngàn lệnh Vì nảy sinh ý tưởng dùng GPU để xử lý, tính tốn song song chương trình khơng thuộc đồ họa Lý chọn đề tài Câu hỏi đặt làm để ứng dụng GPU vào việc xử lý tính tốn song song? Câu hỏi nhanh chóng giải công nghệ CUDA (Compute Unified Device Architecture – kiến trúc thiết bị hợp cho tính toán) NVIDIA đời năm 2007 Với CUDA, lập trình viên nhanh chóng phát triển ứng dụng song song nhiều lĩnh vực khác như: Điện tốn hóa học, xếp, tìm kiếm, mơ mơ hình vật lý, chuẩn đốn y khoa, thăm dị dầu khí,… CUDA cơng cụ -2phát triển phần mềm GPU xây dựng ngôn ngữ lập trình C Với CUDA lập trình viên dùng để điều khiển GPU để xử lý, tính tốn song song liệu lớn Xuất phát từ nhu cầu nhóm tác giả chọn đề tài: ”Xây dựng thuật tốn song song tìm đường ngắn với CUDA” Mục tiêu Song song hóa số thuật tốn tìm đường ngắn với CUDA, từ có đánh giá so sánh với thuật tốn tìm đường ngắn Đối tƣợng phạm vi nghiên cứu Đối tƣợng nghiên cứu Để hồn thành mục đích ý tưởng đề cần nghiên cứu nội dung sau:  Tìm hiểu lý thuyết tính tốn song song  Lý thuyết CUDA  Tìm hiểu số thuật tốn tìm đường ngắn  Từ xây dựng thuật tốn song song tìm đường ngắn với CUDA Phạm vi nghiên cứu Nghiên cứu chuyển đổi số thuật tốn tìm đường ngắn sang song song sử dụng CUDA Phƣơng pháp nghiên cứu Đề tài áp dụng hai phương pháp nghiên cứu, là: Phƣơng pháp nghiên cứu lý thuyết  Đọc số tài liệu lý thuyết tính tốn song song, lý thuyết CUDA, số thuật toán tìm đường ngắn  Trích lọc số lý thuyết có liên quan đến đề tài thực để áp dụng vào làm sở nghiên cứu  Vận dụng lý thuyết tìm hiểu để phục vụ cho việc song song hóa số thuật tốn tìm đường ngắn -66 j= 3: a[i, 3]= a[i, k] + a[k, 3]; pre[i, 3]= pre[i, k]  j= n-1: a[i, n-1]= a[i,k] + a[k, n-1]; pre[i, n-1]= pre[i, k] o Ta thấy khơng có phụ thuộc liệu, khơng dùng lại liệu bước trước để tính bước sau Ví dụ để tính a[i,1] ta khơng dùng kết a[i,0] tính bước j=0 để tính a[i,1] bước j=1 o Code CUDA cho phần tối ưu chiều global void kernelToiUu(int *a,int *pre, size_t n, size_t k,size_t i) { int tidX = blockIdx.x * blockDim.x + threadIdx.x; if (tidX < n) { int indexkj = k * n + tidX; int indexij = i * n + tidX; if(a[indexij]> a[i*n+k]+ a[indexkj] ) { a[indexij]= a[i*n+k]+ a[indexkj]; pre[indexij] = pre[i*n+k]; } }}  Song song phần tối ưu theo chiều (2D) o Ta xem hai vòng lặp for sau for i=0 to n-1 for j=0 to n-1 if a[i, j] > a[i, k] + a [k, j] then Begin a[i, j]= a[i, k] + a[k, j]; pre[i, j]= pre[i, k]; End -67o Để biết có song song hóa hai vịng lặp for này, nhóm tác giả dùng phương pháp thực nghiệm để chứng minh (do hai vòng lặp for khó chứng minh lý thuyết ta cần phải đưa ma trận đồ thị tốt để mơ tả trường hợp so sánh a[i,j] > a[i, k] + a[k, j] cập nhật a[i, j]= a[i, k] + a[k, j], tượng tự ma trận pre), kết chạy xem song song hóa hai vịng lặp for này, ngược lại kết chạy sai khơng song song hóa global void kernelToiUu(int *a,int *pre, size_t n, size_t k) { int indexkj, indexij; int tidX = blockIdx.x * blockDim.x + threadIdx.x; // vai trò j int tidY = blockIdx.y * blockDim.y + threadIdx.y; // vai trò i if (tidX < n && tidY < n) { indexkj = k * n + tidX; indexij = tidY * n + tidX; if(a[tidY*n+k]+ a[indexkj]) < a[indexij]) { a[indexij]=a[tidY*n+k]+ a[indexkj]; pre[indexij] = pre[tidY*n+k]; } }} o Khi thực đoạn code kết chạy (so với chạy chạy chiều (1D)), ta song song hóa hai vịng lặp for 3.2 Kết chạy thử nghiệm Các thuật toán thực nghiệm máy tính Intel Core i5 2.5 GHz, RAM GB, chạy windows 32-bit, card đồ họa GeForce 610M -68Ngôn ngữ sử dụng: Thuật tốn triển khai ngơn ngữ C, sử dụng hàm thư viện CUDA  Dijkstra Dưới bảng kết chạy thử nghiệm đồ thị biểu diễn thời gian chạy thuật toán Dijkstra Dijkstra chạy song song CUDA Bảng 3.1: Kết thực Dijkstra Thời gian chạy / giây Số đỉnh Dijkstra Dijkstra CUDA 1000 0.042 0.196 2000 0.172 0.465 3000 0.406 0.766 4000 0.705 1.111 5000 1.110 1.550 6000 1.610 1.950 7000 2.150 2.330 8000 2.850 2.900 9000 3.630 3.450 10000 4.550 3.950 11000 5.410 4.450 12000 6.391 4.766 13000 7.512 5.430 14000 9.036 6.092 15000 10.059 7.128 -69- 12 10 1000 2000 3000 4000 5000 6000 Dijkstra Tuần Tự 7000 8000 9000 10000 11000 12000 13000 14000 15000 Dijkstra CUDA Hình 3.1: Đồ thị biểu diễn thời gian chạy Dijkstra Hình 3.2: Kết chạy thử nghiệm 15 nghìn đỉnh dùng Dijkstra -70- Hình 3.3: Kết chạy thử nghiệm 15 nghìn đỉnh dùng Dijkstra CUDA Hai hình 3.2 hình 3.3 kết chạy thử nghiệm với 15 nghìn đỉnh tương ứng Dijkstra Dijkstra CUDA, với đỉnh xuất phát đến tất đỉnh lại (ở xuất 10 đường đi) Kết cho thấy hai Dijkstra Dijkstra CUDA cho chi phí đường giống Nhận xét: Thuật toán Dijkstra thực nhanh so với chạy song song với CUDA liệu đầu vào nhỏ, cụ thể từ nghìn đỉnh trở xuống việc thực chạy nhanh Nhưng liệu đầu vào lớn nghìn đỉnh thuật tốn Dijkstra có thời gian hoàn thành chậm so với chạy song song CUDA Lý với số đỉnh việc tính tốn nằm khả tính tốn CPU chương trình Dijkstra trải qua giai đoạn đưa liệu từ RAM (memory Host) sang VRAM (memory Device) chương trình CUDA song song Nhưng với số đỉnh tăng dần chương trình trải qua nhiều lần lặp chạy chậm chương trình song song -71 Ford Bellman Dưới bảng kết chạy thử nghiệm đồ thị biểu diễn thời gian chạy thuật toán Ford Bellman Ford Bellman chạy song song với phần tối ưu nhãn 1D (1 chiều) Ford Bellman chạy song song với phần tối ưu nhãn 2D (2 chiều) Bảng 3.2: Kết thực Ford Bellman Thời gian chạy / giây Số đỉnh Ford Bellman Ford Bellman CUDA -1D Ford Bellman CUDA -2D 1000 0.095 0.380 0.013 2000 0.462 0.560 0.039 3000 0.939 0.920 0.086 4000 1.511 1.145 0.145 5000 3.644 2.249 0.300 6000 4.147 2.398 0.378 7000 6.774 2.916 0.528 8000 7.950 3.179 0.690 9000 10.805 3.808 0.909 10000 13.500 4.956 1.172 11000 17.680 5.599 1.406 -72- 20 18 16 14 12 10 1000 2000 3000 4000 5000 Ford Bellman Tuần Tự Ford Bellman CUDA-2D 6000 7000 8000 9000 10000 11000 Ford Bellman CUDA-1D Hình 3.4: Đồ thị biểu diễn thời gian chạy Ford Bellman Hình 3.5: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman -73- Hình 3.6: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman CUDA 1D Hình 3.7: Kết chạy thử nghiệm 11 nghìn đỉnh dùng Ford Bellman CUDA 2D -74Ba hình 3.5 hình 3.6 hình 3.7 kết chạy thử nghiệm với 11 nghìn đỉnh tương ứng Ford Belman Ford Bellman CUDA 1D Ford Bellman CUDA 2D, với đỉnh xuất phát đến tất đỉnh lại (ở xuất 10 đường đi) Kết cho thấy ba Ford Bellman Ford Bellman CUDA 1D Ford Bellman CUDA 2D cho chi phí đường giống Nhận xét: Thuật toán Ford Bellman thực chậm so với chạy song song với CUDA 2D liệu đầu vào (số đỉnh) Lý Ford Bellman phải dùng hai vòng lặp for cho phần khởi tạo mảng a (trong CUDA 2D khơng có vòng lặp for nào) vòng lặp for cho phần khởi tạo lưu vết pre (trong CUDA 2D khơng có vịng lặp for nào) ba vịng lặp for lồng cho phần lặp (phần tối ưu) CUDA 2D có vịng lặp for Thuật toán Ford Bellman thực nhanh so với chạy song song với CUDA 1D liệu đầu vào nhỏ, cụ thể từ nghìn đỉnh trở xuống Khi liệu lớn nghìn đỉnh Ford Bellman tỏ chậm so với CUDA 1D Lý nhiều đỉnh vịng for lặp nhiều Lý với số đỉnh việc tính tốn nằm khả tính tốn CPU chương trình Ford Bellman trải qua giai đoạn đưa liệu từ RAM (memory Host) sang VRAM (memory Device) chương trình CUDA song song Nhưng với số đỉnh tăng dần chương trình trải qua nhiều lần lặp chạy chậm chương trình song song -75 Floyd Dưới bảng kết chạy thử nghiệm đồ thị biểu diễn thời gian chạy thuật toán Floyd Floyd chạy song song với phần tối ưu nhãn 1D (1 chiều) Floyd chạy song song với phần tối ưu nhãn 2D (2 chiều) Bảng 3.3: Kết thực Floyd Thời gian chạy / giây Số đỉnh Floyd Floyd CUDA -1D Floyd CUDA -2D 1000 21.726 31.255 1.027 1500 70.117 66.822 3.370 2000 166.150 114.964 7.843 2500 319.720 178.364 15.514 3000 557.781 266.770 26.503 3500 885.711 363.593 42.329 4000 * 451.551 61.244 4500 * 575.343 89.679 5000 * 714.423 121.139 6000 * * 205.820 7000 * * 330.257 -76- 1000 900 800 700 600 500 400 300 200 100 1000 1500 2000 Floyd Tuần Tự 2500 3000 3500 4000 Floyd CUDA-1D 4500 5000 6000 7000 Floyd CUDA-2D Hình 3.8: Đồ thị biểu diễn thời gian chạy Floyd Hình 3.9: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd -77- Hình 3.10: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd CUDA 1D Hình 3.11: Kết chạy thử nghiệm nghìn trăm đỉnh dùng Floyd CUDA 2D -78Ba hình 3.9 hình 3.10 hình 3.11 kết chạy thử nghiệm với nghìn trăm đỉnh tương ứng Floyd Floyd CUDA 1D Floyd CUDA 2D, với đỉnh đích 3499 (ở xuất đường đi) Kết cho thấy ba Floyd Floyd CUDA 1D Floyd CUDA 2D cho chi phí đường giống Nhận xét: Thuật toán Floyd thực chậm so với chạy song song với CUDA 2D liệu đầu vào (số đỉnh) Lý Floyd phải dùng hai vòng lặp for cho phần khởi tạo mảng a (trong CUDA 2D khơng có vòng lặp for nào) cho phần khởi tạo lưu vết pre (trong CUDA 2D khơng có vịng lặp for nào) ba vòng lặp for lồng cho phần lặp (phần tối ưu) Floyd CUDA 2D có vịng lặp for Thuật tốn Floyd thực nhanh so với chạy song song với Floyd CUDA 1D liệu đầu vào (số đỉnh) nhỏ 1500 đỉnh, với liệu lớn 1500 đỉnh thuật tốn thực chậm so với Floyd CUDA 1D  Nhận xét chung Với số đỉnh việc tính tốn nằm khả tính tốn CPU chương trình khơng phải trải qua giai đoạn đưa liệu từ RAM (memory Host) sang VRAM (memory Device) chương trình song song Nhưng với số đỉnh tăng dần chương trình trải qua nhiều lần lặp chạy chậm chương trình song song -79KẾT LUẬN Đề tài với mục tiêu song song hóa số thuật tốn tìm đường ngắn tuần CUDA, để làm giảm thời gian hồn thành số thuật tốn Các thuật tốn tìm đường phân tách thành phần song song hóa thực song song hóa CUDA Việc phân chia liệu cho luồng (threads) thực cơng việc định làm cho tốn song song CUDA trở nên nhanh so với toán chạy Tuy nhiên giới hạn kiến thức thời gian, chương trình chưa đáp ứng liệu đầu vào lớn (số lượng đỉnh lớn cỡ vài trăm nghìn vài triệu đỉnh) chương trình khơng thể thực (do không đủ nhớ lưu trữ không đủ số thread để thực song song, số thread có giới hạn tùy theo loại card đồ họa) Trong thời gian tới, đề tài cần mở rộng thêm việc cho phép chương trình thực chạy với liệu lớn cỡ vài triệu đỉnh Bên cạnh đó, chương trình viết CUDA.net -80TÀI LIỆU THAM KHẢO Tài liệu tiếng việt [1] Trương Văn Hiệu (2011), “Nghiên cứu giải thuật song song hệ thống xử lý đồ họa GPU đa lõi”, luận văn thạc sĩ, trường Đại học Đà Nẵng [2] Lê Minh Hồng (2002), “Giải thuật & Lập trình”, Bài giảng chuyên đề, Đại học Sư phạm Hà Nội [3] Nguyễn Thị Thùy Linh (2009), “Tính tốn hiệu cao với xử lý đồ họa GPU ứng dụng”, luận văn thạc sĩ, trường Đại học Công nghệ Hà Nội Tài liệu tiếng anh [4] Jason Sanders, Edward Kandrot, “CUDA by example”, an introduction to GeneralPurpose GPU programming [5] Maciej Matyka, “GPGPU programming on example of CUDA”, Institute of Theoretical Physics University of Wroclaw [6] NVIDIA, “High performance computing with CUDA”, Users Group Conference San Diego, CA June 15, 2009 [7] Pawan Harish, P J Narayanan, “Accelerating large graph algorithms on the GPU using CUDA”, Center for Visual Information Technology International Institute of Information Technology Hyderabad, INDIA Tài liệu internet [8] Kỹ thuật lập trình song song, truy cập tháng năm 2012 http://diendan.congdongcviet.com/showthread.php?t=19731 [9] Thuật toán Floyd, truy cập tháng 10 năm 2012 http://www.scribd.com/doc/51200124/Toan-roi-rac

Ngày đăng: 20/06/2023, 15:58

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

TÀI LIỆU LIÊN QUAN