Tải bản đầy đủ (.pdf) (47 trang)

Luận văn thạc sĩ công nghệ thông tin 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.44 MB, 47 trang )

BỘ GIÁO DỤC ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
***


PHẠM ĐÔNG PHONG



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


LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN


Đồng Nai – Năm 2013

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC LẠC HỒNG
* * *



PHẠM ĐÔNG PHONG


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




Chuyên ngành: Công nghệ thông tin
Mã ngành: 60.48.02.01

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN


Người hướng dẫn khoa học :
PGS. TS. TRẦN VĂN LĂNG

Đồng Nai – Năm 2013

i
LỜI CẢM ƠN
Ln PGS. TS. Trn
 tôi trong sut thi gian hc tp v  ng dn tôi hoàn
thành lu
y cô Khoa Công ngh hc tp
và nghiên cu kin và h tr tôi trong sut thi gian qua.
i thân, b ng
viên tôi trong sut thi gian hc ti gian thc hin lu

Biên Hòa, ngày 25 tháng 05 
Phạm Đông Phong
ii
LỜI CAM ĐOAN
u ca bn thân. Các s liu,
kt qu trình bày trong luc. Nhc s dng
trong lun gc và trích d.

Biên Hòa, ngày 25 tháng 05 
Hc viên
Ph

iii
TÓM TẮT
Bắt cặp các trình tự (Sequence Alignment) sinh học DNA, Protein là một bài
toán cơ bản và đòi hỏi nhiều thời gian xử lý trong lĩnh vữc sinh tin học
(Bioinfomatics). Trong đó, Smith-Waterman là một thuật toán bắt cặp cục bộ nhằm
giải quyết bài toán này. Trên cơ sở bài toán bắt cặp này, có thể ứng dụng cho nhiều
bài toán khác. Đặc biệt đó là bài toán tìm sự tƣơng đồng của các trình tự.(Sequence
Similarity Searching)
Tuy nhiên, hiện nay số lƣợng các trình tự trong các cơ sở dữ liệu sinh học lớn
trên thế giới nhƣ NCBI, EMBL, DDBJ đang gia tăng nhanh chóng dẫn đến việc các
thuật toán xử lý trên khối lƣợng lớn dữ liệu trở nên kém hiệu quả. Luận văn này
trình bày một phƣơng pháp triển khai thuật toán Smith-Waterman trên môi trƣờng
phân tán MPI kết hợp với kiến trúc chia sẻ GPU-CPU nhằm tăng tốc thuật toán.
Môi trƣờng phân tán MPI với các thuật toán xử lý song song phù hợp cho phân
hoạch dữ liệu giúp cải thiện hiệu suất tìm kiếm và kiến trúc chia sẻ sử dụng CUDA
cho phép song song hóa bài toán bắt cặp trình tự.
Từ khoá: Sinh tin hc, bt cp trình t, CUDA, GPU, MPI.

iv
MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
TÓM TẮT iii
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT vi
DANH MỤC HÌNH vii
DANH MỤC BẢNG ix

DANH MỤC BIỂU ĐỒ x
MỞ ĐẦU 1
CHƢƠNG 1. TỔNG QUAN 5
1.1. Giới thiệu vấn đề 5
1.2. Tổng quan về sinh tin học 7
1.2.1. Amino acid và tính chất 7
1.2.2. DNA và RNA 8
1.2.3. Protein 10
1.2.4. Ngân hàng dữ liệu và phần mềm trong sinh tin học 11
1.3. Bắt cặp trình tự 13
1.4. Song song hoá dữ liệu trên môi trƣờng phân tán dùng MPI 14
1.5. Công nghệ CUDA giải quyết bài toán sắp hàng trình tự. 15
CHƢƠNG 2. CÁC PHƢƠNG PHÁP SẮP HÀNG TRÌNH TỰ 19
2.1. Khái niệm alignment 19
2.1.1. Ký tự ―gap‖ 19
2.1.2. Hàm đánh giá 20
2.1.3. Phân loại bắt cặp trình tự 22
2.2. Bắt cặp hai trình tự (Pairwise Sequence Alignment-PSA) 22
2.3. Bắt cặp đa trình tự (Multiple Sequence Alignment-MSA) 23
2.4. Các thuật toán so sánh các trình tự sinh học 24
2.4.1. Thuât toán Needleman – Wunsch 24
2.4.2. Thuật toán Smith-Waterman 27
CHƢƠNG 3. MÔI TRƢỜNG LẬP TRÌNH CUDA VÀ MPI 30
3.1. Khái niệm và thuật ngữ 30
3.1.1. Kiến trúc máy tính Von Neumann 30
3.1.2. Phân loại theo Flynn 31
3.2. Môi trƣờng lập trình CUDA 34
3.2.1. Giới thiệu bộ xử lý đồ hoạ - GPU. 34
3.2.2. Môi trƣờng lập trình CUDA 38
3.3. Môi trƣờng lập trình truyền thông điệp với MPI 44

