Cách lập trình MPI

Một phần của tài liệu khai thác kiến trúc phân tán và chia sẻ tìm sự tương đồng của các trình tự sinh học (Trang 55)

MPI cung cấp một sự trừu tựng cao hơn bằng sơ đồ truyền thông điệp (Message – Passing Topology). MPI sử dụng cơ cấu truyền thông và sơ đồ kết nối làm cho MPI khác với các hệ thông truyền thông điệp khác.

Cơ cấu truyền thông là tập hợp các process có thể trao đổi với nhau. Cơ cấu truyền thông là một miền truyền thông (comm.domain) để định nghĩa các tập process cho phép giao tiếp với nhau.

Sơ đồ kết nối là cấu trúc trên các process của một cơ cấu truyền thông, cho phép xác định các process theo nhiều cách khác nhau.

Có hai loại cơ cấu truyền thông:

– Intracommunicator: truyền thông cùng nhóm

– Intercommunicator: truyền thông giữa các nhóm

Một process có một vị trí trong nhóm, cũng có thể là thành viên của nhiều nhóm.

Chuẩn là cơ cấu intracommunicator. Khi một chƣơng trình khời động, các process đƣợc cung cấp cho cùng cơ cấu truyền thông sẽ khởi động theo.

Kết luận: trong chƣơng này đã nêu ra sự khác biệt về tính toán tuần tự và tính toán song song. Đối với bài toán chuyên môn đòi hỏi tốc độ xử lý cao nhƣ xử lý đồ thị, hình ảnh thì tính toán song song phát huy đƣợc năng lực xử lý hơn là tính toán tuần tự. Môi trƣờng lập trình CUDA đáp ứng đƣợc vấn đề tính toán song song. Môi trƣờng lập trình MPI giải quyết đƣợc vấn đề song song dữ liệu. Luận văn mong muốn kết hợp đƣợc hai môi trƣờng lập trình này và khai thác các thế mạnh của chúng.

CHƢƠNG 4. GIẢI THUẬT VÀ PHƢƠNG PHÁP HIỆN THỰC HÓA GIẢI THUẬT TRÊN MÔI TRƢỜNG MPI KẾT HỢP CÔNG NGHỆ CUDA.

Chƣơng này trình bày về giải thuật và phƣơng pháp giải quyết bài toán bắt cặp trình tự trên môi trƣờng MPI kết hợp công nghệ CUDA.

4.1.Thuật toán Smith-Waterman

Thuật toán Smith-Waterman là một thuật toán dùng để sắp hàng các trình tự sinh học, đƣợc phát triển bởi T.F. Smith và M.S. Waterman vào năm 1981 dựa trên một mô hình đề xuất trƣớc đó của Needleman và Wunsch [7]

Đặc điểm: Thuật toán Smith-Waterman là thuật toán sắp hàng cặp chuỗi cục bộ dựa trên quy hoạch động để tính điểm cho quá trình sắp hàng chuỗi.

Ý nghĩa: Thuật toán này giúp nhận ra những miền tƣơng đồng giữa hai chuỗi tìm kiếm cho sắp hàng chuỗi cục bộ tối ƣu hơn.

Thuật toán xây dựng trên ý tƣởng so sánh tìm ra những đoạn hay những miền của hai chuỗi có độ tƣơng đồng cao nhất, từ đó đánh giá mức độ tƣơng đồng giữa hai chuỗi.

Quá trình sắp hàng chuỗi đƣợc thực hiện bởi việc sắp hàng chuỗi từng cặp trong 2 chuỗi. Khi đó điểm cho sắp hàng chuỗi từng cặp ký tự phụ thuộc vào: hai ký tự là giống nhau (matches), hai ký tự không giống nhau (mismatches) và điểm cho việc thêm/bớt khoảng trống (gap penalty). Kết quả của sắp hàng cặp cục bộ là tìm ra đƣợc những đoạn trong 2 chuỗi có độ tƣơng đồng cao nhất.

Bài toán:

Giả sử có hai chuỗi S1 và S2. Để việc sắp trình tự cặp chuỗi S1, S2 có điểm cao nhất (tức cho kết quả tƣơng đồng cao nhất), một ma trận F hai chiều đƣợc tạo ra. Mỗi vị trí trong ma trận đƣợc kí hiệu là Fij. Điểm cho sắp trình tự đƣợc đặc trƣng bằng ma trận thay thế S, trong đó:

S(i,j) là điểm tƣơng đồng giữa hai kí tự ij.

d là một điểm phạt tuyến tính cho các gap. Trong ma trận, trục hoành là các kí tự của chuỗi S1 (có chiều dài n), các kí tự của chuỗi S2 (có chiều dài m) đƣợc biểu diễn trên trục tung.

THUẬT GIẢI

- Input:

+ 2 chuỗi S1, S2 với chiều dài tƣơng ứng là n, m

+ Ma trận thay thế S + Gap penalty d

- Output: 2 chuỗi S1‘,S2‘

Bước 1: Khởi tạo + F(0,0)=0

+ F(i,0)=0 0≤ i ≤ m + F(0,j)=0 0≤ j ≤ n

Bước 2: Điền giá trị vào ma trận + Tính F(i,j) theo công thức:

