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

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.71 MB, 74 trang )

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


vi
DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT
BLOSUM Block Subtitutation Matrix
CPU Central Processing Unit
CUDA Compute Unified Device Architecture
DDBJ DNA Data Bank of Japan.
DMA Direct Memory Access
DNA Deoxyribonucleic Acid
DRAM Dynamic Random Access Memory
EMBL European Molecular Biology Laboratory
GPC Graphics Processing Cluster
GPU Graphics Processing Unit
mRNA messenger RNA
MSA Multiple Sequence Alignment
NCBI National Center for Biotechnology Information
PC Personal Computer
PSA Pairwise Sequence Alignment
RNA Ribonucleic Acid
SISD Single Instruction, Single Data
SIMD Single Instruction, Multiple Data
MISD Multiple Instruction, Single Data
MIMD Multiple Instruction, Multiple Data
SM Streaming Multiprocessor


vii
DANH MỤC HÌNH
Hình 1.1. Cơ bản cấu trúc của một acid α-amino 8
Hình 1.2. Cấu tạo một nucleotide 9
Hình 1.3. Chuỗi xoắn kép DNA 9
Hình 1.4. Hình thức của protein 11
Hình 1.5. Biểu đồ năng lực tính toán CPU-GPU 17
Hình 2.1. Các loại GAP 20
Hình 2.2. Bắt cặp hai trình tự 22
Hình 3.1. Kiến trúc máy tính Von Neumann 30
Hình 3.2. Kiến trúc máy SISD 32
Hình 3.3. kiến trúc máy SIMD 32
Hình 3.4. Kiến trúc máy MISD 33
Hình 3.5. Kiến trúc máy MIMD 34
Hình 3.6. Kiến trúc GPU GF100 35
Hình 3.7. Cấu trúc của một SM 36
Hình 3.8. Kiến trúc bộ phần mềm CUDA 39
Hình 3.9. Các thao tác thu hồi và cấp phát bộ nhớ 40
Hình 3.10. Vùng nhớ dùng chung mang dữ liệu gần ALU hơn 40
Hình 3.11. Khối luồng 42
Hình 3.12. Mô hình bộ nhớ 43
Hình 4.1. Bƣớc khởi tạo 49
Hình 4.2. Điền giá trị vào ma trận 50
Hình 4.3. Tìm ô ( i max, j max) có điểm cao nhất trong ma trận 50
Hình 4.4. Quay lui tìm kết quả 50
Hình 4.5. Phƣơng pháp song song tính giá trị các phần tử ma trận đánh giá 53
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


ix
DANH MỤC BẢNG
Bảng 1.1. Bảng các amino acid 8
Bảng 2.1. Ma trận M và σ 24
Bảng 2.2. Tạo vết từ ma trận Mnm và σij 26
Bảng 2.3. Các phần tử của ma trận Hij 27
Bảng 2.4. Viết lại ma trận Hij 28
Bảng 2.5. Tạo vết xuất phát từ H
nmax,mmax
29
Bảng 3.1. Ma trận phân loại theo Flynn 31
Bảng 5.1. Kết quả sắp hàng đa trình tự với nhóm 1. Mỗi nhóm tiến hành chạy thử
nghiệm 10 lần và lấy thời gian trung bình. 59
Bảng 5.2. Kết quả sắp hàng đa trình tự với nhóm 2. Mỗi nhóm tiến hành chạy thử
nghiệm 10 lần và lấy thời gian trung bình. 60
Bảng 5.3. Kết quả sắp hàng đa trình tự với nhóm 3. Mỗi nhóm tiến hành chạy thử
nghiệm 10 lần và lấy thời gian trung bình 60
Bảng 5.4. Kết quả sắp hàng đa trình tự của chƣơng trình CUDA và chƣơng trình
CPU với lần lƣợt 9 nhóm dữ liệu. Thời gian chạy tính bằng giây 61


x
DANH MỤC BIỂU ĐỒ

Biểu đồ 5.1. Biểu đồ tƣơng quan về thời gian chạy của 3 nhóm 60
Biểu đồ 5.2. Biểu đồ tƣơng quan về thời gian chạy của 2 chƣơng trình với 9 nhóm dữ liệu
61
Biểu đồ 5.3. Biểu đồ tƣơng quan về độ chính xác của 2 chƣơng trình với 2 nhóm dữ liệu 63


1
MỞ ĐẦU
Lý do thực hiện luận văn
Nhu cầu tính toán trong lĩnh vực khoa học, công nghệ ngày càng cao và trở
thành một thách thức lớn. Từ đó các giải pháp nhằm tăng tốc độ tính toán đã đƣợc
ra đời, từ năm 2001 đến năm 2003 tốc độ của Pentium 4 đă tăng gấp đôi từ 1.5GHz
lên đến 3GHz. Tuy nhiên hiệu năng của CPU (Central Processing Unit) không tăng
tƣơng xứng nhƣ mức gia tăng xung của CPU và việc gia tăng tốc độ xung của CPU
nhanh chóng chạm phải ngƣỡng tối đa mà cụ thể trong khoảng thời gian 2 năm từ
năm 2003 đến năm 2005 tốc độ của CPU chỉ tăng từ 3GHz lên 3.8GHz. Trong quá
trình tăng tốc độ xung của CPU các nhà sản xuất đã gặp phải vấn đề về nhiệt độ của
CPU sẽ quá cao và các giải pháp tản nhiệt khí đã đến mức tới hạn không thể đáp
ứng đƣợc khả năng làm mát khi CPU hoạt động ở xung quá cao nhƣ vậy. Vì vậy
việc gia tăng xung hoạt động của CPU không sớm thì muộn cũng sẽ đi vào bế tắc.
Trƣớc tình hình này, các nhà nghiên cứu vi xử lý đã chuyển hƣớng sang phát
triển công nghệ đa lõi, nhiều lõi, với cơ chế xử lý song song trong các máy tính
nhằm tăng hiệu năng và tiết kiệm năng lƣợng.
Một trong các công nghệ xử lý song song ra đời đó là GPU (Graphics
Processing Unit - bộ xử lý đồ họa). Ban đầu, việc chế tạo GPU chỉ với những mục
đích công việc phù hợp với khả năng là tăng tốc độ xử lý đồ họa, cũng nhƣ trong
ngành trò chơi là chủ yếu. Nhƣng đến thời điểm GPU NV30 của NVIDIA ra đời,
GPU bắt đầu tham gia vào những công việc khác ngoài đồ họa nhƣ: Hỗ trợ tính toán
dấu chấm động đơn, hỗ trợ tính toán lên cả ngàn lệnh. Vì thế đã nảy sinh ra ý tƣởng
dùng GPU để xử lý, tính toán song song những chƣơng trình không thuộc đồ họa.

Câu hỏi đƣợc đặt ra là làm thế nào để ứng dụng GPU vào việc xử lý tính toán
song song. Câu hỏi này nhanh chóng đƣợc giải quyết bằng công nghệ CUDA
(Compute Unified Device Architecture) của NVIDIA ra đời năm 2007. Với CUDA,
các lập trình viên nhanh chóng phát triển các ứng dụng song song trong rất nhiều
lĩnh vực khác nhau nhƣ: Điện toán hóa học, sắp xếp, tìm kiếm, mô phỏng các mô
hình vật lý, chuẩn đoán y khoa, thăm dò dầu khí, … CUDA là bộ công cụ phát triển
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.

5
CHƢƠNG 1. TỔNG QUAN
1.1. Giới thiệu vấn đề
Trong vài thập kỷ qua, việc ứng dụng công nghệ thông tin vào sinh học nhằm
mục đích thu thập, lƣu trữ và phân tích các dữ liệu sinh học đã thúc đẩy ngành này
có những bƣớc phát triển mạnh mẽ. Kết quả của những nghiên cứu trong sinh tin
học đã tạo ra các phần mềm giúp giải quyết một số vấn đề trong việc tìm hiểu về
gen, protein và một số vấn đề khác liên quan đến sinh học phân tử. Những thành tựu
của lĩnh vực này hỗ trợ và thúc đẩy việc đƣa sinh học, y học vào giải quyết của
những công việc của thực tiễn, nhƣ việc tìm ra các giống cây trồng và vật nuôi mới
cho năng suất cao, kháng bệnh, kháng hạn, đẩy nhanh quá trình chẩn đoán bệnh, tìm
ra các loại thuốc chữa bệnh mới…
Các lĩnh vực lớn đang đƣợc sinh tin học giải quyết hiện nay:
 Genomic: nghiên cứu cấu trúc và chức năng của gen.
 Proteinomics: phân tích một tỉ lệ lớn các protein của một sinh vật.
 Pharmacogenomics: phát triển các loại thuốc mới nhắm đến một căn
bệnh xác định.
 Micro Array: nghiên cứu về DNA chip, protein chip.
Mục tiêu hàng đầu của sinh tin học gắn liền với quá trình phân tích các thông
tin sinh học. Điều này đƣợc thể hiện qua các nghiên cứu về:
 Tìm kiếm các gen trên các trình tự DNA ở các sinh vật khác nhau.
 Phát triển các phƣơng pháp nhằm dự đoán cấu trúc RNA, cấu trúc và
chức năng của các protein mới đƣợc phát hiện.
 Tập hợp các trình tự có sự tƣơng đồng cao để đƣa ra mô hình protein.
 So sánh các trình tự DNA tƣơng đồng và thành lập cây phả hệ mô tả

mối quan hệ tiến hóa.
Bắt cặp các trình tự hay sắp hàng các trình tự sinh học nhằm xác định sự tƣơng
đồng giữa chúng là một bài toán lớn đòi hỏi nhiều tài nguyên tính toán và mất nhiều
thời gian để xử lý, đặc biệt trong bối cảnh hiện nay khi mà các ngân hàng dữ liệu
sinh học đã thu thập và lƣu trữ đƣợc một số lƣợng trình tự rất lớn của nhiều chủng
loài sinh vật. Có hai loại bắt cặp trình tự: bắt cặp toàn cục và bắt cặp cục bộ. Bắt
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
7
nghiên cứu khác triển khai thuật toán Smith-Waterman trên nền tảng phần cứng
đƣợc thiết kế riêng cho bài toán bắt cặp cục bộ nhƣ trong các bài báo [14], [15]. Ở
Việt Nam, cũng có một số tác giả nghiên cứu về vấn đề này nhƣ nhóm tác giả
Nguyễn Thanh Thuý, Nguyễn Hữu Đức, Phạm Hồng Phong, Tạ Minh Ngọc, Dƣơng
Nhật Tân, Lê Đức Hùng trong bài báo [6] đề xuất giải pháp tăng tốc thuật toán
Smith-Waterman trên môi trƣờng chia sẻ cụm thiết bị đồ hoạ GPU, hay tác giả
Trƣơng Văn Hiệu trong luận văn thạc sĩ tại trƣờng Đại học Đà Nẵng [2] năm 2011
trình bày một số thuật toán song song sử dụng công nghệ CUDA, tác giả Nguyễn
Ngọc Điệp trong luận văn thạc sĩ tại Trƣờng Đại học Lạc Hồng [1] năm 2012 trình
bày phƣơng pháp gia tăng hiệu năng tính toán cho bài toán sắp hàng đa trình tự dựa
trên công nghệ CUDA.
Luận văn đề xuất một giải pháp sử dụng kết hợp thuật toán song song trên
môi trƣờng phân tán truyền thông điệp MPI và kiến trúc chia sẻ xử lý đa nhân đồ
hoạ GPU với công nghệ CUDA nhằm tăng khả năng tính toán để giải quyết bài toán
sắp hàng trình tự cục bộ bằng thuật toán Smith-Waterman trên khối lƣợng dữ liệu
trình tự lớn.
1.2. Tổng quan về sinh tin học
Sinh tin học là một ngành khoa học mà trong đó có sự kết hợp giữa sinh học,
khoa học máy tính và công nghệ thông tin. Sinh tin học sử dụng các thuật toán phân
tích tối ƣu xử lý dữ liệu sinh học thông qua các thiết bị phần cứng và hệ thống
mạng.

1.2.1. Amino acid và tính chất
Amino acid là những chuỗi tạo thành protein. Một amino acid là một phân tử
có chứa cả hai carboxyl và amin nhóm chức năng. Một α-amino acid nhƣ trong hình
1.1 là một trong các nhóm amino (nhóm R) và chức năng carboxylate đƣợc gắn vào
cùng một nguyên tử cacbon, đƣợc gọi là α-carbon. Các α-amino acid khác nhau bởi
các thành phần tạo nên chúng. Nhóm R trong hình 1.1 xác định amino acid, R có
thể là một trong 20 amino acid tiêu chuẩn nhƣ trong Bảng 1.1
8

Hình 1.1. n cu trúc ca mt acid -amino [22]
Cách phân loại amino acid phổ biến là dựa vào gốc R và đƣợc chia làm 5
nhóm: nhóm I gồm 7 amino acid có R không phân cực, kỵ nƣớc; nhóm II gồm 3
amino acid có gốc R chứa nhân thơm; nhóm III gồm 5 amino acid có R phân cực,
không tích điện; nhóm IV gồm 3 amino acid có R tích điện dƣơng; nhóm V gồm 2
amino acid có R tích điện âm.
20 amino acid có liên quan đến sinh tổng hợp protein và đƣợc quy định bởi
mã di truyền, cùng với một số thuộc tính của chúng, đƣợc thể hiện trong Bảng 1.1
Bng 1.1. Bng các amino acid [3]
Amino Acid
3-letter
1-letter
Amino Acid
3-letter
1-letter
Alanine
Ala
A
Leucine
Leu
L

Arginine
Arg
R
Lysine
Lys
K
Asparagine
Asp
N
Methionine
met
M
Aspartic acid
Asp
D
Phenylalanine
Phe
F
Cysteine
Cys
C
Proline
Pro
P
Glutamic acid
Glu
E
Serine
Ser
S

Glutamine
Gln
Q
Threonine
Thr
T
Glycine
Gly
G
Tryptophan
Try
W
Histidine
His
H
Tyrosine
Tyr
Y
Isoleucine
Iso
I
Valine
Val
V
1.2.2. DNA và RNA
DNA là chữ viết tắt của axit 2‘-deoxyribonucleic, đƣợc nhà sinh học ngƣời
Thụy Điển Miescher tìm ra vào năm 1869 trong nhân tế bào bạch cầu (tế bào mủ).
Đầu tiên ông gọi nó là nuclein có nghĩa là hạch nhân. Sau đó, ông đã phát hiện ra nó
có bản chất axit và gọi nó là axit nucleic. Sau hơn 80 năm cùng với sự tranh cãi của
nhiều nhà khoa học, đến năm 1952, ngƣời ta mới công nhận DNA là vật chất di

truyền. DNA là một chuỗi các nucleotic sắp xếp kế tiếp nhau. Nucleotic có 4 loại
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].
10
RNA (Ribonucleic Acid) là 1 loại acid nucleic (nhƣ ADN), cấu tạo từ các
nguyên tố C, H, O, N, P. RNA là một đại phân tử, cấu tạo theo nguyên tắc đơn phân
mà các đơn phân là các Ribonucleotide (riboNu). RNA tƣơng tự nhƣ DNA có 3
điểm khác nhau:
 Là chuỗi xoắn đơn
 Đƣờng Pentose là Ribose
 Thymine đƣợc thay bởi Uracil (U)
Trong tế bào có 3 loại RNA chính, tham gia vào quá trình dịch mã sang
protein:

 mRNA là RNA thông tin. Đây là các bản sao của các trình tự trên
DNA, nhằm chuyển hóa thông tin mã hóa trên DNA đến bộ máy giải
mã protein tƣơng ứng.
 tRNA là các RNA vận chuyển, đóng vai trò vận chuyển các Amino acid
dịch mã để tổng hợp ra protein từ mRNA tƣơng ứng.
 rRNA là các RNA của ribosome, rRNA chiếm phần lớn tổng số RNA
