Giải pháp tăng tốc độ xử lý thuật toán SmithWaterman

61 836 0
Giải pháp tăng tốc độ xử lý thuật toán SmithWaterman

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWatermanGiải pháp tăng tốc độ xử lý thuật toán SmithWaterman

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Thành Phương ĐỀ TÀI GIẢI PHÁP TĂNG TỐC ĐỘ XỬ THUẬT TOÁN SMITH-WATERMAN LUẬN VĂN THẠC SĨ KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH - 2016 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG Nguyễn Thành Phương ĐỀ TÀI GIẢI PHÁP TĂNG TỐC ĐỘ XỬ THUẬT TOÁN SMITH-WATERMAN Chuyên ngành: Hệ thống Thông tin Mã số: 60.48.01.04 NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS TRẦN VĂN LĂNG THÀNH PHỐ HỒ CHÍ MINH – 2016 i LỜI CAM ĐOAN Trong trình thực luận văn, hướng dẫn trực tiếp PGS.TS Trần Văn Lăng, nghiên cứu hoàn thành luận văn với nổ lực nghiên cứu thân Do đó, xin cam đoan nội dung luận văn thực hướng dẫn PGS.TS Trần Văn Lăng tham khảo sử dụng luận văn có trích dẫn nguồn cụ thể, rõ ràng, trung thực tên tác giả, tên công trình nghiên cứu, thời gian địa điểm công bố Mọi chép không hợp lệ vi phạm quy chế đào tạo xin chịu hoàn toàn trách nhiệm./ TP HCM, ngày 05 tháng 09 năm 2016 HỌC VIÊN THỰC HIỆN LUẬN VĂN Nguyễn Thành Phương ii LỜI CẢM ƠN Trong trình thực luận văn này, xin gửi lời cảm ơn chân thành đến PGS.TS Trần Văn Lăng, Viện phó Viện học Tin học ứng dụng TP HCM, người trực tiếp hướng dẫn để hoàn thành luận văn Đồng thời, xin gửi lời cảm ơn đến quý thầy cô thuộc Học Viện Bưu Viễn thông nói chung, sở Thành phố Hồ Chí Minh nói riêng tạo điều kiện thuận lợi cho hoàn thành luận văn tiến độ Một lần xin gửi lời cảm ơn chân thành đến quý Thầy Cô TP HCM, ngày 05 tháng 09 năm 2016 HỌC VIÊN THỰC HIỆN LUẬN VĂN Nguyễn Thành Phương iii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT v DANH SÁCH CÁC BẢNG vi DANH SÁCH CÁC HÌNH vii MỞ ĐẦU .1 CHƯƠNG 1- CƠ SỞ THUYẾT 1.1 Tổng quan GPU: 1.1.1 GPU gì: 1.1.2 Lịch sử phát triển GPU: 1.1.3 Cấu trúc GPU chế song song ứng dụng: .5 1.2 Tổng quan OPENCL 1.2.1 Giới thiệu OPENCL: .6 1.2.2 Cấu trúc OPENCL: 1.2.3 Quy trình phát triển chương trình OPENCL: .12 1.3 Bài toán bắt cặp trình tự: 12 1.4 Các thuật toán giải toán bắt cặp trình tự sinh học: 13 TIỂU KẾT CHƯƠNG 14 CHƯƠNG - NGUYÊN ĐẨY NHANH THUẬT TOÁN SMITHWATERMAN TRONG MÔI TRƯỜNG CPU-GPU 15 2.1 Thuật toán Smith-waterman nguyên thủy: 15 2.1.1 Giới thiệu: 15 2.1.2 Nguyên hoạt động: 15 2.1.3 Thuật toán Đánh giá: .21 2.2 Phương pháp cải tiến thuật toán Smith-Waterman: 22 2.2.1 Phương pháp cắt tỉa: 24 2.2.2 Ràng buộc cho tất cặp trình so sánh: .26 iv 2.2.3 Tế bào kích hoạt 28 2.2.4 thuyết song song thuật toán Smith- Waterman: .28 2.3 Thuật toán cải tiến 31 2.3.1 Thuật toán Smith-Waterman với phương pháp cắt tỉa: .31 2.3.2 Phương pháp kết hợp cắt tỉa xử song song 32 TIỂU KẾT CHƯƠNG 34 CHƯƠNG 3- KẾT QUẢ THỰC NGHIỆM .35 3.1 Chương trình thực nghiệm 35 Chương trình: .35 3.1.1 3.1.1.1 Hàm quét tìm Platforms: 35 3.1.1.2 Hàm quét tìm thiết bị: 36 3.1.1.3 Hàm tính toán giới hạn thấp hơn: .36 3.1.1.4 Kernel file phương pháp cắt tỉa kết hợp song song: 37 3.1.1.5 Thực thi kernel: 39 3.1.2 3.2 Một số hình ảnh thực thi chương trình: .43 Môi trường thực nghiệm liệu test: 45 3.2.1 Môi trường thực nghiệm: .45 3.2.2 Bộ liệu Test: 46 3.3 Kết thực nghiệm: 48 3.3.1 Kết thực nghiệm: 48 3.3.2 So sánh thời gian thực thi SW nguyên thủy cắt tỉa CPU: .49 3.3.3 So với thuật toán Smith-Waterman xử song song: 49 3.3.4 So sánh với thuật toán Smith-Waterman cắt tỉa tối ưu hóa band nhóm nghiên cứu người Nhật: 50 KẾT LUẬN: 51 DANH MỤC TÀI LIỆU THAM KHẢO 52 v DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT Viết tắt Tiếng Anh Tiếng Việt CPU Central Processing Unit Bộ xử trung tâm GPU Graphics Processing Unit Bộ xử đồ họa VGA Video Graphic Array Card đồ họa SM Stream Multiprocessing Dòng đa xử vi DANH SÁCH CÁC BẢNG Hình 2.1: Mô hình tổng quát tính điểm số ma trận 17 Hình 2.2: Ví dụ đoạn tương đồng hai trình tự 23 Hình 2.3: Mô hình tổng quát biểu diễn trình tự tương đồng (Nguồn [5]) 24 Hình 2.4: Biểu diễn bắt cặp trình tự ba chuỗi Sa, Sb, Sc chuỗi Sa 26 Hình 2.5: Sự trùng khớp không trùng khớp ba trình tự (Nguồn [5]) 27 Hình 2.7: Cách song song thuật toán SW giai đoạn điền ma trận 30 Bảng 3.1: Bảng đặc điểm kỹ thuật máy tính thực nghiệm 46 Bảng 3.2: Dữ liệu Test chương trình 48 vii DANH SÁCH CÁC HÌNH Hình 1.1: Cấu trúc GPU (Graphics Pipeline) Hình 1.2: Mô hình tảng OPENCL (Nguồn Khronos 2011) Hình 1.3: Hệ thống OPENCL .8 Hình 1.4: Work-group Work-item (Nguồn [10]) Hình 1.5: Trình biên dịch OPENCL 10 Hình 1.6: Memory Model OPENCL (Nguồn Khronos 2011) 11 Hình 2.1: Mô hình tổng quát tính điểm số ma trận 17 Hình 2.2: Ví dụ đoạn tương đồng hai trình tự 23 Hình 2.3: Mô hình tổng quát biểu diễn trình tự tương đồng (Nguồn [5]) .24 Hình 2.4: Biểu diễn bắt cặp trình tự ba chuỗi Sa, Sb, Sc chuỗi Sa 26 Hình 2.5: Sự trùng khớp không trùng khớp ba trình tự (Nguồn [5]) .27 Hình 2.6: Tính điểm số Hi,j (Nguồn [5]) Error! Bookmark not defined Hình 2.7: Cách song song thuật toán SW giai đoạn điền ma trận 30 Hình 3.1: Kết bắt cặp trình tự cặp (2) - (3) dùng SW nguyên thủy 44 Hình 3.2: Kết bắt cặp trình tự cặp (2) - (3) dùng SW cắt tỉa CPU 44 Hình 3.3: Kết bắt cặp trình tự cặp (2) - (3) dùng SW cắt tỉa GPU 45 Hình 3.4: Cấu trúc file input cho giải thuật SW cắt tỉa 46 Hình 3.5: Ví dụ file input cho thuật toán 47 Hình 3.6: Kết thực nghiệm môi trường 48 Hình 3.7: Thời gian thực thi giải thuật SW nguyên thủy cắt tỉa CPU 49 Hình 3.8: Thời gian thực thi giải thuật SW song song SW song song, cắt tỉa 50 MỞ ĐẦU Công nghệ thông tin ngành khoa học kỹ thuật có tính phổ dụng rộng rãi, áp dụng nhiều lĩnh vực khác Trong đó, không kể đến việc ứng dụng công nghệ thông tin công nghệ sinh học Và hội tụ hai khoa học lớn hình thành ngành khoa học phát triển mạnh mẽ ngành Tin sinh học (Bioinformatics) Từ Tin sinh học đời, trở thành công cụ hỗ trợ đắc lực việc nghiên cứu ứng dụng sáng chế, phát minh ngành công nghệ sinh học vào thực tiễn Trong năm gần đây, nhà khoa học lĩnh vực sinh học phát cấu trúc sinh học phân tử xây dựng thành hệ thống sở liệu sinh học phân tử lớn tập trung thành ngân hàng liệu (GenBank, EMBL, DDBJ) Tháng 08 năm 2015, GenBank công bố có 199.823.644.287 bases, từ 187.066.846 sequences hệ thống ngân hàng liệu đơn vị Tuy nhiên, Với liệu lớn việc tìm kiếm liệu tìm kiếm tương đồng database tốn nhiều chi phí mặt thời gian, đặc biệt toán bắt cặp trình tự sinh học Có nhiều thuật toán xây dựng để giải toán bắt cặp trình tự sinh học, thuật toán lại có tính ưu việt khác mặt thời gian hiệu thực Thuật toán Smith-Waterman thường áp dụng để giải toán bắt cặp trình tự sinh học thuật toán cho kết có độ xác cao, nhiên giải thuật lại nhiều thời gian thực Để nâng cao tính hiệu giải thuật Smith-Waterman góp phần cải thiện thời gian thực thuật toán này, luận văn tập trung vào việc đẩy mạnh thời gian thực giải thuật dựa tảng GPU Luận văn đề xuất với tên sau: “Giải pháp tăng tốc độ xử thuật toán Smith-Waterman” Trong năm gần đây, nhà khoa học lĩnh vực tin sinh học giới nghiên cứu phương pháp để cải tiến tối ưu hóa thuật toán Smith-Waterman trình bắt cặp trình tự sinh học Các nhà nghiên cứu thuộc Trường Đại học Bách khoa Hà Nội công bố công trình nghiên cứu với việc sử dụng hệ thống máy tính lớn tích hợp card đồ họa 38 - Nếu i thỏa mãn điều kiện (i >= n / 2) (i >= m – j) kiểm tra Hi-1,j-1; Hi- 1,j; Hi,j-1 có phải tế bào kích hoạt hay không, tế bào kích hoạt bỏ qua tính toán giá trị Hij ngược lại: if ((ii >= (n / 2)) ||( ii >= m - jj)) { if(H[(j-1)*(i-1)*dim]==-1 && H[j+(i-1)*dim]==-1 && H[(j-1)+i*dim]==-1) { H[index]=-1; T[index]=-1; } else { if(s1[ii]==s2[jj]) tam = H[(j-1)+(i-1)*dim] + match; else tam = H[(j-1)+(i-1)*dim] + mismatch; tam1 = H[j+(i-1)*dim] + gap; tam2 = H[(j-1)+i*dim] + gap; H[index] = max(max(max(0, tam), tam1),tam2); if ((H[index] + match*max(n - ii, m - jj)) < bound) { H[index] = -1; T[index] = 0; } else { if (H[index] == tam) //dialog T[index] = 1; if (H[index] == tam1) // up T[index] = 2; if (H[index] == tam2) // left T[index] = 3; if (H[index] == 0) // end of path T[index] = 0; } } - Nếu i không thỏa mãn điều kiện (i >= n / 2) (i >= m – j) tính toán giá trị Hij: if(s1[ii]==s2[jj]) tam = H[(j-1)+(i-1)*dim] + match; else tam = H[(j-1)+(i-1)*dim] + mismatch; tam1 = H[j+(i-1)*dim] + gap; tam2 = H[(j-1)+i*dim] + gap; H[index] = max(max(max(0, tam), tam1),tam2); 39 if (H[index] == tam) //dialog T[index] = 1; if (H[index] == tam1) // up T[index] = 2; if (H[index] == tam2) // left T[index] = 3; if (H[index] == 0) // end of path T[index] = 0; 3.1.1.5 Thực thi kernel: Để kernel thực thi môi trường GPU, CPU, …, cần phải xây dựng số hàm bổ trợ nhằm thiết lập môi trường tính toán cho kernel như: context, program, buffer commandqueue, … Việc thiết lặp thực thi CPU hay gọi máy host xây dựng cụ thể sau: - Tạo context: //Creat context cl::Context context({ default_device }); - Load kernel file: việc load file kernel tương tự mở file lập trình C++: std::ifstream sourcefile("SW_kernel_Inter_Parallel.cl"); if (sourcefile.is_open()) { //thuc hien cac lenh } - Load source kernel: std::string sourcecode(std::istreambuf_iterator (sourcefile), (std::istreambuf_iterator())); - Tạo object program: cl::Program::Sources source; source.push_back( {sourcecode.c_str(),sourcecode.length() }); - Tạo program: 40 cl::Program program(context, source); - Compile source kernel: trình build cần kiểm tra program có build code kernel thiết bị tính toán hay không, không báo lỗi: if (program.build({ default_device }) != CL_SUCCESS) { std::cout [...]... ghi vào Thuật toán này giải quyết rất hiệu quả bài toán bắt cặp trình tự cục bộ với độ chính xác tương đối cao, tuy nhiên thời gian thực hiện thuật toán thì tốn khá nhiều thời gian, thời gian thuật toán thực thi là O(nm) 2.2 Phương pháp cải tiến thuật toán Smith-Waterman: Dựa trên thuật toán Smith-Waterman nguyên thủy, phương pháp được trình bày trong luận văn sẽ cải tiến tốc độ xử của thuật toán trong... phương pháp để giải quyết bài toán bắt cặp trình tự (toàn cục và cục bộ) Ngoài ra, chương một cũng đã đánh giá sơ bộ tốc độ của từng giải thuật trong quá trình giải quyết bài toán bắt cặp trình tự 15 CHƯƠNG 2 - NGUYÊN ĐẨY NHANH THUẬT TOÁN SMITH-WATERMAN TRONG MÔI TRƯỜNG CPU-GPU 2.1 Thuật toán Smith-waterman nguyên thủy: 2.1.1 Giới thiệu: Thuật toán Smith-Waterman là giải thuật giải quyết bài toán. .. vẫn tồn tại những hạn chế khá lớn của giải thuật này đó chính là tốc độ xử thuật toán 14 khá chậm, tốn nhiều thời gian để xử lý, đặc biệt là các chuỗi trình tự có độ dài của trình tự khá lớn (ví dụ vi khuẩn bacillus có độ dài trình tự lên đến 5 triệu) Vì thế, luận văn này nghiên cứu phương pháp cải tiến tốc độ xử thuật toán trên môi trường CPU và GPU, phương pháp này sẽ được trình bày cụ thể trong... *(-2) = 4 Vậy mức độ tương đồng của hai trình tự là 4 điểm 1.4 Các thuật toán giải quyết bài toán bắt cặp trình tự sinh học: Có nhiều thuật toán được xây dựng đẻ giải quyết bài toán bắt cặp trình tự: thuật toán Needleman-Wunsch, Smith-Waterman, Blast, … Thuật toán NeedlemanWunsch và Smith-Waterman đều dựa trên cơ chế quy hoạch động, tuy nhiên mỗi giải thuật lại có một phương pháp xử và tìm kiếm khác... vi xử trung tâm (CPU) là một bộ phận quan trọng để vận hành máy tính, là khối điều khiển, xử các chương trình và dữ kiện Tuy nhiên đối với những ứng dụng đòi hỏi tốc độ xử cao thì CPU có thể không thể đáp ứng, đặc biệt là trong lĩnh vực đồ họa, game 3D Vì vậy, để tăng tốc độ xử và thực thi chương trình, người ta bổ sung GPU vào hệ thống máy tính, vậy GPU là gì và phương thức tăng tốc độ xử. .. phương thức tăng tốc độ xử của nó trong hệ thống máy tính như thế nào, những điều này sẽ được trình bày cụ thể dưới đây 1.1.1 GPU là gì: GPU (Graphics Processing Unit) là bộ vi xử chuyên dụng có nhiệm vụ tăng tốc, xử đồ họa cho bộ vi xử trung tâm CPU nhằm tăng tốc các ứng dụng đồ họa, ứng dụng khoa học, kỹ thuật và phân tích dữ liệu lớn GPU có thể đẩy nhanh tốc độ xử ở nhiều môi trường khác... xử và tìm kiếm khác nhau Đối với thuật toán Needleman-Wunsch áp dụng cho bài toán bắt cặp trình tự toàn bộ, tính toán điểm tương đồng của toàn bộ chuỗi trình tự Thuật toán SmithWaterman thì chỉ tính toán một đoạn tương đồng trong chuỗi trình tự có điểm số tương đồng tối ưu nhất Vì vậy thuật toán này chỉ áp dụng để giải quyết bài toán bắt cặp trình tự cục bộ Giải thuật Smith-Waterman có nhiều ưu điểm... hình xử khác nhau: mô hình xử đa luồng thread, mô hình truyền thông điệp và mô hình xử song song Mỗi mô hình có một chức năng và đặc điểm riêng, nhưng tất cả các mô hình nhằm tăng khả năng tính toán dữ liệu của GPU 6 Hình 1.1: Cấu trúc GPU (Graphics Pipeline) - Mô hình đa luồng xử là mô hình lập trình dưới dạng chia sẻ bộ nhớ, trong cùng một tiến trình có thể có nhiều luồng xử được xử lý. .. thoại di động, máy tính bảng, robot, … Với mục đích nhằm tăng tốc độ xử cho CPU nên GPU được ứng dụng trong nhiều lĩnh vực khác nhau Tuy nhiên, trong lĩnh vực đồ họa, đặc biệt là đồ họa 3D thì GPU được ứng dụng rộng rãi, vì GPU là một bộ vi xử chuyên biệt được xây dựng nhằm thực hiện các phép toán đặc biệt cần thiết cho các ứng dụng đồ họa 3D Ngoài ra, GPU còn được sử dụng trong việc tăng tốc các... năng tính toán số học và băng thông bộ nhớ, chúng trở nên khá tưởng để đẩy nhanh tốc độ xử dữ liệu song song cho nhiều ứng dụng khác nhau Không chỉ tập trung vào việc phát triển những dòng sản phẩm chuyên xử các ứng dụng đồ họa, các nhà nghiên cứu đã khai thác hiệu quả xử của GPU ở nhiều lĩnh vực khác như y khoa, điện tử, … Từ đó, GPU được sử dụng để thực thi các ứng dụng điện toán đa dụng, ... Unit) vi xử lý chuyên dụng có nhiệm vụ tăng tốc, xử lý đồ họa cho vi xử lý trung tâm CPU nhằm tăng tốc ứng dụng đồ họa, ứng dụng khoa học, kỹ thuật phân tích liệu lớn GPU đẩy nhanh tốc độ xử lý nhiều... thiện thời gian thực thuật toán này, luận văn tập trung vào việc đẩy mạnh thời gian thực giải thuật dựa tảng GPU Luận văn đề xuất với tên sau: Giải pháp tăng tốc độ xử lý thuật toán Smith-Waterman”... tự cục Giải thuật Smith-Waterman có nhiều ưu điểm vượt trội, song tồn hạn chế lớn giải thuật tốc độ xử lý thuật toán 14 chậm, tốn nhiều thời gian để xử lý, đặc biệt chuỗi trình tự có độ dài trình

Ngày đăng: 18/12/2016, 00:06

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan