Môi trƣờng lập trình truyền thông điệp với 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 54)

3.3.1. Lịch sử MPI

MPI ra đời bởi một ủy ban trong một diễn đàn Hội nghị với trên 60 chuyên gia từ 40 tổ chức khác nhau. Do nhà sản xuất MPP (Massively Parallel Processor) đã tạo ra các API trao đổi thông điệp riêng, nên khó viết những chƣơng trình tính toán song song có tính cơ động (portable). MPI là một hệ thống giao tiếp chuyển thông điệp đƣợc dùng trên mạng phân tán.

Những chuyên gia xây dựng hệ thống ban đầu tứ những trƣờng đại học, các viện nghiên cứu, các Phòng thí nghiệm quốc gia, các xí nghiệp sản xuất máy tính song song.

Họ cùng nhau mô tả và định nghĩa tập hợp các thƣ viện giao tiếp chuẩn trong truyền thông điệp. từ đó chuẩn hóa các giao thức chuyển thông điệp.

Tiến trình chuẩn hóa đƣợc bắt đầu từ Workshop on Standards for Message Passing ina Distributed Memory Envirronment đƣợc tổ chức vào hai ngày 29- 30/4/1992 ở Williamsburg – Virginia. Hội thảo này đƣợc tài trợ bởi ―Center for Research on Parallel Computing‖, phiên bản 1.0 ra đời vào tháng 5/1994, sau đó vào tháng 3/1995, diễn đàn MPI lại nhóm họp, và phiên bản 1.1 đƣợc tạo ra vào tháng 6/1995.

MPI -2 bắt đầu vào tháng 4/1994 và sau đó cứ 6 tuần, các nhà thiết kế lại gặp nhau một lần cho đến ngày 25/4/1997 MPI-2 đƣợc thông qua. MPI -2 có thêm nhiều hàm so với MPI -1 và có nhiều phƣơng pháp truyền thông hơn. Chẳng hạn,

– MPI_Spawn() để khởi động các MPI process

– Các hàm truyền thông 1 chiều nhƣ put, get

3.3.2. Đặc điểm của MPI

Những thuận lợi cơ bản MPI là có những chƣơng trình chuyển thông điệp cấp thấp trên hệ thống phân tán, các chƣơng trình này đã đƣợc chuẩn hóa để ngƣời sử dụng thuận tiện khi dùng các ngôn ngữ cấp cao nhƣ C/C++, FORTRAN.

MPI đƣợc tập hợp bởi trí tuệ của hầu hết các chuyên gia hàng đầu trong lĩnh vực này (kể cả các chuyên gia thiết kế PVM), nên các giao thức giao tiếp thuận lợi và tốt hơn.

MPI với ý định tạo ra các đặc tả chuyển thông điệp chuẩn để những nhà sản xuất bộ xử lý song song quy mô (Massively Parallel Processors) cài đặt trên hệ thống của họ.

– MPI có một tập khá lớn các hàm truyền thông điểm đến điểm (point-to- point communication)

– Có nhiều hàm truyền thông tập thể (collective communication)

– Có khả năng xác định các sơ đồ truyền thông (communication topologies)

3.3.3. Cấu trúc chƣơng trình MPI

Các tập tin thƣ viện liên quan đến các hàm các thủ tục, các kiểu dữ liệu. Bao gồm các tập tin .h nhƣ mpi.h, mpio.h và các tập tin khác. Ngƣời lập trình chỉ cần dùng thƣ viện mpi.h là đủ.

Môi trƣờng MPI gồm tất cả các kiểu dữ liệu, các thủ tục, các giá trị defined nếu muốn dùng nó, sau khi gọi các tập tin thƣ viện liên kết thì phải khởi tạo môi trƣờng sử dụng thì mới có thể dùng đƣợc các chức năng mà MPI cung cấp.

Các thủ tục, hàm MPI sử dụng giống nhƣ các hàm trong C và cả các ngôn ngữ khác nhƣ Fortran

3.3.4. Cách lập trình MPI

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. (adsbygoogle = window.adsbygoogle || []).push({});

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)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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).

4.2.Xây dựng giải thuật song song và cài đặt trên môi trƣờng CUDA.