3.3.1. Lịch sử MPI 44
3.3.2. Đặc điểm của MPI 45
v
3.3.3. Cấu trúc chƣơng trình MPI 45
3.3.4. Cách lập trình MPI 45
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. 47
4.1. Thuật toán Smith-Waterman 47
4.2. Xây dựng giải thuật song song và cài đặt trên môi trƣờng CUDA. 51
Xây dựng giải thuật 51
4.3. Song song hoá xử lý dữ liệu dựa trên mô hình truyền thông điệp MPI 54
4.3.1. Lý do chọn mô hình truyền thông điệp MPI 54
4.3.2. Mô tả bài toán 54
4.3.3. Mô tả thuật toán 54
CHƢƠNG 5. KẾT QUẢ THỰC NGHIỆM 58
5.1. So sánh thời gian chạy chƣơng trình. 59
5.2. So sánh độ chính xác. 62
KẾT LUẬN 64
TÀI LIỆU THAM KHẢO


viii
Hình 4.6. Sơ đồ biểu diễn Server gửi chuỗi DNA về Client 55
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 56
Hình 4.8. Sơ đồ biểu diễn Client bắt cặp từng trình tự DNA trong ngân hàng với
chuỗi truy vấn DNA muốn tìm 57
Hình 5.1. Kết quả chạy chƣơng trình với file cơ sở dữ liệu db1b 59
Hình 5.2. File lƣu trữ kết quả sắp hàng đa trình tự 59



2
phần mềm trên GPU đƣợc xây dựng bằng ngôn ngữ lập trình C. Với CUDA các lập
trình viên dùng để điều khiển GPU để xử lý, tính toán song song các dữ liệu lớn.
Việc tăng tốc trong quá trình tính toán không những đòi hỏi những thiết bị
GPU có khả năng xử lý tốc độ cao với dữ liệu khổng lồ mà cần phải có những giải
thuật song song hữu hiệu.
Xuất phát từ nhu cầu trên, luận văn tập trung xây dựng các module chƣơng
trình giải quyết vấn đề xếp hàng trình tự trên hệ thống phân tán và tìm sự tƣơng
đồng giữa các trình tự sinh học.
Mục tiêu luận văn
Khảo sát thuật toán Smith - Waterman để sắp hàng trình tự trên hệ thống phân
tán dùng MPI và kiến trúc chia sẻ với CUDA.
– Luận văn tập trung nghiên cứu khả năng giải quyết bài toán sắp hàng
trình tự cục bộ bằng cách xử lý song song hóa dữ liệu trình tự trên môi
trƣờng phân tán MPI và song song hoá xử lý của thuật toán Smith-
Waterman và hiện thực trên kiến trúc chia sẻ đa nhân đồ hoạ GPU
nhằm gia tăng hiệu năng tính toán.
– Cung cấp thực nghiệm cho các nghiên cứu khác sâu hơn hoặc phát triển
các ứng dụng phục vụ nhu cầu thực tiễn.
Nội dung thực hiện
Để hoàn thành đƣợc mục tiêu đề ra cần luận văn cần nghiên cứu các nội dung
nhƣ sau:
− Thu thập các tài liệu có liên quan đến vấn đề bắt cặp trình tự.
− Khảo sát và cài đặt thuật toán Smith – Wateman với các môi trƣờng khác
nhau nhƣ MPI, CUDA để tìm kết quả bắt cặp cho sự tƣơng đồng và không
tƣơng đồng của hai phần tử trong hai trình tự
− Tìm hiểu các giải thuật tính toán song song và các cách thiết kế mẫu trong
tính toán song song. xử lý song song hóa dữ liệu trên môi trƣờng MPI và xây
dựng giải thuật toán song song trên thiết bị đồ họa GPU.

