Ứng dụng tính tốn đa dụng xử lý đồ họa đa lõi vào tăng tốc toán PageRank Nguyễn Anh Tú Tóm tắt PageRank, phương pháp đánh giá độ quan trọng trang web dựa siêu liên kết, tảng cho việc xếp hạng trang web máy tìm kiếm Google nhiều máy tìm kiếm khác Tuy nhiên, việc tính tốn PageRank thách thức khơng nhỏ số lượng website ngày lớn (ước tính 40 tỷ trang) Đồng thời, mơi trường World Wide Web lại có thay đổi liên tục cấu trúc liên kết số lượng trang web Trong đó, để phục vụ cho truy vấn, giá trị PageRank cuả trang web lại phải cập nhật liên tục cần thực khoảng thời gian ngắn Bài báo đưa cách tiếp cận sử dụng lực tính tốn song song lớn xử lý đồ họa đa lõi để tăng tốc trình tính tốn PageRank Bài báo trước hết sử dụng định dạng gọi binary link structure file [3] để lưu trữ liệu đồ thị web Sau tiến hành song song hóa giải thuật PageRank để thực tính tốn lõi GPU Chương trình viết ngôn ngữ CUDA thử nghiệm hệ thống trang bị card kép NVIDIA Geforce GTX 295 (tổng cộng 4GPU), sử dụng liệu thực tế tập trang web tiếng việt crawling Việt Nam từ tháng 1/2011 tới tháng 2/2011, gồm triệu trang web, 132 triệu liên kết Các kết thử nghiệm cho thấy chương trình tính PageRank song song nhanh từ 10 lần (1GPU) đến 20 lần (4GPU) so với phiên CPU Intel Core Quad Q8400 2.67GHz Kết minh chứng khả ứng dụng cơng nghệ tính tốn xử lý đồ họa lĩnh vực tính tốn PageRank Từ khóa CUDA, GOOGLE, GPGPU, PAGERANK I GIỚI THIỆU Máy tìm kiếm (Search Engine) cơng cụ khơng thể thiếu thời đại thông tin, giúp người dùng tìm kiếm thơng tin cần cách nhanh chóng xác Internet Hầu hết máy tìm kiếm áp dụng phương pháp xếp hạng để đưa kết tốt lên đầu Trên thực tế, việc xếp thực dựa theo hai tiêu chí: nội dung độ quan trọng trang 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 thứ hạng cho chúng Nhiều phương pháp đưa để đánh giá độ quan trọng trang web, nhiên có phương pháp cho thấy vượt trội, dựa vào việc phân tích cấu trúc siêu liên kết (hyperlink) trang web Năm 1998, Sergey Brin Larry Page đưa cơng thức tính độ quan trọng dựa siêu liên kết gọi PageRank [1] PageRank Cơng trình thực bảo trợ Trung tâm tính tốn hiệu cao – trường Đại học Bách Khoa Hà Nội Nguyễn Anh Tú, sinh viên lớp Truyền thơng Mạng máy tính, khóa 52, Viện Công nghệ thông tin Truyền thông, trường Đại học Bách Khoa Hà Nội (điện thoại: 0166.639.29.68, e-mail: ng.tuna@gmail.com) © Viện Công nghệ thông tin Truyền thông, trường Đại học Bách Khoa Hà Nội trở thành tảng cơng cụ tìm kiếm Google cho thấy vượt trội so với phương pháp dựa phân tích cấu trúc liên kết khác PageRank thường tính tốn offline suốt q trình xử lý Web Crawler [2] trước câu truy vấn thực Việc tính tốn PageRank ngày trở thành thách thức không nhỏ đồ thị web ngày lớn (ước tính lên tới 40 tỷ trang web) Bên cạnh đó, đặc điểm World Wide Web tính động, có nghĩa nội dung số lượng trang web thường thay đổi liên tục, dẫn đến thay đổi liên kết trang web tương ứng thay đổi cấu trúc trang web Trong đó, để phục vụ cho truy vấn, giá trị PageRank trang web lại phải cập nhật liên tục cần thực khoảng thời gian ngắn Trong vài năm gần đây, xu hướng nhằm tăng cường lực tính tốn hệ thống máy tính với chi phí hợp lý sử dụng xử lý đồ họa (GPU) nhiều lõi phục vụ cho nhu cầu phi đồ họa Với thiết kế đặc thù cho tính toán diễn họa, xử lý đồ họa thường có lực tính tốn lớn, chí đạt tới hàng TFLOPS, cao nhiều lần so với máy tính cá nhân đơn CPU đơn lõi, dù mạnh Sự gia tăng lực tính tốn GPU với phát triển môi trường lập trình CUDA, Brook+ mở cho hướng tính tốn hiệu cao: tính tốn đa dụng xử lý đồ họa (GPGPU – General-purpose computation on Graphic Processing Units) Bài báo tập trung vào việc cải thiện thời gian tính tốn PageRank việc song song hóa thao tác tính tốn giá trị PageRank website thread GPU Kết thử nghiệm với liệu thực tế, tập triệu trang web tiếng việt, 132 triệu liên kết thu thập Việt Nam từ tháng 1/2011, cho thấy phiên song song nhanh 10 lần (1GPU) tới 20 lần (4GPU) so với phiên CPU Bài báo trình bày sau: Phần II đưa mô tả kết nghiên cứu công bố lĩnh vực tính tốn PageRank Phần III mơ tả lý thuyết toán PageRank, định nghĩa cấu trúc lưu trữ binary link structure file Phần IV mô tả chi tiết việc áp dụng GPGPU tính tốn PageRank Phần V kết thử nghiệm, phần VI kết luận báo II NHỮNG KẾT QUẢ NGHIÊN CỨU ĐÃ CƠNG BỐ Các cơng trình nghiên cứu cơng bố lĩnh vực tính tốn PageRank tập trung khai thác sức mạnh tính tốn hệ thống song song phân cụm Cluster Computing Nhìn chung, trọng tâm nghiên cứu giảm chi phí truyền thông, phân chia liệu hiệu đạt tốc độ hội tụ nhanh Zhu [4] sử dụng phương pháp lặp để tăng tốc tính tốn PageRank môi trường phân tán Greenwald Wicks [5] xếp lại ma trận liên kết giảm số phép nhân vector với ma trận, kết giảm khối lượng tính tốn tổng chi phí truyền thơng Gleich [6] mơ hình hóa việc tính tốn PageRank hệ thống tuyến tính đánh giá hiệu suất tính tốn PageRank hệ thống 70 node tính tốn theo mơ hình Beowulf cluster Một đóng góp khác Wu [7] thực card đồ họa AMD sử dụng mơ hình lập trình OpenCL, ơng chủ yếu tập trung vào việc song song hóa q trình nhân vector với ma trận Phương pháp Cevahir [8] triển khai hệ thống GPU Cluster với 100 node tính tốn Bài báo tác giả tập trung vào thực việc song song hóa trình tính tốn PageRank với thread tính tốn cho node, sử dụng phương pháp lặp, triển khai hệ thống gồm card kép NVIDIA Geforce GTX 295 (tổng cộng 4GPU) III CƠ SỞ LÝ THUYẾT A Bài tốn Pagerank A.1 Cơng thức ngun thủy 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 web B ghi nhận A B Do đó, trang có nhiều giới thiệu (được xác định qua số liên kết vào) phải quan trọng trang có liên kết vào Tuy nhiên, trạng thái trang web giới thiệu cần xét tới, tức trọng số trang web giới thiệu nhỏ trang có nhiều liên kết ngược lại Tóm lại, trang có rank cao tổng số rank liên kết vào cao Điều với hai trường hợp trang có nhiều liên kết vào trang có vài liên kết vào có trọng số cao Gọi ( ) PageRank trang Giá trị tổng PageRank trang web trỏ tới ( )=∑ ( ) | | (1) Trong đó, tập trang trỏ đến | | số lượng liên kết Vấn đề với công thức giá trị ( ), PageRank trang web trỏ tới chưa tính tốn Để giải vấn đề này, Brin Page sử dụng phương pháp lặp Họ giả sử ban đầu tất trang web có giá trị PageRank (là ⁄ với n tổng số lượng trang web có được) Cơng thức (1) áp dụng cách thay giá ( ) trị PageRank lần lặp trước vào ( ) Goi PageRank trang vịng lặp k+1 Ta có: ( )=∑ ( | ) | (2) Quá trình bắt đầu với ( ) = cho tất trang lặp lại giá trị PageRank hội tụ đến giá trị cuối A.2 Biểu diễn công thức dạng ma trận Các cơng thức (1) (2) đưa dạng ma trận để thuận tiện cho tính tốn Định nghĩa ma trận H ma trận với = ⁄| | có cạnh từ node i tới node j, ngược lại Như vậy, phần tử khác hàng i tương ứng với liên kết trang i, phần tử khác cột i tương ứng với liên kết vào trang i Như vậy, vịng lặp ta tính vector PageRank, kích thước kí hiệu , lưu giữ giá trị PageRank toàn trang web có Với phương pháp lặp, người ta định nghĩa vector ( ) vector PageRank vòng lặp thứ k Như vậy, cơng thức (2) viết lại thành: ( ) = ( ) (3) Có nhận xét ma trận H thưa (phần lớn phần tử 0) hầu hết trang web trỏ tới lượng nhỏ trang web khác Do đó, phép nhân vector với ma trận H có ( )), ( ) số độ phức tạp thực tế O( lượng phần tử khác ma trận H Brin Page ban đầu khởi tạo trình lặp với ( ) = ⁄ , với vector hàng đơn vị Tuy nhiên, có vấn đề sử dụng công thức (3) vũng rank Có nghĩa trang web tích lũy ngày nhiều PageRank sau vòng lặp, chiếm gần hết điểm số trang khác mà không chia sẻ Như vậy, số node thu hút hầu hết PageRank, node cịn lại có điểm số xếp hạng cho chúng A.3 Những điều chỉnh cho công thức nguyên thủy Để khắc phục nhược điểm công thức nguyên thủy, Page Brin đưa số điều chỉnh Vấn đề vũng rank đề cập xảy số node khơng có liên kết (gọi node treo) Khi đó, thực tế người duyệt web nhảy tới node khác Như vậy, ma trận siêu liên kết, hàng gồm toàn số thay 1/n (là xác suất nhảy ngẫu nhiên tới node khác gặp node treo) ( ⁄ ), Ta định nghĩa ma trận S: i node treo, ngược lại Vector nhị phân a gọi vector node treo Sự điều chỉnh đảm bảo S ngẫu nhiên Tuy nhiên, điều không đảm bảo kết hội tụ mong muốn Brin Page đưa thêm điều chỉnh sau: người duyệt web theo cấu trúc siêu liên kết web, có thời điểm họ cảm thấy chán bỏ cách duyệt web theo siêu liên kết mà nhập địa vào địa trình duyệt Khi việc xảy ra, người duyệt web ngẫu nhiên "nhảy" đến trang mới, từ tiếp tục duyệt web theo siêu liên kết lần nhảy tiếp theo, tiếp tục Để mơ hình hố hoạt động này, Brin Page đưa ma trận G: ( ) Trong đó, α số thực khoảng [ ] Nó tham số định tỷ lệ thời gian người duyệt web ngẫu nhiên theo siêu liên kết thời gian nhảy ngẫu nhiên Giả sử α=0,6 60% thời gian người duyệt web ngẫu nhiên theo siêu liên kết 40% thời gian nhảy đến trang ngẫu nhiên Tham số α đóng vai trị định tới tốc độ hội tụ phương pháp lặp PageRank Ta biến đổi chút: ( ) ⁄ ) ( ) = ( ( ( ) ) ⁄ = Tóm lại, cơng thức PageRank là: ( ) = ( ) Ma trận G gọi ma trận Google Ta biến đổi chút công thức sau: ( ) = ( ) ( ) = ( ) ( ) = ( ( ) ) (4) Việc sử dụng phương pháp lặp có số ưu điểm sau đây: Việc tính tốn PageRank khơng phụ thuộc vào ma trận, việc lưu trữ xử lý ma trận hệ số Lợi điểm lưu trữ Ngoài ma trận thưa H vector node treo a, ta cần lưu trữ thêm vector ( ) Vector hoàn toàn đặc, nghĩa n số thực cần lưu trữ Số lượng vòng lặp cần cho tính tốn cần khoảng 50-100 vịng lặp trước hội tụ vector PageRank có độ xác xấp xỉ chấp nhận Mỗi vịng lặp phương pháp có độ phức tạp O( ) ma trận H thưa Kết phương pháp lặp có độ phức tạp tính tốn tuyến tính phương pháp hiệu B Binary link structure file Đầu vào PageRank đồ thị web trang web node siêu liên kết tạo nên cạnh đồ thị Để phục vụ cho tính tốn, URL mà Web Crawler thu thập băm thành số nguyên byte gọi ID, nhằm phục vụ cho lưu trữ đảm bảo hai URL khác có hai ID khác Sau trình thu thập, kết nhận đồ thị web mô tả sau: Số liên kết (4 byte) ID nguồn (4 byte) 3345 342 56939 46274 2 Danh sách ID đích (4 byte / phần tử) 45, 1889 832 12, 1026 242, 3563, 19257 … Hình 1: Mô tả cấu trúc lưu trữ đồ thị Cả đồ thị lưu trữ theo ghi Mỗi ghi gồm ba trường: trường ID node nguồn, trường thứ hai chiếm byte ghi số lượng liên kết node Trường cuối danh sách ID tương ứng với trang web đích Với cách tổ chức này, dung lượng lưu trữ đồ thị chiếm là: ( ) byte, V số node E số cạnh IV ÁP DỤNG GPGPU VÀO TÍNH TỐN PAGERANK A Tiền xử lý liệu Dữ liệu đầu vào toán PageRank đồ thị web trang web node siêu liên kết tạo nên cạnh đồ thị Tuy nhiên, có khó khăn việc tham chiếu tới node đồ thị làm ảnh hưởng tới tốc độ tính tốn, hàm băm Web Crawler băm URL số nguyên byte (ID) ID lại khơng liên tục từ tới n-1 Do đó, trước hết tác giả tiến hành tiền xử lý đồ thị cách đánh lại số cho n ID, để chúng ] Chương trình đánh lại số nằm khoảng [ thực CPU mô tả Đầu tiên sử dụng mảng array để lưu trữ n ID tương ứng với n node Như vậy, số số thứ tự ID mảng array Sử dụng hàm QuickSort để xếp mảng theo thứ tự tăng dần Do tính chất hàm băm, khơng có phần tử giống nhau; đó, mảng array sau xếp cho dãy đơn điệu tăng Bài báo sử dụng mảng index để lưu lại vị trí cũ n ID, phục vụ cho việc truy xuất tới phần tử sau Sau đó, tơi tiến hành đọc ID đồ thị web Với ID, chương trình tiến hành tìm kiếm nhị phân mảng array để tìm tới vị trí nó, chắn vị trí ] Vị trí tìm ID số nguyên khoảng [ cho node xét, cập nhật vào đồ thị web ) Giả Độ phức tạp trình đánh lại số ( mã giải thuật sau: for i = to n-1 { // tạo mảng array gồm ID n node nguồn } /* xếp tăng mảng array lưu ý giữ lại số cũ để phục vụ cho truy xuất sau */ QuickSort(array); for i=1 to graph_size { fread(node); //đọc ID node nguồn binary_search(node, array, new_index); graph_new += new_index; fread(link_out); //đọc link_out graph_new += link_out; for j=1 to link_out { fread(node); //đọc ID node đích binary_search(node, array, new_index); graph_new += new_index; } } Hình 2: Chương trình đánh lại số cho đồ thị Web B Giải thuật Để tính tốn PageRank, tác giả sử dụng cơng thức tính đưa theo ma trận H: ( ) ( ( ) ) Vế phải cơng thức chia làm ba số hạng: ( ) ( ) ) , ( Ngồi tốn hạng cuối số, việc tính tốn hai tốn hạng đầu cần sử dụng kết tính tốn vịng lặp trước (PageRank tính từ vịng lặp cuối) Việc tính tốn hạng suy trực tiếp từ công thức (1) Việc nhân ma trận với vector ( ) có độ phức tạp O( ) H ma trận thưa Giải thuật trình bày sau: ( ) while ( ( ) ) //điều kiện hội tụ { // Đặt lại giá trị PageRank (O(V)) for i = to n – { ( ) } foreach //duyệt cạnh đồ thị (O(E)) { ( ) ( ( ) ) | | } foreach { //duyệt qua node treo ( ) } //cộng số hạng thứ for i = to n – { ( ) ( ) ( ) } } Hình 3: Giải thuật tính PageRank tất luồng GPU phải truy cập đến biến chung Một cách tiếp cận dùng giải thuật PrefixSum [9] để tính tổng Nhưng nhận xét số lượng node treo đồ thị web khơng lớn, tơi lựa chọn phương án khác: sử dụng thao tác nguyên tử kết hợp việc giá trị dangling_value vào q trình duyệt cạnh để tính số hạng bước thứ Phương pháp tỏ hiệu hai lý do: thứ nhất, nói, tỷ lệ node treo đồ thị khơng lớn, xác suất để hai luồng truy cập vào hai node treo không nhiều, ta sử dụng thao tác nguyên tử khả đụng độ hai luồng thấp, nhờ giữ tính song song cao q trình tính tốn; thứ hai, ta khơng phải tốn thêm nhớ để lưu trữ node treo (chỉ cần xét số liên kết duyệt đồ thị) nhớ trình thực giải thuật PrefixSum 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ử vector PageRank Khác với bước thứ nhất, cơng đoạn tính tốn cuối khơng có đụng độ luồng đạt mức độ song song tối đa Giải thuật tính tốn GPU sau: ( ) while (| ( ) | ) //điều kiện hội tụ { //đặt lại giá trị PageRank for i = to n – in parallel { Trong q trình thực tính tốn, chương trình lưu trữ hai mảng thể hai vector ( ) ( ) Sau vòng lặp kết thúc, giá trị mảng ( ) copy mảng ( ) , sau đặt tồn giá trị để phục vụ cho lần lặp Độ phức tạp giải thuật theo tính tốn O(V+E), V số node E số cạnh đồ thị C Hướng song song hóa Nhận thấy, giai đoạn tính tốn vịng lặp giải thuật song song hố cách phân cho nhiều luồng GPU Về lý thuyết thao tác vector PageRank có kích thước n, ta sử dụng p luồng với p = n để thực toàn vector lúc Tuy nhiên giới hạn phần cứng nên p thường nhỏ so với n; để thực tính tốn song song chương trình gọi nhiều lần, lần tạo p luồng, luồng xử lý phần tử vector Để tính số hạng thứ nhất, luồng GPU duyệt node thời điểm, node có danh sách cạnh node Luồng GPU duyệt qua cạnh lấy giá trị PageRank node xét vịng lặp trước (k) đóng góp vào giá trị PageRank tổng node mà trỏ tới theo cơng thức tính tổng (1) ( ) } for i = to n – in parallel { if | | { foreach { ( ) ( ( ) ) | | } } else { //node treo //atomicAdd ( ) } } for i = to n – in parallel /*cộng số hạng thứ */ { ( ) ( ) } } Hình 5: Giải thuật song song GPU C.1 Hàm nguyên tử atomicAdd Hình 4: Tính PageRank nhiều luồng GPU Theo bước thứ hai giải thuật tuần tự, ta tính giá trị dangling_value tạo node treo Tuy nhiên, áp dụng phương pháp tính giải thuật ta khơng thể song song hoá thao tác Lý Trong giải thuật, tác giả sử dụng hàm có sẵn CUDA gọi hàm nguyên tử atomicAdd Bởi vì, việc tính tốn PageRank nhiều luồng GPU có xảy đụng độ, hai hay nhiều node trỏ tới node Khi đó, hai luồng đồng thời truy cập vào node để cộng dồn giá trị PageRank Hàm atomicAdd chất chế khóa hiệu để hóa việc truy cập vào node Hàm đọc từ 32bit địa tồn cục shared, cộng số ngun vào đó, ghi kết trở lại địa Trong toàn q trình, có luồng thực lệnh atomicAdd truy cập vào địa chỉ, không luồng khác truy cập vào địa thao tác kết thúc Tuy nhiên, có vấn đề nghiêm trọng áp dụng hàm nguyên tử để tính tốn, hàm dùng cho số nguyên Trong đó, giá trị PageRank lại giá trị thực nằm khoảng ( ) Để khắc phục, tác giả biến đổi giá trị PageRank thành giá trị nguyên mà không ảnh hưởng tới độ xác u cầu tốn Tác giả định nghĩa vector PageRank ( ) : ( ) node nhất, node chứa giá trị lớn phần tử mảng ( ) ( ) Tức là giá trị với dấu phẩy dịch phải w chữ số Nhân vế công thức (4) với ta được: ( ) ( ) ( ( ) ( ) ) Lúc tính tốn thực vector thay Các phép chia làm trịn số ngun Càng dịch phải nhiều độ xác mà ( ) biểu diễn nhiều ( ) ngày lớn Có nghĩa là, tham số w phải chọn cách hợp lý để đảm bảo độ xác phép tốn mà không gây tràn số Với số trang web lên tới hàng triệu, báo đặt Khi giá trị ), khoảng an tồn cho nằm khoảng ( phép tốn cơng thức C.2 Điều kiện dừng ( ) Điều kiện trì vịng lặp (| ( ) | ), tức khoảng cách vector PageRank hai vòng lặp liên tiếp lớn ngưỡng xác định Ở đây, tác giả chọn cơng thức Chebyshev[10] để tính khoảng cách Theo đó, khoảng cách hai vector chênh lệch lớn hai giá trị chiều: | |= (| |) Như việc tính khoảng cách Chebysev thực tìm ) phần tử lớn tập phần tử ( 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ì cịn 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ị chấp nhận Như đề cập phần trên, giá trị PageRank thao tác ( ) ( ) với giá trị tương ứng Trên GPU, tác giả dùng giải thuật scan [11] để tính PrefixSum Đầu tiên 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 Chương trình 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) Ý 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 Hình 6: Giải thuật scan tìm max phần tử Với n phần tử, số block ⌈ ⌉ Mỗi block tương ứng block tính tố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 mảng ⌈ ⌉ phần tử ghi lại giá trị lớn block Với mảng này, ta tiếp tục áp dụng việc chia block thực scan block Quá trình lặp lại cịn block ta tìm phần tử lớn block đó, phần tử lớn mảng ban đầu V KẾT QUẢ THỬ NGHIỆM VÀ ĐÁNH GIÁ A Thử nghiệm Hai chương trình tính tốn PageRank CPU GPU xây dựng triển khai thực trung tâm tính tố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 server trang bị: - Bộ xử lý Intel Core Quad Q8400 2.67GHz - 8GB RAM - card đồ họa kép NVIDIA GeForce GTX 295 - Hệ điều hành CentOS 5.3 A.1 Phiên CPU Phiên chạy CPU xây dựng với hai chương trình Một chương trình đơn giản sử dụng luồng để tính tốn theo giải thuật đề cập Một chương trình dùng luồng tính tốn để tận dụng tối đa toà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 tự 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 tương tự hàm atomicAdd Cũng giống atomicAdd GPU, hàm sync_fetch_and_add thao tác số nguyên Vì vậy, giá trị PageRank phải biến đổi làm tính tốn GPU A.2 Phiên GPU Trong đề tài, tác giả viết hai phiên chạy GPU, phiên chạy GPU phiên chạy GPU Đối với phiên chạy GPU, liệu đồ thị web tải từ CPU lên GPU, sử dụng mảng để tính tốn cho lần lặp k k+1 (tương ứng với hai vector ( ) ( ) ) Đối với phiên chạy 4GPU, liệu phân chia sau: Đồ thị web chia làm bốn phần nhau, phần tải lên nhớ GPU Chương trình sử dụng hai mảng tương ứng hai vector ( ) ( ) Tuy nhiên, vịng lặp, GPU tính tốn phần tư vector ( ) , tương ứng với phần tư đồ thị web chứa GPU Kết thúc vòng lặp, bốn vector ( ) GPU truyền CPU để trộn lại, trước truyền ngược lại lên GPU truyền vào vector ( ) Để kiểm tra khả tăng tốc mạnh mẽ GPU, tác giả thực thử nghiệm với liệu đồ thị web xây dựng từ tập web tiếng việt thu thập khoảng thời gian từ 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 A.3 Kết thử nghiệm Việc đánh giá thực giá trị α khác Thời gian tính tốn đo đơn vị giây (s) CPU CPU Single Multi α thread threads GPU GPU (4) 0.5 29.19165 15.76771 3.01419 1.60587 0.6 34.97308 18.90085 3.60987 2.05013 0.7 46.57511 25.19583 4.82156 2.62897 0.75 58.37653 31.62574 6.01332 3.45451 0.8 75.73101 40.95702 7.81736 4.60283 0.85 99.06957 53.49526 10.24953 5.59358 0.9 157.2996 85.28265 16.24351 8.29304 0.95 309.1649 167.2162 31.89439 16.17999 Hình 7: Bảng hiển thị kết thời gian tính tốn với bốn phiên Hình 8: Biểu đồ so sánh thời gian tính toán bốn phiên B Đánh giá Kết thử nghiệm cho thấy hiệu tính tốn PageRank tăng đáng kể thực GPU: tăng 10 lần so với chạy 1GPU 20 lần so với việc tính tốn 4GPU Thử nghiệm cho thấy tác động tham số α tới q trình tính tốn Giá trị α lớn, số vòng lặp để đạt tới trạng thái hội tụ nhiều Điều với lý thuyết đề cập VI KẾT LUẬN Bài báo đưa cách tiếp cận sử dụng ưu điểm tính toán song song cực lớn xử lý đồ họa đa lõi nhằm tăng tốc q trình tính toán PageRank, sử dụng hệ thống hai card kép NVIDIA Geforce GTX 295 Giải thuật song song thực dựa biến đổi từ liệu đồ thị trang web thu thập dạng Binary link structure file, tập số tác giả đánh lại Nhờ đó, việc truy xuất tới node đồ thị thực cách trực tiếp, giảm đáng kể thời gian tính tốn Cá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 tuần tự, cụ thể GPU tăng 10 lần GPU 20 lần VII LỜI TRI ÂN Tác giả xin gửi lời chân thành cám ơn tới TS Nguyễn Hữu Đức – giám đốc trung tâm Tính Tốn Hiệu Năng Cao, anh Dương Nhật Tân – cán trung tâm, toàn thể anh chị em trung tâm nhiệt tình giúp đỡ, tạo điều kiện cho tác giả hoàn thành đề tài nghiên cứu VIII TÀI LIỆU THAM KHẢO Brin, S and Page, L “The Anatomy of a Large-Scale Hypertextual Web Search Engine” In: Seventh International World-Wide Web Conference (WWW 1998), April 14-18, 1998, Brisbane, Australia [2] Kobayashi, M and Takeda, K "Information retrieval on the web" ACM Computing Surveys (ACM Press) pp 144–173, 2000 [3] Bundit Manaskasemsak, Amon Rungsawang, "Parallel PageRank Computation on a Gigabit PC Cluster", In Proceedings of 18th International Conference on Advanced Information Networking and Application, 2004 [4] Yangbo Zhu, Shaozhi Ye, and Xing Li, “Distributed PageR-ank computation based on iterative aggregation-disaggregation methods” in Proceedings of the 14th ACM international conference on Information and knowledge management [5] J R Wicks and A Green wald , “More efficient parallel computation of pagerank ,” in SIGIR ’07: Proceedings of the 30th annual international ACM SIGIR conference on Research and development in information retrieval New York , NY, USA : ACM , 2007 ,pp 861 – 862 [6] David Gleich, “Fast parallel PageRank: A linear system approach,” Tech Rep., 2004 [7] Tianji Wu, Bo Wang, Yi Shan, Feng Yan, Yu Wang, and Ningyi Xu, “Efficient PageRank and spmv computation on AMD gpus,” Parallel Processing, International Conference on, vol 0, pp 81–89, 2010 [8] Ata Turk B Barla Cambazoglu Akira Nukada Ali Cevahir, Cevdet Aykanat and Satoshi Matsuoka, “Efficient PageRank on GPU clusters,” 18th Workshop for the evaluation of high-performance computing architecture, 2009 [9] Guy E Blelloch, “Prefix Sums and Their Applications”, School of Computer Science Carnegie Mellon University Pittsburgh, PA 15213 3890 [10] Cyrus D Cantrell “Modern Mathematical Methods for Physicists and Engineers” Cambridge University Press, 2000 [11] Mark Harris “Parallel Prefix Sum (Scan) with CUDA”, nVIDIA, 2007 [1]