.10 Luật Amdahl

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số phương pháp thiết kế thuật toán cơ bản trong tính toán song song và ứng dụng (Trang 26)

Hiệu suất của tính tốn song song là tỉ số giữa hệ số tăng tốc và số các phần tử

xử lý trong hệ thống song song:

pt t p S E p s p p   (1.5)

Thuật tốn song song có thể có độ phức tạp lớn hơn thuật toán tuần tự, do đó rất khó để đánh giá thuật tốn song song. Kết quả đạt được thường được đánh giá bằng thực nghiệm chương trình.

1.4. Mơ hình lập trình truyền thơng điệp – MPI song song 1.4.1. Giới thiệu mơ hình truyền thơng điệp 1.4.1. Giới thiệu mơ hình truyền thơng điệp

Có rất nhiều ngơn ngữ lập trình và các thư viện được xây dựng nên để dành cho lập trình song song. Mơ hình truyền thông điệp chuẩn MPI (MessagePassing Interface) là một giao diện chuẩn cho phép nhiều máy tính giao tiếp với nhau, được sử dụng trong các cụm máy tính và siêu máy tính và là một trong các mơ hình cổ nhất được sử dụng rộng rãi nhất trong các mơ hình dùng cho lập trình trên các máy tính song song bởi vì nó u cầu tối thiểu về phần cứng.

Có hai tính chất quan trọng tạo nên bản chất của mơ hình truyền thơng điệp: thứ nhất là nó giả sử không gian địa chỉ được phân chia và thứ hai là nó chỉ hỗ trợ song song hóa tường minh.

1.4.2. Lập trình truyền thơng điệp - MPI

Giới thiệu về MPI

MPI là giao thức độc lập ngôn ngữ sử dụng cho các máy tính song song. MPI là một giao diện lập trình ứng dụng truyền thơng điệp với mục đích là đem lại hiệu năng cao, khả năng mở rộng và linh hoạt.