− Đánh giá kết quả theo yêu cầu của luận văn.
3
Phƣơng pháp thực hiện
− Sử dụng hệ điều hành Windows và MPI để chuyển thông điệp cấp thập trên
hệ thống phân tán.
− Sử dụng ngôn ngữ lập trình cấp cao nhƣ C/ C++ trên Visual Studio để lập
trình.
− Sử dụng kiến trúc tính toán song song với CUDA (Compute Unified Device
Architecture) do NVIDIA phát triển. CUDA là động cơ tính toán trong các
GPU (Graphics Processing Unit) của NVIDIA, để cài đặt các thuật toán chạy
trên GPU thông qua ngôn ngữ C++.
− Sử dụng thuật toán Smith - Waterman để thực hiện trên một số trình tự cần
so sánh. Thuật toán này bắt cặp cục bộ để tìm vùng tƣơng đồng giữa hai trình
tự nucleotide hay protein, thuật toán tìm các đoạn hay các miền có độ tƣơng
đồng cao từ đó đánh giá mức độ tƣơng đồng của hai trình tự.
Dự kiến kết quả đạt đƣợc
− Về lý thuyết: Tài liệu về vấn đề 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.
− Về sản phẩm: Module chƣơng trình về sự tƣơng đồng của các trình tự sinh
học.
Dự kiến tên công trình công bố trên tạp chí hoặc hội thảo khoa học:
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.
Bố cục luận văn
Luận văn bao gồm 5 chƣơng. Chƣơng thứ nhất giới thiệu vấn đề cần giải
quyết, trình bày một số khái niệm tổng quan về sinh tin học, bài toán sắp hàng trình
tự, xử lý dữ liệu song song trên môi trƣờng phân tán dùng MPI, công nghệ CUDA
của nVidia, mục tiêu cũng nhƣ cấu trúc luận văn. Chƣơng thứ hai trình bày chi tiết
các phƣơng pháp sắp hàng trình tự. Chƣơng thứ ba trình bày công nghệ CUDA của
nVidia và ứng dụng, lập trình song song trên môi trƣờng phân tán sử dụng mô hình

4
truyền gói tin MPI. Chƣơng thứ tƣ trình bày 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 thứ năm
trình bày kết quả thực hiện, đánh giá thực nghiệm và phần kết luận.
Chƣơng 1: Tổng quan
Trong chƣơng này giới thiệu về sự cần thiết việc ứng dụng công nghệ thông
tin vào sinh học. Tổng quan về sinh tin học và vấn đề bắt cặp trình tự nhằm giải
quyết bài toán tìm sự tƣơng đồng giữa các trình tự sinh học. Giới thiệu song song
hóa dữ liệu trên môi trƣờng MPI và công nghệ CUDA giải quyết bài toán sắp hàng
trình tự.
Chƣơng 2: Các phƣơng pháp sắp hàng trình tự
Trong chƣơng này, luận văn đƣa ra khái niệm alignment, vấn đề bắt cặp trình
tự để tìm sự tƣơng đông giữa hai trình tự hoặc đa trình tự. trong đó, luận văn cũng
giới thiệu hai thuật toán cơ bản đƣợc áp dụng trong vấn đề bắt cặp nhƣ: Needleman
– Wunsch, Smith – Waterman.
Chƣơng 3: Môi trƣờng lập trình CUDA và MPI
Trong chƣơng này, luận văn giới thiệu kiến trúc máy tính Von Neumann và
phân loại theo Flynn. Cũng nhƣ môi trƣờng lập trình CUDA và môi trƣơng truyền
thông điệp MPI.
Chƣơng 4: giảu thuật và phƣơng pháp thực hiện giải thuật trên môi trƣờng MPI kết hôp
công nghệ CUDA
Trong chƣơng này, giới thiệu thuật toán Smith – Waterman giúp nhận ra
những miền tƣơng đồng giữa hai chuỗi tìm kiếm cho việc sắp hàng chuỗi cục bộ tối
ƣu hơn. Xây dựng các giải thuật song song và cài đặt trên môi trƣờng CUDA. vấn
đề song song hóa dữ liệu trên môi trƣờng MPI.
Chƣơng 5: Kết quả thực nghiệm
Trong chƣơng này, thực hiện so sánh thời gia chạy cũng nhƣ độ chính xác.
Cũng nhƣ nhận xét chƣơng trình chạy trên CUDA vƣợt trội hơn chƣơng trình CPU
ở các trƣờng hợp các trình tự có độ dài chuỗi lớn và số trình tự nhiều.


