Đầu vào: chương trình nhận dữ liệu đầu vào là hai chuỗi trình tự cần so sánh được đọc vào từ tệp tin.
Đầu ra: Kết quả đưa ra là hai chuỗi có độ so khớp giống nhau nhiều nhất, những vị trí không giống nhau sẽ được chèn thêm ký tự “-” (gọi là gap).
Với giải thuật song song cho ma trận đánh giá chỉ hoạt động có hiệu quả cao khi so sánh hai chuỗi trình tự có độ dài tương đối lớn.
Xét về độ phức tạp của hai giải thuật trên thì đều bằng O(nm), tuy nhiên trong cách xây dựng ma trận đánh giá song song, việc tính giá trị cho mỗi phần tử cùng nằm trên một đường chéo phụ (Xem Hình 1.1. ) được chia cho mỗi luồng đảm nhận do đó thời gian tính toán sẽ giảm đi đáng kể.
Kết quả thực nghiệm: với hai chuỗi trình tự có độ dài lớn. Giải thuật chạy trên thiết bị đồ họa GeForce 310M của hãng NVIDIA và CPU core i5 2.5GHz.
- A C G C T G
- 75 -
Bảng 1.1. Bảng kết quả chạy thực nghiệm
Chiều dài chuỗi so sánh Thời gian chạy giải thuật
STT S1 S2 Quy hoạch động Song song trên
GPU 1 100 100 2 200 100 3 1000 500 4 10000 5000 5 100000 100000 3.5. TỔNG KẾT CHƯƠNG 3
Trong chương này đã mô tả bài toán cơ bản trong sinh học, bài toán so sánh trình tự các hệ gen. Xây dựng giải thuật song song bằng CUDA chạy trên thiết bị đồ họa GPU Geforce 310M của NVIDA. So sánh hiệu năng giải bằng phương pháp quy hoạch động và phương pháp song song. Từ đó thấy được sự cần thiết của giải thuật song song trong các bài toán có số lượng tính toán khổng lồ.
- 76 -
KẾT LUẬN
Xử lý song song ra đời với mục đích làm tăng khả năng tính toán của máy tính bằng cách kết hợp nhiều bộ xử lý tham gia đồng thời vào quá trình xử lý.
Với sự phát triển của kiến trúc máy tính và mạng máy tính cho thấy rằng trong tương lai xử lý song song không những được thực hiện trên những siêu máy tính mà có thể được thực hiện trên các trạm làm việc, máy tính cá nhân, mạng máy tính. Nhưng hầu hết các thuật toán ngày nay đều là những thuật toán tuần tự. Cho nên cần xây dựng những thuật toán, cấu trúc dữ liệu cho phép xử lý song song nhằm tăng hiệu suất tính toán.
Kết quả đạt được của luận văn là trình bày tổng quan lý thuyết tính toán song song, phân loại các kiến trúc song song, các mô hình lập trình song song và đánh giá hiệu quả việc sử dụng thuật toán song song. Nắm được một số nguyên lý thiết kế giải thuật song song, trình bày một số phương pháp thiết kế giải thuật song song như: Thiết kế giải thuật song song bằng phân rã phụ thuộc dữ liệu, thiết kế giải thuật song song bằng phương pháp chia để trị,…Trình bày phương pháp nhận dạng một chương trình có thể chuyển sang lập trình song song. Nghiên cứu một số bài toán cơ bản đưa ra giải thuật trình tự và giải thuật song song. Từ đó đưa ra lợi ích áp dụng giải thuật song song.
Luận văn đã giới thiệu công nghệ hỗ trợ tính toán song song trên thiết bị đồ họa GPU của hãng NVIDIA và trình bày ngôn ngữ lập trình song song CUDA. Áp dụng một số bài toán cơ bản như: Cộng hai ma trận, nhân hai ma trận, … giải quyết bằng phương pháp lập trình song song trên thiết bị đồ họa GPU với ngôn ngữ CUDA.
Xây dựng ứng dụng giải quyết bài toán so sánh trình tự trong tin học dùng giải thuật Smith-Waterman bằng phương pháp quy hoạch động và phương pháp song song. Đưa ra một số kết quả tính toán trên các chuỗi có độ dài tăng dần bằng hai giải thuật trên. Nhận xét lợi ích dùng giải thuật tính toán song song trên thiết bị hỗ
- 77 -
trợ tính toán song song GPU giúp giảm rất nhiều thời gian hơn so với dùng giải pháp tuần tự. Chương trình đã góp phần vào việc giảm thời gian tính toán bài toán so sánh các trình tự trong tin học. Đây là một trong số các bài toán cơ bản trong tin học luôn đòi hỏi thời gian tính toán lớn.
Bên cạnh những kết quả đạt được, luận văn này còn có những hạn chế sau: Chưa trình bày đầy đủ một số giải thuật cơ bản tuần tự sang giải thuật song song, số ví dụ giải thuật song song chưa nhiều. Chương trình tương tác với người sử dụng ở dạng dòng lệnh, chưa trực quan, sinh động.
Từ đó hướng nghiên cứu và triển khai tiếp theo của luận văn là:
- Chương trình cần thử nghiệm trên các hệ thống thiết bị đồ họa có năng lực tính toán mạnh hơn, áp dụng với dữ liệu lớn hơn để đánh giá độ so khớp tin cậy hơn.
- Nghiên cứu cải tiến thêm thuật toán để chương trình có thể chạy nhanh hơn, nhằm nâng cao hiệu suất và có thể tính toán với khối lượng đầu vào lớn.
- Xây dựng giao diện đồ họa trực quan để dễ dàng tương tác với người dùng. Có thể chuyển ứng dụng này lên trang web nhằm giúp mọi người trong lĩnh vực tin sinh học có công cụ hỗ trợ để nghiên cứu.
- 78 -
DANH MỤC TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]PSG TS Nguyễn Đức Nghĩa (2007), Tính Toán Song Song, Nhà xuất bản Đại học Quốc gia Hà Nội.
[2]Đức Khánh (2/2010), “Cuda quá khứ - hiện tại & tương lai của điện toán GPU”, Tạp chí CGEZINE, X4, tr 34 - 41.
[3]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ĩ, Đại học Công nghiệp - Đại học quốc gia Hà Nội, tr 17-60.
[4]Ngô Quốc Vinh (2008), Hướng dẫn cách thiết lập dự án CUDA, Kyoto-Japan.
[5]TS Lê Huy Thập (8/2010), Cơ sở lý thuyết song song, Nhà xuất bản thông tin và truyền thông, Hà Nội.
[6]Phạm Mạnh Hùng (2007), Các kỹ thuật toán học cho bài toán so sánh đa trình tự, Luận văn thạc sĩ Khoa học máy tính, Đại học Bách khoa thành phố Hồ Chí Minh.
[7]Trịnh Công Quý (2005), Phát triển ứng dụng song song với OpenMP, Luận văn tốt nghiệp Đại học, Đại học Công nghệ - Đại học quốc gia Hà Nội, tr 3, 12.
Tiếng Anh
Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone (1997), Handbook of Applied Cryptography, CRC Press,.
[8]Thuy T.Nguyen, Duc H.Nguyen, Phong H.Phan (2010), Accelerating Smith- Waterman local sequence alignment on GPU cluster, Department of Information Systems Hanoi University of Science and Technology Hanoi, Vietnam.
[9]NVIDIA (3/6/2011), NVIDIA CUDA C Programming Guide, NVIDIA CUDA.
- 79 -
Trang web http://www.cgnewspaper.com/vi
Đoạn phim tại http://www.youtube.com/v/ZrJeYFxpUyQ Website: http://www.nvidia.com/physX
Website: http://developer.nvidia.com/object/physx.html
- 80 -
PHỤ LỤC
Bước 1: Cài đặt bộ điều khiển cho CUDA
Cách tải phần mềm:
Tải từ trang http://www.nvidia.com/object/cuda_get.html#windows tương ứng với số serial của card.
Cách cài đặt bộ điều khiển cho Cuda
Cài mặc định vào C:\NVIDIA. Bước 2: Cài đặt CUDA toolkit
Sau khi đã cài đặt bộ điều khiển (driver) cho card ban cần phải cài bộ công cụ hỗ trợ lập trình cho CUDA. Chỉ cần tải xuống hai tập tin “NVIDIA_CUDA_Toolkit_1.0.exe” và “NVIDIA_CUDA_SKD_1.0.exe” tại site http://www.nvidia.com/object/cuda_get.html#windows . Tùy thuộc vào OS của máy là 32 hay 64-bit (nếu 32-bit, chọn Architecture là “x86” và nếu là 64-bit, chọn “x86- 64”).
Bước 3: Cài đặt CUDA SDK
NVIDIA_CUDA_SKD_1.0.exe này là bộ SDK của NVIDIA. Trong tập tin này sau khi cài đặt sẽ chứa các dự án mẫu. Sau khi tải xuống tập tin “NVIDIA_CUDA_SDK_1.0.exe” (hoặc mới hơn), kích đôi vào tập tin này để cài đặt vào hệ thống. Sau khi kích đôi vào tập tin này thì chương trình cài đặt tự động “Install Shied Wizard” sẽ được kích hoạt.
Bước 4: Kiểm tra kết quả cài đặt
Sau khi tiến hành cài đặt trình điều khiển thiết bị đồ họa cho GPU của NVIDIA, để kiểm tra kết quả cài đặt, bấm phím chuột phải trên màn hình desktop và chọn mục ‘NVIDIA Control Panel’. Trong trường hợp không quan sát thấy mục ‘NVIDIA Control Panel’ sau khi đã bấm phím chuột phải, quá trình cài đặt trình
- 81 -
điều khiển thiết bị đã không được hoàn tất đúng cách và cần phải được tiến hành lại sau khi đã khởi động lại máy tính.
Để kiểm tra phiên bản trình điều khiển đồ họa đã được cài đặt, chọn mục ‘System Information’ ở bên trái cuối cửa sổ hội thoại NVIDIA control panel, xuất hiện hộp thoại System Information như sau:
Ở phần item là nơi liệt kê các GPU của NVIDIA có trong hệ thống máy tính của người dùng. Hiện tại là GeForce 9500 GT. Tham số dirver version cho biết phiên bản của trình điều khiển đồ họa đã được cài đặt trên máy (257.51) và số lượng nhân CUDA có trong mỗi GPU kiểu GetForce 9500 (32 nhân).
Bước 5: Cách thiết lập một dự án CUDA trên Microsoft Visual C++ 2005 Trong phần này sẽ hướng dẫn cách thức tạo ra một dự án CUDA. Để đơn giản, tạo một dự án console. Mở Microsoft Visual C++, vào menu “File->New-
- 82 -
>Project…” hộp thoại “New Project” hiển thị vào “Visual C++->Win32” sau đó chọn “Win32 Console Application”. Đặt tên cho dự án là “CudaStep1” và solution “CudaProgram”. Sau đó kích “OK->Next->Finish”. Cho đến thời điểm này đã có 1 dự án console nhưng chưa phải là dự án cuda.
Vào của sổ “Solution Explorer kích phải vào “Header Files->Add->New Item…” hộp thoại “Add new Item - CudaStep1” hiển thị. Tiếp theo vào ” Visual C+ +-> Code” chọn “Header File(.h)” và đặt tên “CudaHeader.h” rồi kích Add (Figure 12). Tệp tin này sẽ chứa thông tin vế cấu hình của chương trình cuda và prototype của các hàm kernel sẽ viết.
Tiếp theo cần tạo một tập tin chứa mã nguồn cho một chương trình cuda, tập tin này sẽ được mở rộng bằng “.cu” tương tự như bước 2 vào cửa sổ “Solution Explorer kích phải vào “Header Files->Add->New Item…” hộp thoại “Add new Item- CudaStep1” hiển thị. Tiếp theo vào ” Visual C++->Utility” chọn “Text File (.txt)” và đặt tên là “CudaFunction.cu” rồi kích Add.