của tế bào. Ribosome là một thành phần trong bộ máy dịch mã của tế
bào, đƣợc tạo thành bằng cách kết hợp rRNA với protein.
Ngoài ra còn có RNA mạch đơn, kép là vật chất di truyền ở virus, nhiều phân
tử RNA rất nhỏ có chức năng điều hoà, RNA có chức năng nhƣ 1 enzim (ribozim).
Mỗi loại RNA có cấu trúc, thời gian tồn tại trong tế bào khác nhau phù hợp với
chức năng.
1.2.3. Protein
Protein là hợp chất hữu cơ gồm 4 nguyên tố cơ bản C, H, O, N thƣờng có
thêm S và đôi lúc có P. Có hơn 20 loại axit amin khác nhau tạo nên các protein, mỗi
axit amin có 3 thành phần: gốc cacbon (R), nhóm amin (-NH2) và nhóm cacboxil (-
COOH), chúng khác nhau bởi gốc R. Protein đƣợc tạo thành từ các amino acid bố
trí trong một chuỗi tuyến tính và liên kết với nhau bằng các peptide xƣơng sống
giữa carboxyl và nhóm amin của amino acid liền kề (Hình 1.4)
11

Hình 1.4. Hình thc ca protein [21]
Trong Hình 1.4, R1 là một amino acid và R2 là một amino acid khác. R1 và
R2 có thể là một trong hai mƣơi amino acid có sẵn. Khi amino acid đƣợc nối với
nhau, chúng tạo thành một liên kết peptide, các liên kết peptide liên kết hóa học các
amino acid monome trong một chuỗi protein. Mỗi protein có duy nhất chuỗi amino
acid của nó, đƣợc gọi là cấu trúc chính. Amino acid có thể đƣợc liên kết với nhau
theo các tuần tự khác nhau để tạo thành một số lƣợng lớn các protein. Tùy thuộc
vào cách các acid amino đƣợc kết hợp, chức năng của các amino acid khác nhau.
1.2.4. Ngân hàng dữ liệu và phần mềm trong sinh tin học

Hiện nay, trên thế giới đã có những ngân hàng dữ liệu sinh học nổi tiếng nhƣ:
 NCBI - Trung tâm Quốc gia về Thông tin Công nghệ Sinh học
(National Center for Biotechnology Information) của Mỹ. Tính đến
tháng 2/2013 đã có 150.141.354.858 base và 162.886.727 trình tự.
 EMBL - Phòng thí nghiệm Sinh học phân tử (European Molecular
Biology Laboratory) của Châu Âu. Ngân hàng EMBL chứa
247.335.689 trình tự bao gồm 429.512.389.024 nucleotide tính đến
tháng 09/2012.
 DDBJ - Ngân hàng dữ liệu DNA, Nhật Bản (DNA Data Bank of
Japan). Tính đến 03/2013 có 163,017,305 entries với 150,760,062,903
nucleotits.
Về phần mềm, trên thế giới có nhiều phần mềm giúp xử lý các trình tự sinh
học DNA và protein nhƣ: phần mềm FastA, Blast, Cn3D, Phylip, PepTool,
GeneTool, ClustalX, BioEdit, SeqVISTA, SAGA, Primer3, PC-Genes, Discovery
Studio Gene, DNASIS, DNAMAN, VECTOR NTI, AnnHyb, DNA Club, Plasmid
Processor, Oligos, v.v Những phần mềm này có một số chức năng:
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,
13
hỗ trợ nghiên cứu ứng dụng trong công nghệ sinh học ở Việt Nam. Nhƣng cũng mới
dừng lại ở việc thể hiện các khái niệm cơ bản và cấu trúc của protein.
1.3. Bắt cặp trình tự
Trong lĩnh vực nghiên cứu phân tích cấu trúc và chức năng của gen và protein,
phân tích trình tự chuỗi DNA, protein đóng vai trò quan trọng. Để đơn giản, trình tự
DNA, protein sẽ đƣợc tuần tự hóa và nghiên cứu dƣới dạng chuỗi các ký tự. Thông
thƣờng khi một gen đƣợc phát hiện, một trong những yêu cầu quan trọng là làm thế
nào xác định đƣợc chức năng của gen này, yêu cầu tƣơng tự cũng đƣợc đặt ra khi
phát hiện ra protein mới. Một phƣơng pháp tiếp cận phổ biến là so sánh, đánh giá sự
tƣơng đồng của chuỗi DNA, protein này với những chuỗi DNA, protein đã biết, từ
đó có thể đƣa ra dự đoán về chức năng cũng nhƣ cấu trúc của những gen mới phát
hiện. Quá trình tiến hóa của loài ngƣời là một quá trình biến đổi đa dạng, từ một gen