MPI là một thư viện chương trình mà có thể được gọi trực tiếp từ chương trình Fortran, C/C++ và bất cứ ngơn ngữ nào khác tương thích với thư viện hàm (như C#, Java và Python). Lợi ích của việc sử dụng MPI là tính khả chuyển (vì MPI được cài đặt cho hầu hết các kiến trúc bộ nhớ phân tán) và tốc độ (vì mỗi cài được được tối ưu hoá về nguyên lý cho phần cứng mà nó thực thi trên đó).

MPI sử dụng đặc tả độc lập ngôn ngữ (LIS) cho các lời gọi hàm. Hiện nay, các chuẩn MPI có hai phiên bản phổ biến là 1.2 (gọi tắt là MPI-1) chủ yếu là truyền thơng điệp và có mơi trường hoạt động tĩnh, và phiên bản MPI-2.1 (gọi tắt là MPI- 2) bao gồm nhiều đặc điểm mới như vào/ra song song, quản lý tiến trình động và truy cập bộ nhớ từ xa. MPI-2 gần như bao hàm toàn bộ MPI-1, mặc dù có một số hàm đã bị loại bỏ. Vì thế, các chương trình viết theo MPI-1.2 vẫn có thể tương thích với chuẩn MPI-2.

Chức năng của MPI

Chức năng của thư viện MPI bao gồm (nhưng không hạn chế) các hoạt động gửi nhận điểm-điểm, lựa chọn topo tiến trình logic dạng hình học phẳng hay đồ thị, trao đổi dữ liệu giữa các cặp tiến trình, phối hợp kết quả từng phần của q trình tính tốn, các nút đồng bộ cũng như các thông tin về mạng .v.v.

Trong chương trình MPI thì số lượng các tiến trình là cố định, các tiến trình có thể thực hiện trao đổi thông tin một-một để gửi dữ liệu từ tiến trình này sang tiến trình khác. Một nhóm các tiến trình có thể thực hiện các thao tác kết hợp để thực hiện các thao tác chung và phổ biến như là phép cơng hay broadcast. MPI có khả năng thăm dị các thơng điệp có hỗ trợ truyền thơng bất đồng bộ.

Các thuật toán chỉ tạo ra một tác vụ trên một bộ xử lý có thể apd dụng trực tieeos các thủ tục trao đổi kết hợp hay một-một nhằm đáp ứng các yêu cầu truyển

thơng. TRong khi đó các thuật toán tác vụ động hay dựa trên sự thực thi đồng thời của nhiều tác vụ trên cùng một bộ xử lý, thì cần phải điều chỉnh lại cho thích hợp với mơ hình MPI.

Một số khái niệm về MPI

Bộ truyền thông: Bộ truyền thông chịu trách nhiệm kết nối các tiến trình sử

dụng MPI. Trong truyền thơng, mỗi tiến trình có một bộ nhận diện độc lập và các tiến trình được sắp xếp theo một thứ tự topo nhất định. MPI cũng có các nhóm, nhưng chủ yếu phục vụ cho tổ chức và tái tổ chức các tiến trình con, trước khi các bộ truyền thơng khác được tạo ra. MPI hiểu được các hoạt động nhóm truyền thơng nội bộ đơn, và hoạt động truyền thơng liên nhóm. Trong MPI-1, hoạt động truyền thơng của nhóm đơn là phổ biến nhất, cịn truyền thơng liên nhóm giữ vai trị quan trọng nhất trong MPI-2 để mở rộng cho quản lý tiến trình động và truyền thơng tập thể.

Cơ sở điểm-điểm: Các hoạt động điểm-điểm, thực sự hữu ích trong truyền

thơng khơng đồng đều, mỗi tiến trình lặp đi lặp lại trao đổi các vùng dữ liệu với tiến trình khác giữa các bước tính tốn, trong kiến trúc chủ-tớ, tiến trình chủ thường xuyên gửi dữ liệu cho tiến trình kia mỗi khi có một tác vụ hồn thành.

MPI-1 đặc tả cơ chế truyền thơng điểm-điểm khơng khố và có khố.

Cơ sở cộng tác tập thể: Chức năng hoạt động tập thể trong MPI liên quan

đến truyền thông giữa mọi tiến trình trong nhóm. Một hàm, hay gặp, dạng này là

MPI_Bcast. Hàm này lấy dữ liệu từ một nút đặc biệt nào đó và gửi thơng điệp tới

mọi tiến trình trong nhóm. Một hàm khác đó là MPI_Reduce, hàm này dùng để lấy

dữ liệu từ mọi tiến trình khác trong nhóm. Các loại hàm này thường hữu ích khi bắt đầu hoặc kết thúc q trình tính tốn phân tán lớn. Cịn có một số hàm phức tạp hơn

như MPI_Alltoall, hàm này tái sắp xếp n phần dữ liệu từ mỗi tiến trình để nút thứ

nlấy dữ liệu phần tử thứ n từ mỗi nút.

Các loại dữ liệu: Nhiều hàm MPI cần chúng ta đặc tả loại dữ liệu được gửi

giữa các bộ xử lý. Điều này xuất phát từ việc các tham số của hàm MPI đều là các

char, double.., thì ta có thể sử dụng các loại dữ liệu định nghĩa của MPI như MPI_INT, MPI_CHAR, MPI_DOUBLE… Giả sử ta có một mảng các số nguyên, và

mọi bộ xử lý muốn gửi các mảng dữ liệu đó tới nút gốc, thì có thể gọi hàm

MPI_Gather. Ví dụ:

int array[100];

int root, total_p, *receive_array;

MPI_Comm_size(comm, &total_p);

receive_array=(int *) malloc(total_p*100*sizeof(int));

MPI_Gather(array, 100, MPI_INT, receive_array, 100, MPI_INT, root, comm);

Truyền thơng một phía (MPI-2): MPI-2 xác định ba thao tác truyền thơng

một phía, bao gồm Put, Get, và Accumulate, dùng để ghi, đọc đối với bộ nhớ từ xa,

và một thao thác rút gọn một số tác vụ trên cùng một bộ nhớ đó.

Các hàm này thường được sử dụng trong các thuật toán mà việc đồng bộ là khơng thuận tiện (ví dụ như nhân ma trận phân tán), hoặc ở những bài toán mà nhiệm vụ cần cân bằng tải trong khi các bộ xử lý khác đang sử dụng dữ liệu.

Quản lý tiến trình động (MPI-2): Vấn đề cốt lõi của đặc điểm này đó là “khả

năng của một tiến trình MPI có thể tạo ra một tiến trình MPI mới hoặc để thiết lập một giao tiếp với các tiến trình MPI để có thể khởi động rời rạc nhau”. Chuẩn MPI- 2 mơ tả ba giao diện chính để các tiến trình MPI có thể thiết lập giao tiếp động, đó

là: MPI_Comm_spawn, MPI_Comm_accept/MPI_Comm_connect

MPI_Comm_join. Hàm MPI_Comm_spawn cho phép một tiến trình MPI có thể

nhân bản một số tiến trình MPI nữa. Tập hợp các tiến trình MPI mới nhân bản này

tạo thành một bộ truyền thông MPI_COMM_WORLD và có thể giao tiếp với tiến trình cha. Hàm MPI_Comm_spawn_multiple là một biến thể, nó cho phép các tiến

trình nhân bản khác nhau với các tham số khác nhau.

MPI vào/ra (MPI-2): Đặc điểm vào ra song song được giới thiệu với MPI-2,

đơi khi cịn được gọi là MPI-IO, liên quan đến một tập các hàm cho phép có thể giảm bớt khó khăn trong quản lý vào/ra trên các hệ thống phân tán, cũng như là cho phép các tệp có thể được truy cập dễ dàng hơn.

1.4.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 tập tin .h như mpi.h mpio.h và các tập tin khác. Thơng thường người lập trình chỉ cần dùng thư viện mpi.h là đủ.

Môi trường MPI: 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

Hình 1.12: Cấu trúc chương trình MPI Các tập tin thư viện Các tập tin thư viện

Khởi tạo môi trường MPI

Thực hiện các thủ tục hàm của MPI

Chương 2 – SONG SONG HÓA THUẬT TỐN TÌM XÂU CON CHUNG DÀI NHẤT

2.1. Đặt vấn đề

Tin sinh học (bioinformatics) là một lĩnh vực khoa học sử dụng các công nghệ của ngành toán học ứng dụng, tin học, thống kê, khoa học máy tính và tốn sinh học (biomathematics) để nghiên cứu thơng tin về cuộc sống từ góc độ sinh học. Các ứng dụng của tin sinh học tập trung vào nghiên cứu ở cấp độ phân tử để hiểu sâu sắc về cấu trúc cơ bản và các quá trình ở cấp độ tế bào và phân bào. Những lĩnh vực nghiên cứu chính bao gồm bắt cặp trình tự (sequence alignment), bắt cặp cấu trúc protein (protein structural alignment), dự đoán cấu trúc protein (protein structural prediction), dự đoán biểu hiện gen (gene expression), tương tác protein-protein (protein-protein interaction), mơ hình hố q trình tiến hố. Hai lĩnh vực phát triển cụ thể của tin sinh học là di truyền học và nghiên cứu protein. Các ứng dụng chủ tập trung vào việc sử dụng thơng tin kết hợp với tính tốn trong việc tìm hiểu vai trị kết hợp giữa DNA, RNA và protein trong một cơ thể sống.

Bài tốn tìm dãy con chung dài nhất của nhiều chuỗi được ứng dụng nhiều trong các lĩnh vực sinh học và di truyền học tính tốn. Đã có nhiều phương pháp có hiệu quả cho bài toán này với phương pháp quy hoạch động song song cho trường hợp đặc biệt là so khớp hai chuỗi. Tuy nhiên, do kích thước của dữ liệu tin sinh học ngày càng đồ sộ và phức tạp, nhu cầu giải nhanh bài tốn so khớp xâu nói chung và đặc biệt là bài tốn tìm xâu cịn chung dài nhất với số xâu lớn hơn hai đang trở nên rất cấp thiết.

Nội dung chương này sẽ tập trung vào giải quyết bài tốn tìm xâu con chung dài nhất với số xâu lớn hơn hai với chiến lược song song hóa tính tốn.

2.2. Bài tốn tìm xâu con chung dài nhất Định nghĩa xâu. Định nghĩa xâu.

Kí hiệu a,b,c,...là các kí tự trong bảng chữ cái . Một xâu được xác định như một dãy liên tiếp của các kí tự. Với một xâu s ta có một số quy ước về ký hiệu như sau:

- s là độ dài xâu s. Nếu s 0 thì s là xâu rỗng và được ký hiệu là .

- si là ký tự thứ i của xâu si1,...,s. Định nghĩa xâu con.

Cho ss1s2...sn,si  là một xâu có độ dài n trên bảng chữ cái . Một xâu

   sisi si si X k, ... 2

1 là một xâu con của s, nếu j,1 jk: 1ijn, và ijij1

Định nghĩa xâu con chung dài nhất

Cho S s1,s2,...,sd là một tập các xâu trên bảng chữ cái  với độ dài

d

n n

n1, 2,..., tương ứng. Xâu con chung dài nhất của tập S là một xâu X thỏa mãn:

(i) X là một xâu con của si, i1,2,...,d.

(ii) X có độ dài lớn nhất thỏa mãn (i). Ví dụ:

Cho 3 xâu s1"ATGCCAAT", s2 "AGGTGCT", s3"GCCTAC". Khi đó xâu con chung dài nhất của cả ba xâu là X"GCT".

Trong tin sinh học, tùy thuộc vào kiểu của dữ liệu, kích thước của bảng chữ cái

 thì độ dài của xâu ký tự rất đa dạng. Bảng 1 dưới đây thống kê về độ dài xâu ký tự của một số dữ liệu tin sinh học [12].

Bảng 2.1 Độ dài xâu ký tự của một số dữ liệu tin sinh học

Dữ liệu sinh học Bảng chữ cái  Độ dài xâu ký tự

Protein A,C,...,W, 20 ~ 102 – 104

ARN A,C,G,U ~ 102 – 104

Gen gen1,gen2,...,genk ~ 102 – 104

ADN A,C,G,T ~ 103 – 1012

Bảng 2.1 cho thấy độ dài của các xâu trong dữ liệu tin sinh học là rất lớn. Do đó việc tìm ra xâu con chung dài nhất giữa các xâu địi hỏi tính tốn rất phức tạp và tốn rất nhiều thời gian.

2.3. Thuật tốn quy hoạch động giải bài tốn tìm xâu con chung dài nhất. Giả sử ta có hai dãy X x1,x2,...,xm và Y y1,y2,...,yn.

Ta có Z z1,z2,...,zk là một xâu con chung bất kỳ của XY. Tiền tố thứ

icủa xâu X x1,x2,...,xm là một dãy con của X bao gồm từ phần tử ban đầu đến phần tử tứ thứ i của X nghĩa là Xi x1,x2,...,xi, i0,1,2,...,m. Khi đó ý tưởng giải bài tốn là tính xâu con chung dài nhất cho mọi khả năng các cặp của tiền tố hai dãy đã cho. Ký hiệu c , i j là độ dài của dãy con chung dài nhất XiYj. Khi đó đại lượng cm,n là xâu con chung dài nhất của toàn bộ hai chuỗi đã cho. Các bước tính

m n

c , như sau:

Bước cơ sở: c i,0 c0,j0, Nếu một trong những xâu đã cho là rỗng thì dãy con chung dài nhất cũng rỗng và có độ dài bằng 0.

Ký tự cuối cùng của tiền tố bằng nhau: Giả sử XiYj. Khi đó phần tử cuối cùng của xâu con chung dài nhất zkxiyjZk1 là một xâu con chung dài nhất của xâu Xm1 và Yn1. Thật vậy, nếu zkxi thì ta ghép thêm xiyj vào Z để có

được dãy con chung của XY có chiều dài k1, mâu thuẫn với giả thiết cho rằng Z là dãy con chung dài nhất của XY. Như vậy ta phải có zkxiyj. Vậy thì Zk1 là xâu con chung dài nhất của Xm1 và Yn1 có độ dài k1.

Như vậy, nếu xiyj thì c i, jci1,j11.

Ký tự cuối cùng của tiền tố không bằng nhau: Giả sử xiyj. Khi đó phần tử

i

k x

z  ( hoặc zkyj ) nghĩa là Z là xâu con chung dài nhất của Xi1 và Yj ( hoặc

Z là xâu con chung dài nhất của XiYj1). Thật vậy, nếu zkxi, thì Z là xâu con chung của Xi1 và Yj. Nếu có một xâu con chung của XiYj, điều này mâu thuẫn với giả thiết Z là xâu con chung dài nhất của XiYj.

Như vậy, xiyj không đồng thời nằm trong xâu con chung dài nhất, nghĩa là hoặc xi nằm trong xâu con chung dài nhất, hoặc yj nằm trong xâu con chung dài nhất (có khả năng cả hai đều không nằm trong xâu con chung dài nhất). Vậy nếu

j

i y

x  thì c i,j maxci1, j ,ci, j1.

Công thức truy hồi cho xâu con chung dài nhất được thiết lập như sau:

              y x khi 1 v , y x khi 0 v ( v 1 - j 1, - i c , 1 - j i, c , j 1, - i c i c j j c i i c j j j i ) max( 0 , 0

Một phần của tài liệu (LUẬN văn THẠC sĩ) một số phương pháp thiết kế thuật toán cơ bản trong tính toán song song và ứng dụng (Trang 26)

Tải bản đầy đủ (PDF)

(61 trang)