F(i, j) = Max ( 0, F(i-1, j-1) + S(i, j), F(i-1, j) - d, F(i, j-1) - d ) (1) + Mỗi khi tính F(i, j) lƣu lại chỉ số của số hạng ở vế phải (1)

Bước 3: Tìm ô (i_max, j_max) có điểm cao nhất (0≤ i ≤ m, 0≤ j ≤ n) (adsbygoogle = window.adsbygoogle || []).push({});

Bước 4: Traceback (quay lui)

- Xuất phát từ ô (i_max,j_max). Dựa vào những chỉ số đã lƣu ở bƣớc 2 để tìm traceback cho đến khi gặp ô F(i,j) = 0 thì dừng.

- Xét ô (i,j)

+ Nếu đƣờng đi theo chiều ngang hay từ ô (i,j-1) sang ô (i,j) thì thêm ― – ― vào S2‘ và thêm ký tự S1(j) vào S1‘.

+ Nếu đƣờng đi theo chiều thẳng đứng hay từ ô (i-1,j) xuống ô (i,j) thì thêm ―– ― vào S1‘ và thêm ký tự S2(i) vào S2‘.

+ Nếu đƣờng đi theo đƣờng chéo hay từ ô (i-1,j-1) đến ô (i,j) thì thêm ký tự S1(j) vào S1‘ và S2(i) vào S2‘

Đảo ngƣợc S1‘, S2‘

Xét ví dụ sau: Cho 2 chuỗi trình tự đơn giản S1: ATATGCTAAG S2: ACTACTTAG Bƣớc 1: Khởi tạo A T A T G C T A A G 0 0 0 0 0 0 0 0 0 0 0 A 0 C 0 T 0 A 0 C 0 T 0 T 0 A 0 G 0 G 0 Hình 4.1. B ớc khởi tạo

Bƣớc 2: Điền giá trị vào ma trận theo công thức

F(i,j)=Max ( 0, F(i-1,j-1) + S(i,j), F(i-1,j)+d, F(i,j-1)+d ) Cho Match = 2 , Mismatch= -1, D= -1

A T A T G C T A A G 0 0 0 0 0 0 0 0 0 0 0 A 0 2 C 0 T 0 A 0 C 0 T 0 T 0 A 0 G 0 G 0

Hình 4.2. Điền giá trị vào ma trận

Bƣớc 3: Tìm ô ( i max, j max) có điểm cao nhất

A T A T G C T A A G 0 0 0 0 0 0 0 0 0 0 0 A 0 2 1 2 1 0 0 0 2 2 1 C 0 1 1 1 1 0 2 0 0 0 0 T 0 0 3 2 3 2 1 4 3 2 1 A 0 2 2 5 4 3 2 3 6 5 4 C 0 1 1 4 4 3 5 4 5 5 4 T 0 0 3 3 6 5 4 7 6 5 4 T 0 0 2 2 5 5 4 6 6 5 4 A 0 2 1 4 4 4 4 5 8 8 7 G 0 1 1 3 3 6 5 4 7 7 10 G 0 0 0 2 2 5 5 4 6 6 9

Hình 4.3. Tìm ô ( i max, j max) có điểm cao nhất trong ma trận

Bƣớc 4: Traceback A T A T G C T A A G 0 0 0 0 0 0 0 0 0 0 0 A 0 2 1 2 1 0 0 0 2 2 1 C 0 1 1 1 1 0 2 0 0 0 0 T 0 0 3 2 3 2 1 4 3 2 1 A 0 2 2 5 4 3 2 3 6 5 4 C 0 1 1 4 4 3 5 4 5 5 4 T 0 0 3 3 6 5 4 7 6 5 4 T 0 0 2 2 5 5 4 6 6 5 4 A 0 2 1 4 4 4 4 5 8 8 7 G 0 1 1 3 3 6 5 4 7 7 10 G 0 0 0 2 2 5 5 4 6 6 9

Kết quả sắp hàng:

Nhận xét: Thuật toán qui hoạch động Smith-Waterman giải quyết bài toán so sánh trình tự theo hƣớng tìm ra lời giải gần tối ƣu nhất dựa trên các bƣớc di chuyển tốt của mỗi trạng thái của lời giải so với các trạng thái xung quanh nó trong mỗi vòng lặp xác định. Chủ yếu đƣợc sử dụng cho việc giải quyết bài toán so sánh theo hƣớng toàn cục.

+ Ƣu điểm: giảm không gian tìm kiếm của lời giải, tốc độ tìm kiếm nhanh… + Nhƣợc điểm: do phƣơng pháp tìm kiếm cục bộ chỉ đảm bảo tính đúng chứ không đảm bảo tính đầy đủ, và do việc lựa chọn các bƣớc đi để thoát khỏi tình trạng tối ƣu cục bộ là ngẫu nhiên nên có thể thuật toán sẽ không tìm ra đƣợc lời giải tốt trong một số lần chạy (phụ thuộc vào việc ấn định các tham số đầu vào).

Một phần của tài liệu khai thác kiến trúc phân tán và chia sẻ tìm sự tương đồng của các trình tự sinh học (Trang 55)