6
cặp toàn cục đòi hỏi sắp xếp và so sánh về trình tự một cách toàn bộ. Trong loại
này, trình tự đầu vào thƣờng tƣơng tự và có độ dài xấp xỉ bằng nhau. Bắt cặp cục bộ
tập trung vào tính tƣơng đồng của các bộ phận cục bộ. Các thuật toán liên kết cục
bộ thƣờng cố gắng sắp hàng các trình tự để có đƣợc phần giống nhau dài nhất. Liên
kết cục bộ phù hợp với trình tự có độ dài khác nhau
Đối với bắt cặp toàn cục, thuật toán đƣợc phát triển nhất là Needleman-
Wunsch [7]. Đây là một phƣơng pháp sắp xếp dựa vào quy hoạch động, để tính
điểm cho quá trình liên kết. Mặt khác, các thuật toán BLAST [8] cho phép tìm kiếm
trình tự con (subsequences) giống nhƣ trình tự truy vấn. BLAST sử dụng phƣơng
pháp heuristic vì vậy tốc độ đặc biệt nhanh khi thực hiện trên các ngân hàng gen
lớn. Điều này đã làm BLAST trở thành công cụ phổ biến. Mặc dù với tốc độ thấp
hơn thuật toán BLAST, nhƣng với một độ chính xác cao hơn, nên thuật toán Smith-
Waterman [9] đƣợc xem là một trong những thuật toán phổ biến nhất của việc giải
quyết các vấn đề về sắp hàng trình tự cục bộ. Việc cài đặt thuật toán Smith-
Waterman đòi hỏi một lƣợng lớn các tính toánnên không thể chấp nhận cho hệ
thống máy tính thông thƣờng.
Đã có nhiều giải pháp đƣa ra để giải quyết bài toán, trong đó việc xử lý song
song trên môi trƣờng phân tán với kỹ thuật truyền thông điệp MPI hoặc sử dụng
công nghệ CUDA (Compute Unified Device Architecture) trên GPU đa nhân là
hƣớng tiếp cận đƣợc nhiều tác giả quan tâm. Nhóm tác giả Fa Zhang, Xiang-Zhen
Qiao, Zhi-Yong Liu trong [10] trình bày phƣơng pháp song song hoá dữ liệu với kỹ
thuật chia để trị, nhóm tác giả M.Noorian, H.Pooshfam, Z.Noorian, R.Abdullah
trong [11] đề xuất một thuật toán lai dựa trên các hệ thống phân tán MPI và
OpenMP triển khai trên cụm máy chủ SMP. Hƣớng tiếp cận hiện nay là dựa trên
kiến trúc chia sẻ đa nhân đồ hoạ GPU có khá nhiều công trình nghiên cứu, điển hình
là các công trình đƣợc nêu trong các tài liệu [12], [13], đây có thể xem là hƣớng tiếp
cận có nhiều triển vọng do công nghệ đồ hoạ đa nhân đang phát triển mạnh mẽ. Tuy
nhiên việc tập trung xử lý trên môi trƣờng chia sẻ bộ nhớ của một máy tính với
công nghệ CUDA, OpenCL hoặc các công nghệ dựa trên đa nhân đồ hoạ khác chƣa

giải quyết trọn vẹn vấn đề với số lƣợng dữ liệu trình tự lớn mà chỉ nhằm tăng tốc xử
lý cho thuật toán quy hoạch động vốn đòi hỏi nhiều tài nguyên tính toán. Một nhánh
9
và đƣợc ký hiệu là A (Adenine), G (Guanine), C (Cytosine), T (Thymine). Ta có bộ
ký hiệu cho các nucleotic nhƣ sau: Nuc={A, C, G, T}.
DNA gồm 3 thành phần chính: bazơ nitơ dạng purine và pyrimidine
(A,T,C,G), đƣờng pentose (đƣờng 5 carbon) và axit phosphoric (H
3
PO
4
). Ba thành
phần này có tỷ lệ 1:1:1 và chúng liên kết với nhau tạo thành một nucleotide.

Hình 1.2. Cu to mt nucleotide [1].
Cấu trúc của DNA đƣợc Watson-Crick khám phá ra. Đó là chuỗi xoắn kép
cong nhẹ nhàng, có cấu trúc không gian 3 chiều, gồm hai sợi song song, đối xứng
và bổ sung cho nhau (hình 1.3.) theo một qui luật nghiêm ngặt: A bắt cặp với T và
C bắt cặp với G nhờ các liên kết hydro. Cấu trúc xoắn kép của Watson- Crick là
chiếc chìa khóa để mở ra những kỹ thuật của sự sống.

Hình 1.3. Chui xon kép DNA [3].
12
 Chuyển mã trình tự DNA sang RNA.
 Hiển thị cặp trình tự chính và trình tự bắt cặp.
 Tìm vị trí của một enzyme giới hạn trong một trình tự.
 Vẽ bản đồ plasmid, hỗ trợ thiết kế phân tử
 Tìm kiếm các đoạn mồi (primer)
 So sánh mức độ tƣơng đồng (similarity) giữa các trình tự
 Vẽ cây biểu diễn mức độ tƣơng đồng giữa các trình tự (biểu đồ
dendogram)

 Tìm kiếm các trình tự, các đoạn lặp (motif), các enzyme trong cơ sở dữ
