CHƯƠNG 2 CÁC THUẬT TOÁN TRÊN ĐỒ THỊ
3.3. Thực nghiệm chương trình
3.3.1. Đăng nhập hệ thống
Ta dùng phần WinSCP để kết nối đến cụm máy tính song song của
ccs1.hune.edu.vn với tài khoản có sẵn.
Sau khi login vào hệ thống ccs1 ta được như hình
Hình 3.10. Giao diện khi đã kết nối 3.3.2.Cách chạy chương trình trên hệ thống ccs1
Dịch chương trình Dijstra và Prim bằng lệnh mpic++dijkstra.cpp-o dijkstra Khi này chương trình thực hiện có tên dijkstra (không có phần đuôi) được tạo ra.
Tạo file dijkstra.script có nội dung
#!/bin/sh
/usr/local/bin/mpiexec /home/son/laund1/dijkstra
Thực hiện chạy song song
Submit file PBS script thông qua lệnh qsub như sau:
qsub –q 11 -1 nodes=2:ppn=4 dijkstra.script Di50.txt
Hệ thống sẽ tạo ra kết quả đầu ra trong file dijkstra.script.o16619
Hình 3.11. Giao diện phần mềm PuTTY
Sau khi login ta được giao diện như sau
Hình 3.12. Giao diện để gõ lệnh của hệ thống
Có 2 cách thực hiện chương trình: chạy tương tác trên nền hệ điều hành (ví dụ
./hello) hoặc thông qua Bộ quản lý chương trình PBS Torque (qsub mpi_hello.script). Nếu chương trình của bạn nhỏ (yêu cầu 1 bộ xử lý, chạy trong thời gian ngắn, và yêu cầu ít bộ nhớ) thì có thể chạy trực tiếp trên hệ điểu hành như ví dụ hello ở trên. Nếu chương trình lớn, đòi hỏi nhiều bộ xử lý, thời gian thực hiện lâu thì phải thực hiện
thông quả Bộ quản lý chương trình PBS Torque
Tất cả các chương trình chạy trên Trung tâm Khoa học tính toán đều nên chạy thông qua PBS Torque (chú ý rằng tất cả chương trình, kể cả chương trình chạy trên 01 bộ xử lý đều có thể thực hiện thông qua PBS) để các tài nguyên của Trung tâm được khai thác hiệu quả và để PBS Torque phục vụ các chương trình của tất cả người sử dụng một cách tối ưu.
3.3.3.Kết quả thu được
Dưới đây là kết quả bài toán Dijkstra với 02 BXL P0 và P1 với thời gian chạy là 0.002539 sescond Bộ xử lý chính (P0) ghi nhớ các đỉnh để tìm đường đi Bộ xử lý phụ (P1)ghi nhớ các đỉnh để tìm đường đi Bộ xử lý chính (P0) tìm chiều dài từ đỉnh 1 đến các đỉnh 1, 2, 3, 4, 5, 6 Bộ xử lý phụ (P1)tìm chiều dài từ đỉnh 1 đến các đỉnh 7, 8, 9, 10, 11, 12
3.3.4.Đánh giá thuật toán
Trong thuật toán song song người ta sử dụng tốc độ (Speedup) để đánh giá thời gian thực hiện của thuật toán song song so với thuật toán tuần tự.
Dữ liệu đầu vào là đồ thị được tạo ngẫu nhiên có đuôi .txt
Hình 3.14. File đầu vào bài toán Dijkstra với 50 đỉnh
Trong đó Speedup (tốc độ)= Ts/ Tp
Ts: Sequential time (Thời gian chạy tuần tự) Tp: Parallel time (Thời gian chạy song song) Bảng đánh giá trên được biểu diễn bằng đồ thị sau:
Bài toán Dijkstra
Chúng tôi tạo đồ thị gồm 1200 đỉnh và cho thực hiện trên 1 bộ xử lý (tuần tự), 2, 4, 6, 8 bộ xử lý thì kết quả được cho ở bảng sau:
Bảng 3.1. Bảng đánh giá thời gian thực hiện thuật toán song song so với thuật toán tuần tự bài toán Dijkstra 1200 đỉnh
Số bộ xử lý 2 4 6 8
Tốc độ
Hình 3.15. Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự bài toán Dijkstra 1200 đỉnh
Chúng tôi tiếp tục tạo thêm đồ thị gồm 2500 đỉnh và cho thực hiện trên 1 bộ xử lý (tuần tự), 2, 4, 6, 8 bộ xử lý thì kết quả được cho ở bảng sau:
Bảng 3.2. Bảng đánh giá thời gian thực hiện thuật toán song song so với thuật toán tuần tự bài toán Dijkstra 2500 đỉnh
Số bộ xử lý 2 4 6 8
Tốc độ (Speedup) 1.5 1.78 1.99 2.09
Hình 3.16. Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự bài toán Dijkstra 2500 đỉnh 1.42 1.68 1.8 2.01 0 0.5 1 1.5 2 2.5 2 4 6 8 Spe ed u p ( tốc đ ộ) Dijkstra Number of processors (số bộ xử lý) Number of processors (số bộ xử lý) 1.5 1.78 1.99 2.09 0 0.5 1 1.5 2 2.5 2 4 6 8 Speedu p (t ốc độ) Dijkstra Number of processors (số bộ xử lý) Number of processors (số bộ xử lý)
Bài toán Prim
Chúng tôi tiếp tục tạo thêm đồ thị gồm 2100 đỉnh và cho thực hiện trên 1 bộ xử lý (tuần tự), 2, 4, 6, 8 bộ xử lý thì kết quả được cho ở bảng sau:
Bảng 3.3. Bảng đánh thời gian thực hiện thuật toán song song so với thuật toán tuần tự bài toán Prim 2100 đỉnh
Số bộ xử lý 2 4 6 8
Tốc độ
(Speedup) 1.45 1.73 1.91 2.05
Hình 3.17. Đồ thị biểu diễn sự đánh giá thuật toán song song so với tuần tự bài toán Prim 2100 đỉnh
Nhận xét: từ đồ thị và bảng kết quả trên, chúng ta nhận thấy rằng tốc độ xử lý được tăng lên đáng kể khi xử lý trên 2 bộ xử lý thì thời gian giảm hơn 1,6 lần so với xử lý tuần tự. 1.45 1.73 1.91 2.05 0 0.5 1 1.5 2 2.5 2 4 6 8 Speedu p (t ốc độ) Prim Number of processors (số bộ xử lý) Number of processors (số bộ xử lý)
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
KẾT LUẬN
Luận văn đã nghiên cứu tổng quát về thuật toán song song và áp dụng cho một số bài toán về đồ thị. Luận văn cũng đã khái quát các khái niệm về thuật toán song song và các vấn đề liên quan đến thuật toán song song, các mô hình song song, môi trường lập trình song song, lý thuyết đồ thị, cách biểu diễn đồ thị trên máy tính, các vấn đề về đường đi, cây bao trùm trên bảng đồ.
Từ các hiểu biết trên luận văn đã nghiên cứu để song song hóa các thuật toán tìm đường đi ngắn nhất (Dijkstra) và cây khung nhỏ nhất (Prim) từ các thuật toán tuần tự truyền thống.
Ngoài ra do còn thiếu kinh nghiệm trong việc phân tích, thiết kế nên kết quả đạt được còn hạn chế.
Qua nghiên cứu đề tài này cũng đã nắm được các kiến thức về xử lý song song, lập trình song song, lý thuyết đồ thị. Tìm hiểu được cách ứng dụng thuật toán song song và đã áp dụng vào một số bài toán cụ thể.
HƯỚNG PHÁT TRIỂN
Sau khi hoàn thành đề tài tôi sẽ tiếp tục nghiên cứu thêm để phát triển đề tài này, cải tiến thêm các thuật toán và áp dụng vào các lĩnh vực như:
⁻ Áp dụng song song hóa các thuật toán Dijkstra, Prim theo mô hình máy tính phân cụm.
⁻ Nghiên cứu mô hình lập trình song song và áp dụng chuyển các thuật toán tuần tự khác về đồ thị sang thuật toán song song.
DANH MỤC TÀI LIỆU THAM KHẢO
Tài liệu Tiếng Việt
[1] PGS.TS Đoàn Văn Ban, TS. Nguyễn Mậu Hân, Xử lý song song & phân tán, Viện Công nghệ Thông tin, 2006.
[2] PGS.TSKH Trần Quốc Chiến, Hồ Xuân Bình, Thuật toán song song tìm luồng cực đại, Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, 5(22)/2007, 37-42
[3] PGS.TSKH Trần Quốc Chiến, Giáo trình Lý thuyết đồ thị, Đại học Đà Nẵng 2007. [4] PGS.TSKH Trần Quốc Chiến, Trần Thị Mỹ Dung, “Ứng dụng thuật toán tìm
đường đi ngắn nhất Đa nguồn đích tìm luồng cực đại đa hàng hóa đồng thời”, kỷ yếu hội thảo khoa học Công nghệ Thông tin, Đại học Sư Phạm Đà Nẳng, 11-2011. [5] Nguyễn Đức Nghĩa, Nguyễn Tô Thành, “ Toán rời rạc “, Nhà Xuất Bản Đại học
quốc gia Hà Nội, 2006
[6] PGS.TS Lê Huy Thập, “ Cơ sở lý thuyết song Song “, Nhà Xuất Bản Thông Tin và Truyền Thông, 2011
[7] Nguyễn Đức Nghĩa, “ Cấu trúc dữ liệu và giải thuật “, Nhà Xuất Bản KHKT Hà Nội, 2013
Tài liệu Tiếng Anh
[1] Tom Wilson, Nicholas Hofbauer, Dijkstra’s Algorithm in Parallel, team report 2008.
[2] A. Grama, A.Gupta, G.Karypis, V.Kumar, “Introduction to Parallel Computing”, 2003
[3] Seyed H. Roosta, Parallel Processing and Parallel Algorithms, Theory and Computation, Springer 1999.
[4] Joseph JáJá, An Introduction to Parallel Algrithms, Addison - Wesley, 1992 [5] Thomas Rauber, Gudula Runger (2013), Parallel Programming: for Multicore and
Cluster Systems, Springer.
[6] JimKeogh(2004),Java Dymistyfied, Chapter 12 Multithreading.
[7] William Gropp et al, MPICH2 User’s Guide Version 1.0.6, Mathematics and ComputerScience Division, Argonne National Laboratory, 2007