Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 67 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
67
Dung lượng
1,1 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Phạm Nguyễn Quang Anh ỨNGDỤNGCÔNGNGHỆTÍNHTOÁNĐADỤNGTRÊNCÁCBỘXỬLÝĐỒHOẠTRONGBÀITOÁNPAGERANK Chuyên ngành: Côngnghệ thông tin LUẬN VĂN THẠC SĨ KHOA HỌC CÔNGNGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: T.S Nguyễn Hữu Đức Hà Nội – Năm 2011 ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 MỤC LỤC HÌNH .3 ĐẶT VẤN ĐỀ .4 CHƯƠNG I: BÀITOÁNPAGERANKCác phương pháp xếp hạng trang web dựa vào siêu liên kết 1.1 Hyperlink-Induced Topic Search (HITS) 1.2 Phương pháp PageRankTínhtoán vectơ PageRank 17 Tham số mô hình PageRank .19 Kết luận .19 CHƯƠNG 2: GPU VÀ CÔNGNGHỆTÍNHTOÁNĐADỤNG GP-GPU 21 Cácxửlýđồhọađa lõi Nvidia 21 Kiến trúc GPU Tesla 24 Môi trường phát triển ứngdụng cho GPU – CUDA 28 Khả mở rộng CUDA .29 3.2 Các khái niệm 31 3.2 Lập trình không đồng 40 3.3 Khả tínhtoán .41 3.4 Giao diện lập trình 41 3.5 Biên dịch với NVCC .42 3.6 CUDA C .42 Tổng kết 43 CHƯƠNG 3: ÁP DỤNG GPU TRONGTÍNHPAGERANK .45 Tiền xửlý liệu 45 Hướng tiếp cận - giải thuật 48 1.1 Giải thuật tuần tự: 48 -1- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 1.2 Hướng song song hoá: 50 1.3 Thao tác nguyên tử (atomic operation) 53 1.4 Điều kiện dừng .55 Lưu trữ đồ thị 57 Bảng băm 58 Xây dựng bảng băm .60 CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ 62 Thử nghiệm 62 Đánh giá 64 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 65 Kết luận .65 Hướng phát triển 65 TÀI LIỆU THAM KHẢO .66 -2- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 MỤC LỤC HÌNH Hình 1: Ví dụ đồ thị web 11 Hình 2: Node vũng rank 13 Hình 3: GPU dành cho nhiều transistor CPU để xửlý liệu 22 Hình 4: Số phép tính dấu phẩy động giây băng thông nhớ CPU GPU 22 Hình 5: Kiến trúc Tesla 25 Hình 6: CUDA thiết kế để hỗ trợ nhiều ngôn ngữ API khác 29 Hình 7: Khả tự mở rộng 31 Hình 8: Lưới block 35 Hình 9: Phân cấp nhớ .39 Hình 10: Lập trình không đồng 40 Hình 11: Kiến trúc Web Crawler 46 Hình 12: TínhPageRank nhiều luồng GPU 51 Hình 13: Giải thuật scan tìm max phần tử 56 Hình 14: Cấu trúc bảng băm 58 Hình 15: Các bước xây dựng bảng băm 61 -3- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 ĐẶT VẤN ĐỀ Máy tìm kiếm (Search engine) công cụ thiếu thời đại thông tin, giúp người dùng tìm cần cách nhanh chóng xác Các máy tìm kiếm lưu trữ thông tin trang web trích từ trang html Các trang lấy Web crawler (còn gọi spider) – trình duyệt web tự động theo liên kết site Dữ liệu trang web lưu trữ sở liệu mục, mục tiêu mục cho phép thông tin tìm kiếm cách nhanh Khi người dùng nhập câu truy vấn (bằng từ khoá), máy tìm kiếm kiểm tra mục cung cấp danh sách trang khớp theo tiêu chí Sự hữu dụng máy tìm kiếm phụ thuộc vào mức độ liên quan tập kết trả Có thể có hàng triệu trang web có chứa từ cụm từ xác định, vài trang lại có mức độ liên quan, độ quan trọng cao trang khác Hầu hết máy tìm kiếm áp dụng phương pháp xếp hạng kết để cung cấp kết tốt lên đầu Cách thức máy tìm kiếm xác định trang web khớp nhất, thứ tự hiển thị kết khác máy tìm kiếm Trên thực tế, việc xếp thực việc kết hợp hai tiêu chí, nội dungđộ quan trọng văn Nhiều luật đưa để tínhđộ tương quan dựa nội dung Ví dụ, nhiều Máy tìm kiếm đặt trang web có từ khoá tìm kiếm tiêu để có trọng số cao trang có từ thân Độ quan trọng văn mà trọngđồ án xác định việc phân tích cấu trúc siêu liên kết (hyperlink) web Hai tiêu chí kết hợp với để xác định điểm số tổng hợp cho trang Máy tìm kiếm sử dụng điểm số để xếp Năm 1998, Sergey Brin Larry Page đưa công thức tínhđộ quan trọng trang web gọi PageRank [1] PageRank Google sử dụng cho Máy tìm kiếm -4- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Tư tưởng PageRank thông tin web phân cấp mức độ tiếng dựa liên kết: trang web xếp cao có nhiều liên kết trỏ đến PageRank trang định nghĩa cách đệ quy phụ thuộc vào số lượng giá trị PageRank tất trang trỏ đến Mặc dù yếu tố định thứ tự kết trả về, PageRank tảng tất công cụ tìm kiếm Google cho thấy vượt trội so với phương pháp phân tích cấu trúc liên kết khác Việc tínhtoánPageRank thực lượng liệu khổng lồ (hàng triệu đến hàng tỷ trang web) đòi hỏi khối lượng tínhtoán lớn Theo ước tính, số lượng trang web World Wide Web khoảng 40 tỷ Với kích thước liệu lớn vậy, việc tínhtoánPageRank thách thức không nhỏ Ngoài có đặc điểm quan trọng World Wide Web tính động Tính động thể hai khía cạnh Thứ nhất, nội dung trang web thay đổi liên tục Điều dẫn tới thay đổi liên kết trang web tương ứng thay đổi cấu trúc web Thứ hai, kích thước World Wide Web tính theo số trang web tăng lên liên tục Có hàng tỷ trang web tạo năm Tính động World Wide Web khiến việc tínhtoánPageRank gặp nhiều khó khăn Để giá trị PageRank cập nhật trước thay đổi không ngừng World Wide Web giai đoạn tínhtoánPageRank phải thực liên tục thời gian ngắn tốt Điều đòi hỏi hệ thống đủ mạnh cho nhu cầu tínhtoán Luận văn hướng đến việc ứngdụngcôngnghệtínhtoánđadụngxửlýđồhọa (GPGPU – General Purpose Computation on Graphic Processing Units) cho toánPageRank GPGPU [7] côngnghệ sử dụngxửlýđồhoạ (GPU) để thực ứngdụngtínhtoán vốn tiến hành CPU Năng lực tínhtoán GPU tỏ vượt trội so với xửlý Intel với khả song song hoá cao nhiều luồng GPGPU -5- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 áp dụng nhiều lĩnh vực đòi hỏi khối lượng tínhtoán lớn tin sinh, xửlý tín hiệu số, mã hoá thám mã, mô phỏng, toán khai phá liệu,… Phạm vi đồ án: Đồ án nghiên cứu lý thuyết PageRank, tư tưởng hình thành nó, cách thức mô hình hoátoánĐồ án đề xuất phương pháp tínhtoánPageRank giải thuật CPU Từ giải thuật này, đồ án nghiên cứu hướng song song hoá giải thuật, cách tổ chức cấu trúc liệu, thao tác tối ưu hoá tác giả đề để thực việc tínhtoán GPU Cuối cùng, thử nghiệm liệu thực tế thực để đo đạc khả tăng tốc tínhtoánPageRank GPU so với CPU Từ đó, tổ chức luận văn gồm phần sau: - Chương 1: Chương tìm hiểu phương pháp đánh giá trang web dựa siêu liên kết, tập trung vào phương pháp PageRank: ý tưởng xây dựng nên PageRank, bước xây dựng, điều chỉnh, hoàn thiện công thức - Chương 2: Giới thiệu côngnghệtínhtoán song song đadụngxửlýđồhoạ GPU - Chương 3: Đưa cách tiếp cận để giải toán, xây dựng chương trình CPU song song GPU - Chương 4: Trình bày thử nghiệm, so sánh hiệu tínhtoán thông qua thời gian thực hai chương trình song song - Chương 5: Kết luận đề xuất hướng phát triển cho đề tài -6- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 CHƯƠNG I: BÀITOÁNPAGERANKTrong chương tìm hiểu phương pháp xếp hạng trang web dựa cấu trúc siêu liên kết tập trung vào giải thuật PageRank Chương trình bày tư tưởng PageRank, cách biểu diễn PageRankcông thức toán học, điều chỉnh công thức để phục vụ cho việc tínhtoánCác phương pháp xếp hạng trang web dựa vào siêu liên kết Trong phần tìm hiểu phương pháp xếp hạng trang web Để làm điều , định nghĩa Web đồ thị Cấu trúc liên kết Web tạo nên đồ thị có hướng Các node đồ thị biểu diễn trang web cung có hướng thể siêu liên kết Các liên kết đến trang gọi liên kết vào (inlink), liên kết xuất phát từ trang gọi liên kết (outlink) 1.1 Hyperlink-Induced Topic Search (HITS) HITS thuật toán phân tích liên kết để đánh giá trang web, phát triển Jon Kleinberg [9] HITS sử dụng liên kết vào liên kết để tính mức độ tiếng trang web HITS đưa định nghĩa hub authority Một trang web coi hub có nhiều liên kết ra, trang web có nhiều liên kết vào coi authority Một trang vừa hub vừa authority HITS tínhtoán hai thước đo cho trang web: giá trị authority – đánh giá giá trị nội dung trang giá trị hub – đánh giá giá trị liên kết mà trang web trỏ tới trang khác Tư tưởng HITS là: trang hub tốt (có giá trị hub cao) trỏ tới authority tốt, -7- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 trang web authority tốt trỏ hub tốt Gọi E tập cạnh có hướng đồ thị web eij cạnh từ node i đến node j Công thức HITS để tính giá trị authority xi giá trị hub yi trang i sau: xi( k ) y (jk 1) j :e ji E Và yi( k ) x (jk 1) j:eij E Với k = 1, 2, 3,… (Giả sử trang web gán giá trị khởi tạo xi(0) yi(0) ) Việc tínhtoán HITS chia làm bước Khác với Pagerank, phương pháp HITS phụ thuộc vào truy vấn Do bước thứ nhất, đồ thị N liên quan đến từ khoá tìm kiếm bao gồm trang web có chứa từ khoá Có nhiều cách để tìm trang này, số sử dụng mục file ngược (inverted file index), ví dụ: Từ khoá ID trang web Term 5, 78, 1127 Term 5, 14, 256, 4783 Term N 5, 38, 623, 2673 -8- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Sau N dựng nên, việc tính HITS thực đồ thị Vòng lặp tínhtoándừng ta đạt độ xác mong muốn Một ưu điểm HITS nằm cách đánh giá tham số đo HITS đưa hai danh sách xếp cho người dùng: danh sách với trang có giá trị authority cao danh sách với trang có giá trị hub cao Người dùng lựa chọn hai danh sách Đôi người dùng muốn trang có authority cao họ cần tìm sâu vào truy vấn Ở lần khác, họ muốn trang có hub cao họ tìm kiếm cách rộng rãi Một ưu điểm khác HITS kích thước toán HITS đưa toán xếp hạng toán nhỏ với trang web liên quan đến từ khoá truy vấn Kích thước đồ thị nhỏ nhiều so với tổng số trang web web Tuy nhiên, nhược điểm lớn HITS tính phụ thuộc vào truy vấn Tại thời điểm truy vấn, đồ thị N phải xây dựng điều thực cho lần tìm kiếm Trên thực tế, có máy tìm kiếm sử dụng HITS 1.2 Phương pháp PageRank Năm 1998, Page Brin [1] đưa phương pháp đánh giá trang web sựa liên kết vào chúng, gọi PageRank Tư tưởng PageRank là: trang web quan trọng trỏ trang web quan trọng Việc hình thành công thức PageRank dựa giả định siêu liên kết giới thiệu Một siêu liên kết từ trang web A tới trang B ghi nhận A B Do đó, trang có nhiều giới thiệu (mà xác định qua số liên -9- ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Bước cuối tính số hạng thứ ba tính giá trị PageRank cuối vòng lặp Cũng giống bước đầu tiên, thao tác thực cách tạo p luồng nhiều lần, luồng thao tác phần tử vectơ PageRank Khác với bước thứ nhất, công đoạn tínhtoán cuối đụngđộ luồng đạt mức độ song song tối đa Giải thuật tínhtoán GPU sau: while ( ( k 1) ( k ) ) // điều kiện hội tụ { // Đặt lại giá trị PageRank for i = to n – in parallel { i( k 1) } dangling_value = for i = to n – in parallel { if Pi > // node treo { foreach ei , j E { (j k 1) (j k 1) i( k ) Pi } } else // node treo - 52 - // atomicAdd ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 { // atomicAdd dangling_value = dangling_value + i( k ) } } for i = to n – in parallel /* cộng số hạng thứ 3*/ { (j k 1) (j k 1) (dangling _ value ) n } } 1.3 Thao tác nguyên tử (atomic operation) Chúng ta dễ dàng nhận rằng, tính theo cách nhiều luồng GPU xảy đụngđộ Điều diễn hai hay nhiều node trỏ tới node (hay nói cách khác node nằm danh sách liên kết nhiều node), hai luồng đồng thời truy cập vào node để cộng dồn giá trị PageRank Nhiều trang web trỏ tới nhiều trang web khác trang chủ thường trang site trỏ tới, trang thường trang có PageRank cao (vì có nhiều liên kết tới) Để xửlý vấn đề cần có chế khoá hiệu để hoá việc truy cập vào node Trong hệ GPU có khả tínhtoán từ 1.1 trở lên, CUDA cung cấp chế gọi hàm nguyên tử - atomic function Các hàm thực thao tác đọcthay đổi-ghi từ 32 bit 64 bit thao tác đơn Thao tác - 53 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 đơn hiểu theo nghĩa thực thi mà không bị chen ngang luồng khác Nói cách khác, không luồng khác truy cập vào địa thao tác kết thúc Ví dụ, hàm nguyên tử mà sử dụng atomicAdd(), hàm đọc từ 32 bit địa toàn cục shared, cộng số nguyên vào đó, ghi kết trở lại địa Trongtoàn trình này, có luồng thực lệnh atomicAdd truy cập vào địa tương ứng, điều đảm bảo cho kết quán phép cộng Ngoài atomicAdd, CUDA cung cấp hàm nguyên tử khác mà không dùng tới: atomicSub, atomicExch, atomicMin, atomicMax,… Tuy nhiên, có vấn đề nghiêm trọng áp dụng hàm nguyên tử để tínhtoán PageRank, hàm nguyên tử dùng cho số nguyên Trong giá trị PageRank mà tính giá trị thực nằm khoảng (0, 1) (vì PageRank tỷ lệ thời gian mà người duyệt web dừng lại trang xác định đó) Để khắc phục vấn đề này, biến đổi giá trị PageRank thành giá trị nguyên mà không làm ảnh hưởng tới độ xác yêu cầu toán Ta định nghĩa vectơ PageRank ( k )T : ( k )T 10 w ( k )T Tức ( k )T chình giá trị ( k )T với dấu phẩy "dịch" phải w chữ số Nhân hai vế công thức với 10w, ta được: ( k 1)T ( k )T H ( ( k )T a (1 )10 w )eT / n Lúc tínhtoán thực vectơ T thay T Các phép chia làm tròn số nguyên Càng dịch phải nhiều độ xác mà ( k )T biểu diễn nhiều ( k )T ngày lớn Điều có nghĩa phải - 54 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 chọn tham số w cách hợp lý để đảm bảo độ xác phép toán mà không gây tràn số Ví dụ, với n = 1.000.000, phép chia công thức có độ xác tới số sau dấu phẩy, ta chọn w = Vì giá trị PageRank ban đầu T nằm khoảng (0, 1) nên với giá trị w chọn giá trị T nằm khoảng (0, 106), khoảng an toàn cho phép toáncông thức 1.4 Điều kiện dừng Điều kiện truy vòng lặp ( k 1) ( k 1) , tức khoảng cách vectơ PageRank hai vòng lặp liên tiếp lớn ngưỡng xác định Ở đây, chọn công thức Chebyshev để tính khoảng cách Theo công thức Chebyshev, khoảng cách hai vectơ chênh lệch lớn hai giá trị chiều: p q max( pi qi ) i Như việc tính khoảng cách Chebysev thực tìm phần tử lớn tập phần tử (pi-qi) Với số lượng node đồ thị lên tới hàng triệu hàng chục triệu giá trị lý thuyết phải có độ xác từ số sau dấu phẩy trở lên, độ xác cần thiết để phân biệt giá trị PageRank node khác Tuy nhiên, thực tế, PageRank thước đo để xếp hạng trang web kết trả (vì kết hợp mức độ liên quan nội dung) độ xác cao giá trị PageRank không cần thiết, nên giá trị 103 104 chấp nhận Như đề cập phần trên, giá trị PageRank thao tác ( k )T 10 w ( k )T với w = 108, giá trị tương ứng 103 Trong giải thuật tuần tự, việc tìm phần tử lớn mảng có độ phức tạp O(n) ta phải duyệt qua toàn phần tử vectơ PageRankTrên GPU, ta dùng giải thuật scan tương tự áp dụng để tính prefix sum - 55 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Đầu tiên ta xây dựng mảng gồm hiệu phần tử tương ứng với hai mảng PageRank Quá trình thực song song p luồng GPU Sau mảng hiệu này, ta tiến hành áp dụng giải thuật scan Ta chia mảng block, block gồm 1024 phần tử (ngoại trừ block cuối có số lượng phần tử hơn) X0 max(X0, X1) X2 max(X0, X3) X4 max(X4, X5) X6 max(X0, X7) X0 max(X0, X1) X2 max(X0, X3) X4 max(X4, X5) X6 max(X4, X7) X0 max(X0, X1) X2 max(X2, X3) X4 max(X4, X5) X6 max(X6, X7) X0 X1 X2 X3 X4 X5 X6 X7 Hình 13: Giải thuật scan tìm max phần tử Ý tưởng giải thuật scan xây dựng nhị phân cân song song theo phương pháp từ lên (bottom up) Hai node cấp so sánh với nhau, giá trị lớn dùng để làm gốc lớn Quá trình lặp lại node nhất, node chứa giá trị lớn phần tử mảng - 56 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 n Giả sử số lượng phần tử mảng n số block Mỗi block 1024 tương ứng block tínhtoán GPU, số lượng luồng 512 (số lượng luồng tối đa block CUDA) Áp dụng giải thuật scan cho block ta n mảng phần tử ghi lại giá trị lớn block Với mảng này, ta 1024 tiếp tục áp dụng việc chia block thực scan block Quá trình lặp lại block ta tìm phần tử lớn block đó, phần tử lớn mảng ban đầu Lưu trữ đồ thị Đầu vào PageRankđồ thị web xây dựng từ trang lấy từ World Wide Web Đồ thị tổ chức việc tínhtoánPageRank dễ dàng, hiệu Cả đồ thị lưu theo ghi Mỗi ghi gồm ba trường: trường số nguyên byte lưu id node nguồn; trường thứ hai chiếm byte ghi số lượng liên kết trang web Trường cuối danh sách số nguyên tưong ứng với trang web đích id nguồn (4 byte) Số liên kết (4 byte) Danh sách id đích (4 byte phần tử) 45; 1889 832 12; 1026 236; 2501; 12042 … - 57 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Với cách tổ chức này, dung lượng lưu trữ đồ thị chiếm là: 4*(2*V + E) byte, V số node đồ thị E số cạnh Bảng băm Một vấn đề gặp phải thực tínhtoánPageRank việc gán id cho node (các trang web) đồ thị Do trình thu thập liệu (web crawling) thực môi trường phân tán nên việc gán id cách liên tục cho trang web điều khó khăn Ngoài với mục đích chống trùng cho URL lấy về, id trang web sinh trực tiếp cách băm URL để tạo số byte, đảm bảo hai trang web khác có id khác Hệ thống id ngẫu nhiên trì cho việc mở rộng đồ thị sau Tuy nhiên việc lại lại gây khó khăn cho giai đoạn tínhPageRank ta xây dựng hai mảng giá trị PageRank mà id trang đồng thời vị trí phần tử mảng Một hướng giải gán lại id cho toàn trang web đồ thị cho chúng liên tiếp nhau, việc phức tạp với đồ thị web lớn phải trì cấu trúc liệu lớn ánh xạ hai hệ thống id Chính lý này, trình tínhtoánPageRank xây dựng bảng băm làm nhiệm vụ ánh xạ id trang web giá trị PageRank chúng Bảng băm gồm nhiều bucket, node phân chia vào bucket theo hàm băm hàm modulo Cấu trúc lưu trữ chi tiết mô tả sau: Hình 14: Cấu trúc bảng băm - 58 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Gọi B số lượng bucket bảng băm Bảng băm mảng liên tục chia làm phần Phần đầu ghi kích thước bucket, tức số lượng phần tử bucket Phần thứ hai lưu vị trí phần tử bucket mảng Số lượng phần tử hai phần số lượng bucket (B) Phần thứ ba bảng băm lưu phần tử bảng Các phần tử bucket đặt liên tiếp tạo thành danh sách Mỗi phần tử bảng bao gồm thông tin: id trang web, giá trị PageRank thứ giá trị PageRank thứ hai Để truy cập vào phần tử mảng băm ta dựa vào giá trị để xác định bucket tương ứng phần tử bucket Sau ta duyệt phần tử danh sách tương ứng bucket tìm phần tử mong muốn Ví dụ, ta muốn lấy hai giá trị PageRank node: void get_entry(unsigned int *hashtable, int num_bucket, unsigned int value, int k, unsigned int *result) { int bucket_index = value % num_bucket; int bucket_size = hashtable[bucket_index]; int start_index = hashtable[num_bucket + bucket_index]; int iter = start_index; for (int i = 0; i < bucket_size; i++, iter += 3) { if (hashtable[iter] == value) { *result = hashtable[iter + k + 1]; return; - 59 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 } } *result = -1; } Xây dựng bảng băm Việc xây dựng bảng băm thực CPU, để giảm thời gian cho trình thực thi GPU Việc xây dựng bảng băm chia làm bước Ở bước thứ nhất, đếm số lượng phần tử bucket Các luồng GPU duyệt qua id, tìm bucket tương ứng với id tăng giá trị biến lên Lúc này, ta lại sử dụng hàm nguyên tử để giải vấn đề đụngđộ luồng GPU Thao tác tăng biến đếm bucket hàm atomicAdd để đảm bảo hai luồng thực thao tác bucket kết đạt mong muốn Bước thứ hai, ta tính vị trí phần tử bucket bảng băm Vì phần tử bucket nằm liên tiếp bảng băm tạo thành danh sách nên vị trí phần tử bucket mảng prefix sum số lượng phần tử bucket mà ta thu bước 1.Sử dụng giải thuật rút gọn (reduce) thực GPU để thu mảng prefix sum Sau thu mảng prefix sum, ta xây dựng phần lại cách đưa id vào danh sách bucket tương ứng Vị trí phần tử cần đưa vào xác định thông qua vị trí phần tử bucket tính bước số lượng phần tử có bucket Sau đưa phần tử vào bảng băm, luồng GPU tăng giá trị đếm ghi lại số phần tử có bucket tương ứng Ở ta lại sử dụng hàm nguyên tử atomicAdd để thao tác cộng an toàn môi trường đa luồng - 60 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Hình 15: Các bước xây dựng bảng băm - 61 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 CHƯƠNG 4: THỬ NGHIỆM VÀ ĐÁNH GIÁ Thử nghiệm Hai chương trình tínhtoánPageRank CPU GPU xây dựng triển khai thực trung tâm tínhtoán hiệu cao trường Đại học Bách khoa Hà Nội Môi trường thử nghiệm bao gồm máy PC trang bị: - Bộxửlý Intel Core Quad Q8400 2.66 GHz - 8GB RAM - Card đồhoạ NVIDIA GeForce GTX 295 - Card đồhoạ NVIDIA Tesla C1060 - Hệ điều hành Centos OS 5.3 Trên CPU, xây dựng hai chương trình thử nghiệm: chương trình thứ chạy đơn tiến trình chương trình thứ hai dùng luồng tínhtoán để tận dụng tối đatoàn core xửlý Giải thuật đa luồng CPU tương tự giải thuật GPU Một vấn đề cần có thao tác CPU tương đương với thao tác nguyên tử atomicAdd GPU Hệ thống Linux cung cấp hàm sync_fetch_and_add có chức giống hàm atomicAdd Cũng giống atomicAdd, hàm sync_fetch_and_add thao tác số nguyên Vì giá trị PageRank phải biến đổi làm tínhtoán GPU Để kiểm tra khả tăng tốc mạnh mẽ GPU, thực hai thử nghiệm hai tập liệu có kích thước khác Thử nghiệm thứ tiến hành tập liệu nhỏ đủ để chứa toàn vùng nhớ card GeForce GTX 295 Tập liệu vào đồ thị web xây dựng từ tập web tiếng Việt lấy - 62 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 khoảng thời gian tháng đến tháng năm 2011 Bộ liệu chứa khoảng triệu trang Web 132 triệu liên kết, chiếm lượng nhớ 560 MB Việc đánh giá thực giá trị khác GPU CPU (4 threads) CPU (1 thread) Tỷ lệ tăng loop time (s) 0.5 7.95219 0.55 0.6 loop time (s) tốc Tỷ lệ tăng loop time (s) tốc 106.5282 13.40 169.70412 21.34 7.9423 107.36414 13.52 172.44797 21.71 9.53457 132.56298 13.90 200.07801 20.98 0.65 11.12783 152.05592 13.66 235.32566 21.15 0.7 12.71391 171.45704 13.49 281.67883 22.16 0.75 10 15.90399 10 212.76107 13.38 10 345.36528 21.72 0.8 13 20.65815 13 281.89566 13.65 13 450.79935 21.82 0.85 17 27.01436 17 365.96145 13.55 17 587.89404 21.76 0.9 27 42.91829 27 575.63278 13.41 27 939.11324 21.88 0.95 53 84.24406 53 1130.68644 13.42 53 1835.97381 21.79 Bảng 1: Kết thử nghiệm thứ Thử nghiệm thứ hai thực tập liệu lớn với đồ thị web có kích thước gần 15 triệu trang Web 200 triệu liên kết, tổng dung lượng 2,4 GB Do liệu có kích thước lớn nên thử nghiệm sử dụng card Tesla C1060 với kích thước vùng nhớ toàn cục GB (so với 900 MB card GeForce GTX 295) - 63 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 GPU loop time (s) 0.5 24.50425 0.55 30.62549 0.6 30.6285 0.65 36.71709 0.7 42.8767 0.75 48.95878 0.8 55.08065 0.85 13 79.60855 0.9 19 116.33662 0.95 35 214.31183 CPU (4 threads) CPU (1 thread) Tỷ lệ tăng Tỷ lệ tăng tốc loop time (s) tốc loop time (s) 181.61226 7.41 520.28578 21.23 226.66075 7.40 663.04185 21.65 227.1853 7.42 666.47616 21.76 272.76377 7.43 765.18415 20.84 316.21086 7.37 949.29013 22.14 363.35792 7.42 1033.51984 21.11 409.29902 7.43 1195.25015 21.70 13 588.67833 7.39 13 1737.05856 21.82 19 860.21774 7.39 19 2532.64821 21.77 35 1597.69592 7.46 35 4656.99606 21.73 Bảng 2: Kết thử nghiệm thứ hai Đánh giá Kết thử nghiệm thứ cho thấy hiệu tínhtoánPageRank tăng đáng kể thực GPU: tăng 13 lần so với chạy luồng GPU, 22 lần so với việc tínhtoándùng luồng CPU Ở thử nghiệm thứ hai, tốc độtínhtoán GPU tăng không nhiều so với thử nghiệm thứ nhất, khoảng 7,4 lần Trong đó, so với chương trình chạy luồng CPU, chương trình chạy GPU có tốc độ lớn gấp 21 lần Cũng qua thử nghiệm ta thấy tác động tham số tới trình tínhtoánPageRank Giá trị lớn, số vòng lặp nhiều Điều với lý thuyết đề cập tới - 64 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Đồ án nghiên cứu, tìm hiểu lý thuyết PageRankứngdụng Máy tìm kiếm, cách thức xây dựngcông thức PageRank, biểu diễn toán học toánCác thử nghiệm ứngdụngcôngnghệtínhtoánđadụng GPU việc giải toántínhtoánPageRankĐồ án đề xuất giải thuật có khả tínhtoán song song cao GPU để giải toánCác kết thử nghiệm cho thấy khả tăng tốc đáng kể áp dụng giải thuật song song GPU so với giải thuật lõi CPU (22 lần) lõi CPU (từ đến 13 lần) Hướng phát triển Các thử nghiệm GPU cho toánPageRank thực lượng liệu nhỏ lưu trữ đủ nhớ chung GPU Cáctoán thực tế có lượng liệu lớn khó áp dụng cách hiệu Do đó, hướng phát triển tìm hiểu phương pháp tínhtoán khác xửlý khối lượng liệu lớn Với toán vậy, sử dụng GPU không hiệu quả, giải pháp multi-GPU hay cụm tínhtoán GPU (cluster GPU) hướng mở rộng đáng quan tâm Ngoài ra, từ nghiên cứu phát triển tiếp việc ứngdụng GPU cho phương pháp xếp hạng trang web dựa cấu trúc siêu liên kết khác (HITS, TrustRank,…), từ kiểm nghiệm khả giải toán khai phá web côngnghệ GPGPU - 65 - ỨngdụngcôngnghệtínhtoánđadụngxửlýđồhoạtoánPageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 TÀI LIỆU THAM KHẢO L Page, S Brin, R Motwani, T Winograd (1999), "The PageRank Citation Ranking: Bringing Order to the Web", Technical Report, Stanford InfoLab Amy N.Langville, Carl D.Meyer (2006), Google's PageRank and Beyond: The Science of Search Engine Rankings, Princeton University Press, New Jersey, pp 1-55 Bundit Manaskasemsak, Amon Rungsawang (2004), "Parallel PageRank Computation on a Gigabit PC Cluster", In Proceedings of 18th International Conference on Advanced Information Networking and Application Bundit Manaskasemsak, Amon Rungsawang (2005), "An Efficient PartitionBased Parallel PageRank Algorithm", In Proceedings of 11th International Conference on Parallel and Distributed Computing A Arasu, J Novak, A Tomkins, J Tonlin (2002), "PageRank Computation and the Structure of the Web: Experiments and Algorithms", In Proceedings of the 11th World Wide Web Conference S Brin, L Page (2008), "The Anatomy of a Large-scale Hypertextual Web Search Engine", In Proceedings of the 7th World Wide Web Conference NVIDIA (2009), NVIDIA CUDA Programming Guide 2.2.1 C Ding, X He, P Husbands, H Zha, H Simon (2001), "PageRank, HITS and a Unified Framework for Link Analysis", Techinical Report J M Kleinberg (1999), "Authoritative sources in a hyperlinked environment", J ACM - 66 - ... để ứng dụng vào toán tính toán PageRank - 20 - Ứng dụng công nghệ tính toán đa dụng xử lý đồ hoạ toán PageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 CHƯƠNG 2: GPU VÀ CÔNG NGHỆ TÍNH TOÁN ĐA DỤNG... việc ứng dụng công nghệ tính toán đa dụng xử lý đồ họa (GPGPU – General Purpose Computation on Graphic Processing Units) cho toán PageRank GPGPU [7] công nghệ sử dụng xử lý đồ hoạ (GPU) để thực ứng. .. công thức dạng ma trận: - 11 - Ứng dụng công nghệ tính toán đa dụng xử lý đồ hoạ toán PageRank Phạm Nguyễn Quang Anh – CHCNTT 2009 Các công thức (1) (2) tính PageRank cho trang thời điểm Sử dụng