liệu.
Ở Việt Nam, lĩnh vực này cũng chỉ xuất hiện ở các viện nghiên cứu, trong một
vài trƣờng đại học lớn, và cũng chỉ dừng lại ở trong giới nghiên cứu về Công nghệ
sinh học. Hoạt động của khoa Công nghệ sinh học, trƣờng đại học Khoa Học Tự
Nhiên TP. Hồ Chí Minh; Viện Công nghệ sinh học, Viện Khoa học và Công nghệ
Việt Nam; Trƣờng đại học Y Dƣợc TP. Hồ Chí Minh là những minh chứng.
Phân viện Công nghệ thông tin tại TP. Hồ Chí Minh, từ năm 2004 đã hợp tác
với một số nhà nghiên cứu của Viện Công nghệ Sinh học; của NCBI/NLM/NIH và
NIAID/NIH đã xây dựng phần mềm HiBio [4] phục vụ việc nghiên cứu Công nghệ
Sinh học với các chức năng:
– Thiết kế mồi để hiển thị cặp mồi tốt nhất, các đoạn mồi xuôi, các đoạn
mồi ngƣợc, hoặc sắp xếp theo các tính chất.
– Thiết kế bản đồ plasmid với các tính năng cần thiết ở các dạng khác
nhau, trong đó có cả việc đề xuất những enzym cắt.
– Có thể sử dụng để dự đoán cấu trúc protein bậc 2, xem cấu trúc bậc 3
của một protein nào đó.
– Sử dụng để vẽ cây sinh loài theo hai dạng có gốc và không gốc.
– Vấn đề tìm kiếm motif cũng đƣợc đặt ra trong HiBio.
….
Ngoài phần mềm trên, Sở Khoa học và Công nghệ Tp. Hồ Chí Minh cũng
quản lý dự án về Xây dựng mô hình và công cụ tin học để xử lý thông tin về gene,
16
máy tính là một nhiệm vụ cấp bách và cần thiết. Để giải quyết khó khăn này, ngƣời
ta đã nghiên cứu tăng tốc độ tính toán bằng hai phƣơng pháp hoặc kết hợp cả hai:
 Phƣơng pháp 1: Cải tiến công nghệ, tăng tốc độ xử lý của máy tính.
Công việc này đòi hỏi nhiều thời gian, công sức và tiền của, nhƣng tốc
độ cũng chỉ đạt đƣợc đến một giới hạn nào đó.
 Phƣơng pháp 2: Chia bài toán ra thành những công việc nhỏ để có thể
chạy song song trên nhiều bộ xử lý.

Việc gia tăng tốc độ tính toán theo phƣơng pháp thứ hai đƣợc thực hiện dựa
vào công nghệ tính toán song song, đó là việc sử dụng đồng thời nhiều tài nguyên
tính toán để giải quyết bài toán. Các tài nguyên tính toán có thể bao gồm một máy
tính với nhiều bộ vi xử lý, một tập các máy tính kết nối mạng hay là một sự kết hợp
của hai dạng trên. Công nghệ tính toán song song cho phép giảm thời gian thực thi
bài toán tùy thuộc cách phân chia và số bộ xử lý thực thi chƣơng trình. Nguyên tắc
quan trọng nhất của tính toán song song chính là tính đồng thời hay xử lý nhiều tác
vụ cùng một lúc. Lập trình song song tập trung vào việc phân chia bài toán tổng thể
ra thành các công việc con nhỏ hơn rồi định vị các công việc đó đến từng bộ xử lý
và đồng bộ các công việc để nhận đƣợc kết quả cuối cùng. Hƣớng tiếp cận là phân
tích và chia nhỏ bài toán cần thực hiện thành nhiều nhiệm vụ có thể đƣợc xử lý
cùng một lúc bằng cách tận dụng khả năng xử lý tác vụ trên nhiều lõi của card đồ
họa Nvidia với công nghệ CUDA.
Trong vài năm gần đây, năng lực tính toán của các bộ xử lý đồ họa tăng lên
đáng kể so với CPU. Tính đến tháng 6/2008, dòng GPU GT200 của nVidia đã đạt
ngƣỡng 933 Gflops, gấp hơn 10 lần so với bộ xử lý 2 lõi Intel Xeon 3.2 GHz tại
cùng thời điểm.
Hình 1.5. thể hiện sự tăng tốc về năng lực tính toán của các GPU nVidia so
với CPU của Intel.
17

Hình 1.5. Bi c tính toán CPU-GPU [17]
Tuy vậy, sự vƣợt trội về hiệu năng này không đồng nghĩa với sự vƣợt trội về
công nghệ. GPU và CPU đƣợc phát triển theo 2 hƣớng khác biệt: trong khi công
nghệ CPU cố gắng tăng tốc cho một nhiệm vụ đơn lẻ thì công nghệ GPU lại tìm
cách tăng số lƣợng nhiệm vụ có thể thực hiện song hành. Vì vậy, khi mà số lƣợng
lõi tính toán trong CPU đạt đến con số 8 lõi thì số lƣợng lõi xử lý của GPU đã đạt
đến 240 và hứa hẹn ngày càng tiếp tục đƣợc tăng lên. Để trả giá cho năng lực tính
toán, GPU hy sinh tính linh động của các lõi xử lý. Hiện tại các lõi của GPU tại một
thời điểm chỉ thực hiện đƣợc một nhiệm vụ duy nhất, do vậy chỉ thích hợp với