tổ tiên dƣới tác động của quá trình tiến hóa đã biến đổi tạo nên những khác biệt so
với gen gốc ban đầu. Do đó việc nhận định sự giống nhau của các đoạn gen, trình tự
là một vấn đề lớn của sinh tin học. Vấn đề đƣợc đặt ra là làm thế nào để có đƣợc
phép so sánh tốt cho các trình tự DNA, khi số lƣợng tế bào trong cơ thể khoảng 10
14

và mỗi tế bào mang khoảng 3.10
9
ký tự trong đoạn DNA của chúng.
Trong việc giải quyết bài toán sắp hàng trình tự, trƣớc hết phải xem xét bài
toán bắt cặp 2 trình tự (Pairwise Sequence Alignment – PSA). Bài toán này đã đƣợc
giải quyết trọn vẹn bằng nhiều phƣơng pháp khác nhau. Đồng thời với việc giải
quyết bài toán này, xuất hiện nhu cầu về việc so sánh nhiều trình tự, để so sánh
nhiều đoạn gen hoặc tìm ra một phần tử đại diện cho một tập các gen nhằm đáp ứng
nhu cầu ngày càng cao của việc tìm kiếm dự đoán cấu trúc của các gen, protein, khi
kho dữ liệu sinh học đƣợc tập hợp ngày càng lớn.
Sắp hàng trình tự là một thủ tục cực kỳ quan trọng trong tin sinh học, nó đƣợc
xem là nền tảng cho tất cả các thủ tục khác. Vấn đề đặt ra là tạo ra những sự sắp
hàng giữa các nucleotide thông qua việc chèn các ký tự gap, làm cho khoảng cách
giữa hai trình tự tức chi phí sửa chữa (là tổng chi phí cho các sự kiện chèn – xóa,
thay thế các nucleotide) giữa hai trình tự là nhỏ nhất (hoặc lớn nhất).
14
Đầu vào là 2 trình tự X = (x1, x2, …xp) và Y = (y1, y2, …yq), sắp hàng
trình tự X và Y là cách chèn các kí tự trống (gap) vào hai trình tự X và Y sao cho
chúng có độ dài bằng nhau và khoảng cách (chi phí sửa chữa) giữa hai trình tự là
nhỏ nhất (hoặc lớn nhất).
Các thuật toán quy hoạch động đầu tiên cho việc sắp hàng giữa các chuỗi ký
tự đƣợc trình bày bởi Levenshtein với độ phức tạp về thời gian và bộ nhớ là O(n
2
).

Needleman và Wunsch [7] lần đầu tiên áp dụng thuật toán này vào lĩnh vực sinh tin
học năm 1970. Waterman [9], tiến hành thực nghiệm trên một khối lƣợng lớn các
trình tự với trọng số cho việc chèn gap với độ phức tạp thời gian là O(n
3
) nhƣng cho
kết quả chính xác cao hơn. Lý do của việc tăng độ phức tạp về thời gian là do bổ
sung thêm tính toán chi phí chèn – xóa gap trong các trƣờng hợp.
1.4. Song song hoá dữ liệu trên môi trƣờng phân tán dùng MPI
Xử lý song song dựa trên hai kiến trúc cơ bản: Bộ nhớ phân tán và bộ nhớ
dùng chung. Máy tính song song theo kiến trúc bộ nhớ phân tán thực chất là một tập
các máy tính tuần tự (gọi là các nút – nodes) cùng làm việc để giải quyết một vấn
đề. Mỗi nút có khả năng truy cập nhanh vào bộ nhớ riêng của nó và truy cập vào bộ
nhớ của nút khác thông qua mạng giao tiếp, thƣờng là mạng giao tiếp có tốc độ cao.
Dữ liệu đƣợc trao đổi giữa các nút là các gói tin đƣợc truyền trên mạng giao tiếp.
Máy tính song song bộ nhớ dùng chung, nhiều bộ xử lý dùng chung một không gian
bộ nhớ bằng một bộ bus bộ nhớ tốc độ cao. Không gian bộ nhớ dùng chung cho
phép các bộ xử lý trao đổi và chia sẻ việc truy cập dữ liệu một cách hiệu quả. Số
lƣợng bộ xử lý dùng trong mô hình bộ nhớ dùng chung là có giới hạn nhỏ. Lý do là
số lƣợng dữ liệu đƣợc truyền tải qua bus bộ nhớ đến các bộ xử lý là có giới hạn. Thế
hệ tiếp theo của máy tính song song hiện nay sử dụng kết hợp giữa kiến trúc bộ nhớ
phân tán và bộ nhớ dùng chung. Mỗi nút là một nhóm các bộ xử lý dùng chung bộ
nhớ và các nút đƣợc kết nối bằng một mạng giao tiếp tốc độ cao.
Trong mô hình phân tách dữ liệu hay song song hóa dữ liệu, dữ liệu đƣợc chia
thành các phần có kích thƣớc xấp xỉ nhau tƣơng ứng với các bộ xử lý khác nhau.
Mỗi bộ xử lý sau đó làm việc trên phần dữ liệu tƣơng ứng với nó, các bộ xử lý có
thể cần phải trao đổi dữ liệu với nhau sau những khoảng thời gian nhất định.
15
Mô hình song song hóa dữ liệu chỉ có một luồng điều khiển. Một giải thuật
song song dữ liệu bao gồm các phép xử lý tuần tự phù hợp với dữ liệu: Một phép xử
lý đƣợc bắt đầu chỉ khi phép xử lý trƣớc nó đã kết thúc. Mô hình đơn chƣơng trình