Nhƣ đã trình bày ở trên, giải thuật Clustal gồm 3 bƣớc: sắp hàng từng cặp chuỗi giữa tất cả những chuỗi và xác định mức độ tƣơng đồng giữa mỗi cặp; xây dựng cây chỉ dẫn thể hiện mối quan hệ tƣơng đồng giữa các chuỗi; xây dựng sắp hàng đa chuỗi dựa vào cây chỉ dẫn ở bƣớc 2. Trong 3 bƣớc này, nhận thấy có thể thực hiện việc tính toán song song tại bƣớc 1 hoặc bƣớc 3 hoặc cả 2 bƣớc. Ở bƣớc 1, việc sắp hàng từng cặp chuỗi có thể song song hóa bằng cách tính toán đồng thời nhiều ký tự của mỗi chuỗi cùng một lúc. Ở bƣớc 3, nhận thấy có thể tính toán cùng lúc cho nhiều chuỗi nếu các chuỗi này cùng thỏa mãn điều kiện ở bƣớc 2. Luận văn này chọn bƣớc 1 để thực hiện việc song song hóa thuật toán Clustal.

Xây dựng giải thuật

Phƣơng pháp quy hoạch động đƣợc sử dụng để tiếp cận bƣớc 1 của giải thuật Clustal, gồm 3 bƣớc:

– Khởi tạo ma trận từ hai chuỗi đầu vào.

– Tính toán, điền giá trị cho ma trận. Tìm ô có giá trị lớn nhất trong ma trận

– Sử dụng kỹ thuật lƣu vết để tìm ra kết quả

Ở bƣớc này, từ 2 chuỗi đầu vào tiến hành xây dựng ma trận đánh giá (mục 1 chƣơng 4). Giải thuật tính ma trận đánh giá F(m, n) và lƣu vết:

F(0, 0) = 0; for i = 1 to n do F(i, 0) = F(i-1, 0) - d; for j = 1 to m do F( j, 0)= F(0, j-1) - d; for i =1 to |S1| do for j = 1 to |S2| do {

F(i, j)= max (Max ( 0, F(i-1,j-1) + S(i,j), F(i-1,j)-d, F(i,j-1)-d );(1)

B ckPTR(F(i j)) = (im x jm x);//l u trữ vết vào mảng BackPTR. }

Với imax, jmax là giá trị tƣơng ứng của i, j trong biểu thức (1). Xây dựng phƣơng thức tìm so sánh trình tự theo nguyên tắc nêu ở trên, dựa vào mảng lƣu trữ vết BackPTR, thu đƣợc kết quả.

Nhận xét: Tại bƣớc xây dựng ma trận đánh giá, nhận thấy khi tính giá trị cho phần tử Pij nằm trên đƣờng chéo thứ i, cần phải có sẵn kết quả tính toán của 3 phần tử lân cận: Pi-1, j, Pi-1, j-1, Pi, j-1 (hình 4.3). Khi tính toán các phần tử nằm trên đƣờng chéo phụ không bị phụ thuộc lẫn nhau mà chỉ phụ thuộc vào các phần từ nằm trên đƣờng chéo phụ trƣớc đó (đƣờng chéo thứ i -1) nhƣ hình 4.6, do đó có thể tính toán riêng rẽ từng phần tử của một đƣờng chéo phụ trên từng luồng khác nhau.

Hình 4.5. Ph ơng pháp song song tính giá trị các phần tử ma trận đánh giá

Từ nhận xét trên, xây dựng giải thuật song song cho bài toán so sánh trình tự hai chuỗi nhƣ sau:

- Với từng phần tử của đƣờng chéo của ma trận đánh giá đƣợc tính bởi một luồng riêng. Nhƣ vậy đƣờng chéo có n phần tử thì cần n luồng để tính giá trị cho đƣờng chéo.

Hình 4.6 mô tả chi tiết cách điền giá trị cho ma trận đánh giá theo từng đƣờng chéo.

Giải thích cách điền giá trị cho ma trận đánh giá: khởi tạo ma trận đánh giá

F[n, m] với hàng F[0, i] = 0 và cột F[j, 0] = 0, trong đó: i = 0..5 và j = 0..6, n = 7 và

Với mỗi đƣờng chéo phụ, từ đƣờng chéo 0 đến đƣờng chéo n+m-2: tính giá trị các phần tử Pij (trong đó: i = 0..n+m - 2).

4.3.Song song hoá xử lý dữ liệu dựa trên mô hình truyền thông điệp MPI 4.3.1. Lý do chọn mô hình truyền thông điệp MPI 4.3.1. Lý do chọn mô hình truyền thông điệp MPI (adsbygoogle = window.adsbygoogle || []).push({});

Một chƣơng trình MPI có thể chạy trên các hệ thống phân tán hay còn gọi là distributed-memory hoặc máy tính với nhiều bộ xử lý multicomputers, hoặc grid computing … Mục đích của việc chạy trên các hệ thống này là giảm bớt thời gian hoàn thành công việc khi khối lƣợng công việc quá lớn. Do đó luận văn đã lựa chọn mô hình truyền thông điệp MPI.

4.3.2. Mô tả bài toán

Luận văn tiến hành giải quyết bài toán bắt cặp trình tự bằng thuật toán Smith-Waterman nhằm tìm kiếm ra các trình tự có sự tƣơng đồng cao nhất trong một ngân hàng lƣu trữ DNA so với một trình tự DNA mà ngƣời dùng đƣa vào.

Vấn đề bài toán: Ngân hàng DNA là nơi lƣu trữ các trình tự DNA với một số lƣợng rất lớn. Do đó để tìm kiếm đƣợc những trình tự DNA trong ngân hàng mà có sự tƣơng đồng với một trình tự DNA nào đó là một công việc tốn kém thời gian. Vì vậy, để giảm thiểu thời gian tìm kiếm, luận văn đã triển khai mô hình truyền thông điệp MPI nhằm phân chia tập lớn các DNA trong ngân hàng thành các tập dữ liệu nhỏ hơn, sau đó tiến hành tìm kiếm một cách đồng thời trên các tập dữ liệu đƣợc phân chia này. Ngoài ra thuật toán Smith-Waterman sử dụng để bắt cặp trình tự cũng đƣợc cải tiến thực hiện song song trên GPU để tăng hiệu suất công việc.

4.3.3. Mô tả thuật toán

Mô hình MPI trong công trình này luận văn sử dụng không làm nhiệm vụ bắt cặp trình tự, mà thực hiện nhiệm vụ phân chia ngân hàng DNA thành các tập dữ liệu nhỏ và tiến hành bắt cặp trình tự trên các tập dữ liệu nhỏ này một cách đồng thời.

Dữ liệu ban đầu là tập các trình tự trong ngân hàng DNA, tập các trình tự này là dữ liệu phân tán và đều có trên máy Server và Client. Công việc sẽ đƣợc triển khai cụ thể nhƣ sau:

Bƣớc 1: Nhập và gửi trình tự DNA muốn tìm - Công việc của Server:

o Nhập 1 trình tự DNA muốn tìm

o Gửi trình tự DNA muốn tìm này về cho các Client - Công việc của Client:

o Nhận trình tự DNA muốn tìm từ Server

Hình 4.6. Sơ đồ biểu diễn Server gửi chuỗi DNA về Client

Bƣớc 2: Xác định tập dữ liệu nhỏ sẽ đƣợc thực hiện trên Client

- Công việc của Server:

Từ một dãy các trình tự trong ngân hàng DNA

o Phân chia thành các tập dữ liệu nhỏ, xác định số lƣợng trình tự sẽ đƣợc xử lý trên các Client

o Xác định vị trí trình tự sẽ đƣợc xử lý trên Client

o Gửi các vị trí này về cho máy client - Công việc của Client:

o Nhận vị trí các trình tự sẽ phải bắt cặp đƣợc gửi từ Server ACTGTAGTCGTAGCTGATG Trình tự muốn tìm Client 1 Client 2 Client 3 server Nhập gửi DNA

Hình 4.7. Sơ đồ biểu diễn Server gửi vị trí các trình tự DNA trong ngân hàng về Client

Bƣớc 3:

- Công việc của Client:

o Client sử dụng thuật toán Smith-Waterman cải tiến chạy trên GPU để bắt cặp trình tự trên những trình tự đƣợc chỉ định trong ngân hàng DNA từ Server với trình tự DNA muốn tìm. Kết quả nhận đƣợc bao gồm chuỗi trình tự đã đƣợc bắt cặp và điểm số

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 54)