những bài toán song song dữ liệu trong đó cùng một đoạn mã chƣơng trình đƣợc
thực thi song song cho nhiều bộ dữ liệu khác nhau.
Bên cạnh việc phát triển các bộ xử lý đồ họa có năng lực tính toán lớn, các
hãng sản xuất cũng quan tâm tới môi trƣờng phát triển ứng dụng cho các bộ xử lý
đồ họa này. CUDA là môi trƣờng phát triển ứng dụng trên các GPU của nVidia, bao
gồm ngôn ngữ lập trình song song, dữ liệu cùng với các công cụ biên dịch, gỡ rối và
giám sát thực thi cho các ứng dụng hoạt động dựa vào công nghệ này. Một số đặc
điểm chính của công nghệ CUDA:
 CUDA dựa trên nền tảng ngôn ngữ C, do đó nó quen thuộc với đa số
nhà phát triển ứng dụng.
 Mã CUDA chia làm 2 phần: phần thực thi trên CPU và phần thực thi
trên GPU. Phần thực thi trên GPU, còn gọi là kernel, khi đƣợc gọi có
18
thể thực thi song song trên hàng ngàn tiến trình riêng biệt. Mỗi tiến
trình có một định danh riêng để xác định nhiệm vụ của tiến trình đó.
 Để tránh sự phụ thuộc vào phần cứng, CUDA cho phép ngƣời lập trình
tùy ý xác định số lƣợng tiến trình song song, tuy nhiên các tiến trình
này cần đƣợc phân theo từng block với số lƣợng tối đa là 512. Cách
chia block giúp ngƣời lập trình không cần quan tâm tới năng lực phần
cứng, đồng thời giúp việc thực thi đƣợc hiệu quả ngay cả trên nhiều
loại GPU khác nhau.
Bộ nhớ đƣợc tổ chức phân cấp theo các lớp sau:
 Bộ nhớ chính: vùng bộ nhớ dành cho phần mã CPU. Chỉ có phần mã
này có thể truy cập và chỉnh sửa thông tin trên đó
 Bộ nhớ toàn cục GPU: vùng bộ nhớ mà tất cả các tiến trình của GPU có
thể truy cập. Có thể chuyển dữ liệu từ bộ nhớ chính sang bộ nhớ này
thông qua một số hàm thƣ viện của CUDA. Bộ nhớ này thông thƣờng
đƣợc dùng để lƣu trữ các dữ liệu đầu vào và đầu ra cho các tiến trình
song song trên GPU.
 Bộ nhớ chia sẻ: vùng bộ nhớ mà chỉ các tiến trình trong cùng một block

mới có thể truy cập. Bộ nhớ chia sẻ đƣợc tích hợp ngay trên chip xử lý
nên tốc độ truy cập dữ liệu cao hơn rất nhiều so với bộ nhớ toàn cục.
Bộ nhớ này đƣợc dùng để lƣu trữ các dữ liệu chia sẻ tạm thời nhằm
tăng tốc quá trình sử dụng bộ nhớ.
 Bộ nhớ cục bộ GPU: vùng bộ nhớ đƣợc cấp phát cho các biến cục bộ
của từng tiến trình GPU và không thể truy cập đƣợc từ các tiến trình
khác.
Với khả năng song song hóa dữ liệu với cực nhiều tiến trình nhƣ vậy, công
nghệ CUDA là giải pháp thích hợp nâng cao năng lực tính toán cho bài toán sắp
hàng trình tự, trong đó mỗi tiến trình có thể đảm nhận việc sắp hàng 2 trình tự một
trong toàn bộ chuỗi dữ liệu cần thực hiện.

21
 Chẳng hạn, nếu
– Giống nhau ở cùng vi trí: giá trị là +2
– Không giống nhau: giá trị là -1
– Gap: giá trị là -2
 Giá trị càng cao thì sự giống nhau càng nhiều.
 Định nghĩa: Mức độ tƣơng đồng (điểm đánh giá) của 2 trình tự bắt cặp S
1

và S
2
‘ là đại lƣợng: n
a
x match + n
i
x mismatch + n
g
x gap

 Trong đó,
– na, ni, ng: tƣơng ứng là số phần tử bắt cặp đƣợc, số đột biến và số gap.
– match, mismatch, gap: tƣơng ứng là giá trị bắt cặp, đột biến và gap.
Ví dụ minh họa về điểm đánh giá với match = 2, mismatch = -1, gap = 1:
GAATTCAGTTA
| || | | |
GGAT-C-G—-A
 Giá trị: 6 x (+2) + 4 x (-2) + 1 x (-1) = 3
AC GCTG
| | |
-CATG-T-
 Giá trị: 3 x (+2) + 5 x (-2) + 0 x (-1) = -4
ACGCTG-
| ||
-C-ATGT
 Giá trị: 3 x (+2) + 3 x (-2) + 1 x (-1) = -1