đa dữ liệu (Single-Program-Multiple-Data (SPMD)) trong đó chƣơng trình đƣợc cài
đặt ở tất cả các bộ xử lý thỏa mãn mô hình song song hóa này.
Chiến lƣợc này phù hợp với các giải thuật sắp hàng trình tự, trong đó các bộ
xử lý có thể tính toán sắp hàng chuỗi truy vấn với một chuỗi trong tập dữ liệu trình
tự có kích thƣớc lớn đã đƣợc phân hoạch, sự trao đổi dữ liệu giữa các tiến trình
đang thực hiện song song hầu nhƣ không xảy ra.
MPI đƣợc coi nhƣ là một chuẩn thực hiện của mô hình ―truyền gói tin‖ trong
tính toán song song. Quá trình tính toán song song bao gồm một số lƣợng tiến trình,
mỗi tiến trình làm việc với một bộ dữ liệu cục bộ. Mỗi tiến trình có các biến cục bộ,
và không có cơ chế nào để một tiến trình có thể truy cập trực tiếp vào bộ nhớ của
một tiến trình khác. Trao đổi dữ liệu giữa các tiến trình đƣợc thực hiện bằng cách
truyền gói tin, là phƣơng tiện duy nhất để thực hiện gửi và nhận dữ liệu giữa các
tiến trình. Lý do chính khiến mô hình này trở nên hữu dụng vì về bản chất mọi kiểu
tính toán song song đều có thể thực hiện trên mô hình truyền gói tin. Thêm vào đó,
mô hình này:
– Có thể thực hiện trên nhiều nền tảng khác nhau, từ kiến trúc
nhiều bộ xử lý dùng chung bộ nhớ đến trạm làm việc thậm chí là
một máy đơn bộ xử lý.
– Cho phép quản lý dữ liệu và tiến trình chi tiết hơn so với ứng
dụng song song theo mô hình bộ nhớ dùng chung. Hơn nữa
chƣơng trình có thể tạo ra một hiệu năng xử dụng cao hơn.
1.5. Công nghệ CUDA giải quyết bài toán sắp hàng trình tự.
Bài toán sắp hàng trình tự có một lịch sử nghiên cứu và phát triển khá lâu,
nhƣng tới thời điểm hiện tại vẫn là một bài toán quan trọng cần phải tiếp tục tập
trung nghiên cứu và phát triển để giải quyết các đòi hỏi ngày một cao của lĩnh vực
sinh học. Với khối lƣợng dữ liệu sinh học khổng lồ ngày một phình to đòi hỏi tiêu
tốn rất nhiều tài nguyên máy tính. Vì thế, cải thiện năng lực xử lý của phần cứng

×