6. Phương pháp nghiên cứu
4.2. Kết quả thử nghiệm thuật toán nhánh cận song song giải quyết bài toán lập lịch
lập lịch công việc trên môi trường CPU - GPU.
Thuật toán được thử nghiệm trên hệ thống một máy tính Intel Core 2 Duo 2.66 GHz, RAM 2 GB, card đồ họa GeForce GTX 250 .
Ngôn ngữ sử dụng: Thuật toán được triên khai bằng ngôn ngữ C, sử dụng các hàm trong thư viện CUDA để truyền thông dữ liệu giữa CPU và GPU.
Thử nghiệm:
- Môi trường gồm nhiều máy tính, truyền thông dữ liệu thông qua hàm thư viện MPI.
- Môi trường máy tính gồm CPU và GPU, truyền thông dữ liệu thông qua hàm thư viện CUDA. Thu được một số kết quả như bảng 4.2: Bảng 4.2: Bảng mô tả kết quả thực hiện công việc 2
Công việc/Máy
Thuật toán tuần tự cải
tiến
Thuật toán song song triển khai trên
GPU và CPU
Thuật toán song song triển khai trên môi trường
nhiều máy tính 3 công việc/3 máy 0.003456 0.218000 0.779147
4 công việc/4 máy 0.058664 0.718000 9.377534 5 công việc/5máy 0.490766 1.560000 37.634233 6 công việc/6 máy 9.916246 6.833000 369.530780 7 công việc/7 máy 77.56584 27.75200 1663.936657 8 công việc/8 máy 89.629005 41.71400 *
9 công việc/9 máy 141.547706 57.56400 * 10 công việc/10 máy 477.874597 59.17100 *
Hình 4.2: Đồ thị biểu diễn thời gian xử lý các thuật toán 2
477,874597 59.17100 1663,936657 0 200 400 600 800 1000 1200 1400 1600 1800 3/3 4/4 5/5 6/6 7/7 8/8 9/9 10/10
Thuật toán tuần tự cải tiến
Thuật toán song song triển khai trên GPU và CPU Thuật toán song song triển khai trên môi trường nhiều máy tính
Nhận xét kết quả:
Thuật toán tuần tự cải tiến thực hiện nhanh hơn thuật toán song song khi dữ liệu đầu vào nhỏ, cụ thể từ 5 công việc – 5 máy trở xuống thì việc thực hiện bằng tuần tự cải tiến là tốt hơn. Nhưng nếu dữ liệu đầu vào từ 6 công việc – 6 máy trở lên thì thuật toán tuần tự cải tiến có thời gian hoàn thành bài toán chậm hơn thuật toán song song.
Với kết quả thu được khi tiến hành kiểm thử thuật toán trong bảng 4.2, thuật toán được đề xuất ở mục 3.2.3 triển khai trên hai môi trường CPU-GPU (truyền thông dữ liệu bằng hàm thư viện CUDA) và môi trường nhiều máy tính (truyền thông dữ liệu bằng hàm thư viện MPI). Thuật toán chỉ hiệu quả khi chạy trên môi trường gồm CPU – GPU mà không hiệu quả khi triển khai trên môi trường nhiều máy tính. Vì với thuật toán mục 3.2.3, trong quá trình tìm kiếm nhánh sẽ trải qua các lần lặp liên tục để có thể mở rộng nhánh, Nếu thực hiện trên CPU-GPU thì trong mỗi lần lặp thuật toán phải trải qua giai đoạn mất thời gian sao chép dữ liệu từ RAM đến VRAM để GPU thực hiện thông qua bus do đó chi phí thời gian này không đáng kể, còn thực hiện trên môi trường nhiều máy tính thì với mỗi lần lặp đó trải qua giai đoạn mất thời gian sao chép dữ liệu từ master đến slave thông qua đường truyền mạng nên chi phí thời gian sẽ lớn và đây là yếu tố làm cho thuật toán đề xuất ở mục 3.2.3 chỉ hiệu quả trên môi trường CPU-GPU mà không hiệu quả trên môi trường nhiều máy tính.
KẾT LUẬN
Với mục tiêu chính là tìm ra thuật toán có thể cho ra một lịch trình thực hiện các công việc trên các máy chính xác với thời gian ngắn, thì thuật toán nhánh cận đã được áp dụng để triên khai thực hiện. Thuật toán nhánh cận đã được cải tiến lại và cho ra lịch trình thực hiện các công việc với thời gian hoàn thành nhanh hơn. Bằng cách cải tiến lại quá trình tìm kiếm nhánh, thuật toán nhánh cận cải tiến góp phần loại bỏ nhiều nhánh không khả thi trong quá trình thực hiện. Ngoài ra thuật toán nhánh cận cải tiến còn được phát triển thành thuật toán song song để triển khai trên môi trường tính toán song song và phân tán. Qua quá trình song song thuật toán, điều rút ra được trong quá trình làm luận văn là cần đến hai thuật toán nhánh cận song song để triển khai trên hai môi trường nhiều máy tính và môi trường CPU- GPU không. Do hai môi trường tính toán song song này khác nhau về bản chất nên cùng một thuật toán không thể hiệu quả khi triển khai trên cả hai môi trường CPU- GPU và môi trường nhiều máy tính.
TÀI LIỆU THAM KHẢO Tài liệu tiếng việt
[1] Nguyễn Thị Thùy Linh (2009), “Tính toán hiệu năng cao với bộ xử lý đồ họa
GPU và ứng dụng”, luận văn thạc sĩ, trường Đại học Công nghệ Hà Nội.
[2] Nguyễn Thị Bích Nhật và cộng sự (2008), “Thuật toán nhánh cận trên môi
trường song song”, báo cáo khoa học, trường Đại học Sư phạm Hà Nội.
[3] Lê Minh Hoà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.
[4] Từ Minh Phương, Trịnh Hữu Kiên, Nguyễn Nam Phong (2002), “Thuật toán lập lịch trong môi trường phân tán theo tiếp cận agent”.
[5] Nguyễn Giang Sơn (2000), “Môi trường tính toán song song trên mạng phân
tán không đồng nhất”, luận án thạc sĩ khoa học, trường Đại học Khoa học Tự nhiên
Thành phố Hồ Chí Minh.
[6] Nguyễn Đức Thành, “Áp dụng giải thuật di truyền và tìm kiếm cục bộ để giải
quyết bài toán sắp Thời Khóa Biểu cho khoa Công Nghệ Thông Tin”.
[7] Bùi Minh Giao Tiên (2002), “Áp dụng mô hình job shop linh động trong hệ hỗ
trợ lập lịch sản xuất”, luận văn thạc sĩ tin học, trường Đại học Khoa học Tự nhiên
Thành phố Hồ Chí Minh
[8] Huỳnh Bá Tùng, Trần Việt Cường (2005), “Nghiên cứu tính toán lưới và thử
nghiệm một số thuật toán lý thuyết đồ thị”, khóa luận cử nhân tin học. Trường Đại
học Khoa học Tự nhiên Thành phố Hồ Chí Minh.
Tài liệu tiếng anh
[9] Brian Patrick Ivers (2006), “Job shop optmization through multiple independent
particle swarms”, luận văn thạc sĩ, trường Đại học Oklahoma.
[10] D. Janaki Ram, T. H. Sreenivas, K. Ganapathy Subramaniam (1996), “Parallel
Simulated Annealing Algorithms”, viện Công nghệ Ấn Độ.
[11] Pawel Piotr Lukaszewicz (2005), “Metaheuristics for job shop scheduling
problem, comparison of effective methods”. Luận văn thạc sĩ.
[12] Tan Hui Woon & Sutinah Salim (2004), “A Branch and Bound and Simulated
Tài liệu từ internet
[13] Thuật toán dịch chuyển điểm nghẽn, truy cập ngày 1/5/2012
<http://community.stern.nyu.edu/om/faculty/pinedo/scheduling/hurink/sl8.pdf>
[14] Thuật toán Floyd, truy cập ngày 1/6/2012