tcctctgcctctgccatcat caaccc
|||| ||| ||||| ||||| ||||||
tcctgtgcatctgcaatcatgggcaaccc
 Giá trị: 23 x (+2) + 3 x (-2) + 3 x (-1) = 37
25
1}22,23,11{}2,2,{
3}21,21,21{}2,2,{
1}21,21,10{}2,2,{
1}20,20,12{}2,2,{
0}22,20,10{}2,2,{
2534352435
2433342334
2332332233
2231322132

2130312031





MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM





2}21,21,13{}2,2,{
1}23,20,11{}2,2,{
0}21,20,11{}2,2,{
0}21,22,10{}2,2,{
2}20,20,20{}2,2,{
4544453445
3443443344
3342433243
3241423142
3140413041






MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM





3}22,20,21{}2,2,{
0}21,22,10{}2,2,{
2}20,21,20{}2,2,{
1}20,20,12{}2,2,{
0}22,20,10{}2,2,{
4554554455
4453544354
4352534253
4251524152
4150514051





MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM

MaxMMMMaxM





2}23,24,10{}2,2,{
4}20,20,22{}2,2,{
0}22,21,11{}2,2,{
1}21,21,10{}2,2,{
1}20,20,10{}2,2,{
5564655465
5463645364
5362635263
5261625162
5160615061





MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM
MaxMMMMaxM







Viết lại ma trận M và σ
Bng 2.1. Ma trn M và 


C
A
T
G
T



C
A
T
G
T

0
0
0
0
0
0


0
0

0
0
0
0
A
0
-1
2
0
-1
-1

A
0
-1
2
-1
-1
-1
C
0
2
0
1
-1
-2

C
0
2

-1
-1
-1
-1
G
0
0
1
-1
3
1

G
0
-1
-1
-1
2
-1
C
0
2
0
0
1
2

C
0
2

-1
-1
-1
-1
T
0
0
1
2
0
3

T
0
-1
-1
2
-1
2
G
0
-1
-1
0
4
2

G
0
-1

-1
-1
2
-1

26
Tạo vết
 Xuất phát từ M
nm
, nếu:
– M
ij
= M
i-1,j-1
+ σ
ij
thì vết (i,j) → (i-1,j-1) đi theo đƣờng chéo
– M
ij
= M
i,j-1
+ d thì vết (i,j) → (i,j-1) đi lui
– M
ij
= M
i-1,j
+ d thì vết (i,j) → (i-1,j) đi lên
Bng 2.2. To vt t ma trn M
nm


ij



C
A
T
G
T



C
A
T
G
T

0
0
0
0
0
0


0
0
0
0

0
0
A
0
-1
2
0
-1
-1

A
0
-1
2
-1
-1
-1
C
0
2
0
1
-1
-2

C
0
2
-1
-1

-1
-1
G
0
0
1
-1
3
1

G
0
-1
-1
-1
2
-1
C
0
2
0
0
1
2

C
0
2
-1
-1

-1
-1
T
0
0
1
2
0
3

T
0
-1
-1
2
-1
2
G
0
-1
-1
0
4
2

G
0
-1
-1
-1

2
-1

Tìm kết quả từ vết
Nếu
 (i,j) →(i-1,j-1): theo đƣờng chéo
U
i
và V
j
đƣợc ghi vào
 (i,j) →(i-1,j): đi lên
U
i
và “-” đƣợc ghi vào (deletion gap đƣợc sinh ra)
 (i,j) →(i,j-1): đi lui
“-” và V
j
đƣợc ghi vào (insertion gap đƣợc sinh ra)

σ
ij

28
2}11,10,20,0max{}1,1,,0max{
1}12,10,10,0max{}1,1,,0max{
2}10,10,20,0max{}1,1,,0max{
1203130213
1102120112
1001110011




HHHH
HHHH
HHHH



1}11,12,11,0max{ }1,1,,0max{
1}12,11,12,0max{}1,1,,0max{
1}10,12,10,0max{ }1,1,,0max{
2213231223
2112221122
2011211021



HHHH
HHHH
HHHH



2}13,11,11,0max{}1,1,,0max{
3}10,11,21,0max{}1,1,,0max{
0}10,11,10,0max{}1,1,,0max{
3223332233
3122322132
3021312031




HHHH
HHHH
HHHH



5}12,12,23,0max{ }1,1,,0max{
2}12,13,10,0max{ }1,1,,0max{
2}10,10,20,0max{ }1,1,,0max{
4233433243
4132423142
4031413041



HHHH
HHHH
HHHH




Bng 2.4. Vit li ma trn H
ij




A
C
A

0
0
0
0
A
0
2
1
2
G
0
1
1
1
C
0
0
3
2
A
0
2
2
5
Tạo vết
• Xuất phát từ H

nmax,mmax
, nếu:
– H
ij
= H
i-1,j-1
, hoặc H
ij
= H
i-1,j-1
+ σ
ij
thì vết (i,j) → (i-1,j-1) đi theo
đƣờng chéo
– H
ij
= H
i,j-1
+ d thì vết (i,j) → (i,j-1) đi lui
– H
ij
= H
i-1,j
+ d thì vết (i,j) → (i-1,j) đi lên

29
Bng 2.5. To vt xut phát t H
nmax,mmax




A
C
A

0
0
0
0
A
0
2
1
2
G
0
1
1
1
C
0
0
3
2
A
0
2
2
5
Tìm kết quả

• Nếu
– (i,j) →(i-1,j-1): theo đƣờng chéo
U
i
và V
j
đƣợc ghi vào
– (i,j) →(i-1,j): đi lên
U
i
và “-” đƣợc ghi vào (deletion gap đƣợc sinh ra)
– (i,j) →(i,j-1): đi lui
“-” và V
j
đƣợc ghi vào (insertion gap đƣợc sinh ra)
• Kết quả bắt cặp
– U‘ = ―A-CA‖
– V‘ = ―AGCA‖
• Độ đánh giá: 3(2) + 1(-1) + 0(-1) = 5
Kết luận: trong chƣơng này nói về vấn đề lý thuyết nhƣ khái niệm cơ bản vế
alignment cũng nhƣ mục đính của vấn đề bắt cặp trình tự nhắm đạt đến sự giống
nhau đến mức tối đa của các trình tự. việc xây dựng hàm đánh giá tốt cho phép xác
định đƣợc kết quả tối ƣu hơn.ngoài ra trong chƣơng này cũng đƣa ra đƣợc cách
phân loại bắt cặp trình tự đó là bắt cặp toàn cục và bắt cặp cục bộ. trình bày nét cơ
bản nhất của thuật toán Needleman – Wunsch và thuật toán Smith – Waterman.


32

Hình 3.2. Kin trúc máy SISD

 Single Instruction, Multiple Data (SIMD) là loại máy tính song song.
– Single Instruction, tất cả các đơn vị xử lý thi hành cùng câu lệnh ở chu
kỳ đồng hồ trƣớc.
– Multiple Data, mỗi đơn vị xử lý có thể thực hiện thao tác trên phần tử
dữ liệu khác nhau
– Máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử
lý thực hiện theo một luồng các câu lệnh. CPU phát sinh tín hiệu điều
khiển tới tất cả các phần xử lý, những bộ xử lý này cùng thực hiện một
phép toán trên cấc mục dữ liệu khác nhau, nghĩa là mỗi bộ xử lý có
luồng dữ liệu riêng. Kiến trúc máy SIMD có mô hình hoạt động theo
Hình 3.3

Hình 3.3. kin trúc máy SIMD
– Đây là loại tốt nhất phú hợp cho bài toán chuyên môn đòi hỏi tốc độ xử
lý cao nhƣ xử lý đồ thị, hình ảnh. Thi hành đồng bộ và tất định.
– Có hai biến thể loại SIMD. Biến thể Proccesor Arrays:
• Connection Machine CM‐2, MasPar MP‐1 & MP2, ILLIACIV
• Biến thể vector Pipelines: IBM 9000, Cray X-MP, Y-MP & C90,
Fujitsu VP, NEC SX-2, Hitachi S820, ETA10.
33
– Hầu hết các máy tính hiện đại, đặc biệt là các Graphics Processor Units
(GPUs) sử dụng chỉ thị SIMD.
 Multiple Instruction, Single Data (MISD), là loại máy tính song song.
– Miltiple Instruction, mỗi đơn vị xử lý hoạt động trên dữ liệu độc lập
thông qua dòng cấu trúc riêng biệt.
– Single Data, mỗi dòng dữ liệu duy nhất đƣợc đƣa vào nhiều đơn vị xử
lý.
– Kiến trúc máy MISD có mô hình hoạt động theo Hình 3.4

Hình 3.4. Kin trúc máy MISD

 Multiple Instruction, Multiple Data (MIMD), là loại máy tính song song
– Multiple Instruction, mỗi bộ xử lý có thể thi hành dòng lệnh khác nhau
– Multiple Data, mỗi bộ xử lý có thể làm việc với dòng dữ liệu khác nhau
– Việc thực thi có thể đồng bộ hoặc không đồng bộ, có thể xác định hoặc
không xác định (non-deterministic)
– Hiện tại, loại máy tính song song hiện đại nhất, phổ biến nhất thuộc loại
này, ví dụ:
 Hầu hết các siêu máy tính hiện đại
 Cụm lƣới (clusters and grid) máy tính song song nối mạng
 Máy đa xử lý đối xứng (multi – processor SMP)
 Multi-core PCs.
– Kiến trúc máy MIMD có mô hình hoạt động theo Hình 3.5

×