TIỂU LUẬN MÔN HỌC
CÁC KỸ THUẬT HIỆN ĐẠI TRONG CNTT
Nội dung:
ỨNG DỤNG LẬP TRÌNH SONG SONG GIẢI QUYẾT BÀI TOÁN
SẮP XẾP BẰNG PHƯƠNG PHÁP TRỘN (MERGE SORT)
Phú Thọ, tháng 05-2011
MỤC LỤC
TIỂU LUẬN MÔN HỌC..................................................................................1
CÁC KỸ THUẬT HIỆN ĐẠI TRONG CNTT.............................................1
2
LỜI MỞ ĐẦU
Trong những năm gần đây, mặc dù nền Công nghệ thông tin
của thế giới ngày một phát triển. Tốc độ xử lí máy tính ngày càng
tăng lên. Tuy nhiên, chúng ta cũng gặp phải khó khăn trong một số
bài toán có dữ liệu đầu vào lớn (bài toán dự báo thời tiết, dự báo
động đất, …). Với dữ liệu đầu vào là một con số rất lớn, dù máy tính
có tốc độ lớn, bộ nhớ nhiều vẫn vấp phải yêu cầu phải giải quyết bài
toán trong thời gian chấp nhận được.
Trong nhiều năm qua, các nhà khoa học đã nghĩ ra biện pháp
giản quyết hiệu quả đó là chia nhỏ bài toán ra thành nhiều bài toán.
Việc giải quyết các bài toán nhỏ được tiến hành đồng thời với nhiều
máy tính. Kết quả của bài toán lớn sẽ được giải quyết khi tất cả các
bài toán nhỏ đã được làm.
Các máy tính tiến hành xử lí song song được kết nối với nhau
thành các cụm tính toán tốc độ cao.
3
NỘI DUNG
I.MÔ TẢ GIẢI THUẬT SONG SONG
1. Giới thiệu
Hiện nay, để giải quyết các bài toán lớn người ta thường nghĩ đến việc sử
dụng các siêu máy tính hoặc việc kết hợp nhiều máy tính với nhau để tính toán.
Tuy nhiên, với phương pháp lập trình cổ điển thì không thể nào phát triển được
chương trình có thể tận dụng được sức mạnh của các hệ thống đó. Đó chính là lý
do lập trình song song ra đời.
Lập trình song song là một công việc rất phức tạp so với lập trình tuần tự
thông thường, người phát triển phải thực hiện một quá trình “song song hóa”,
biến đổi các chương trình tuần tự thành chương trình song song có khả nănG tận
dụng tối đa sức mạnh của hệ thống.
2. Nguyên lý thiết kế thuật toán song song
2.1. Cách thức xây dựng một chương trình song song và phân bố
Phát triển thuật toán là một phần quan trọng trong việc giải quyết vấn đề
khi sử dụng máy tính . Một thuật toán song song là một phương pháp giải quyết
vấn đề dựa trên việc sử dụng nhiều bộ xử lý . Tuy nhiên để chỉ ra được một
thuật toán song song không đơn giản chỉ ra từng bước cụ thể, mà là ở một mức
độ nào đó thuật toán song song phải được them vào tính đồng thời và người thiết
kế ra thuật toán cũng phải chỉ ra tập hợp những bước xử lý đồng thời , điều này
sẽ tận dụng được khả năng tính toán của các máy tính song song. Trên thực tế
việc thiết kế ra một thuật toán song song là khá phức tạp,gồm các công việc:
- Chỉ ra phần của công việc có thể thực thi đồng thời
- Ánh xạ các phần của công việc vào nhiều bộ xử lý chạy song song
- Phân tán dữ liệu nhập, xuất và trung gian cùng với chương trình
- Quản lý truy cập vào dữ liệu chung giữa các bộ xử lý
- Đồng bộ hóa các bộ xử lý khi thực thi các chương trình song song
2.2. Thiết kế thuật toán song song
Thuật toán song song là một tập các tiến trình (process) hoặc các tác vụ
(task) có thể thực hiện đồng thời và có thể trao đổi dữ liệu với nhau để kết hợp
cùng giải một bài toán đặt ra.
4
Thiết kế giải thuật song song là chia bài toán thành các bài toán nhỏ hơn
và gán bài toán nhỏ cho các bộ vi xử lý khác nhau để thực hiện song song.Quá
trình thiết kế giải thuật song song là quá trình song song hóa bài toán tuần tự.
Nguyên lý cơ bản trong thiết kế giải thuật song song bao gồm:
2.2.1. Nguyên lý lập lịch:
Giảm tối thiểu các bộ xử lý sử dụng trong thuật toán sao cho thời gian
tính toán là không tăng (xét theo khía cạnh độ phức tạp). Nghĩa là, nếu độ phức
tạp tính toán của thuật toán là O(f(n)) thì thời gian thực hiện của chương trình có
thể tăng khi số bộ xử lý giảm, và thời gian tính toán tổng thể tăng lên một hằng
số nào đó - nhưng vẫn là O(f(n)).
2.2.2. Nguyên lý hình ống:
Nguyên lý này được áp dụng khi bài toán xuất hiện một dãy các thao tác
{T1, T2, . . ., Tn },trong đó Ti+1 thực hiện sau khi Ti kết thúc.
2.2.3. Nguyên lý chia để trị:
Tức là chia bài toán thành những phần nhỏ hơn tương đối độc lập với
nhau và giải quyết chúng một cách song song. Tạo ra một mô hình cây phân cấp
để phân cấp quá trình truyền thông và tính toán.
- Tăng tính song song so với mô hình trước
- Thời gian chạy giảm từ O(n) xuống O(logn)
2.2.4. Nguyên lý đồ thị phụ thuộc dữ liệu:
Phân tích mối quan hệ dữ liệu trong tính toán để xây dựng đồ thị phụ
thuộc dữ liệu và dựa vào đó để xây dựng thuật toán song song.
2.2.5. Nguyên lý điều kiện tương tranh:
Nếu hai tiến trình cùng muốn truy cập vào cùng một mục dữ liệu chia sẻ
thì chúng phải tương tranh với nhau, nghĩa là chúng có thể cản trở lẫn nhau.
II. MÔ HÌNH LẬP TRÌNH TRUYỀN THÔNG ĐIỆP- CHUẨN MPI
1. Giới thiệu
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 lập trình truyền thông điệp là một trong những
mô hình cổ nhất và được sử dụng rộng rãi nhất trong các mô hình dùng cho lập
5
trình trên các máy tính song song. Mô hình này có hai tính chất quan trọng đó là:
nó giả sử không gian địa chỉ được phân chia và nó chỉ hỗ trọ song song hóa tường minh.
Môi trường truyền thông điệp LAM/MPI là phiên bản nguồn mở, cung cấp
miễn phí với chuẩn MPI. Chuẩn MPI (Message Passing Interface) là kết quả sau
hơn 2 năm thảo luận của MPI Forum, 1 nhóm gồm khoảng 60 người từ 40 tổ
chức khác nhau đại diện cho những nhà phân phối các hệ thống song song,
những phòng thí nghiệm quốc gia và những trường đại học danh tiếng. MPI là
một thư viện các hàm có thể chèn vào mã nguồn để truyền dữ liệu giữa các tiến trình.
2. Các khái niệm cơ bản
- Communicator: Một nhóm các tiến trình có thể truyền thống với nhau.
Một tiến trình có thể thuộc nhiều Communicator.
- Rank: Mỗi tiến trình trong 1 communicator có 1 định danh, gọi là Rank,
đánh số bắt đầu từ 0.Một tiến trình có thể các rank khác nhau khi thuộc về
các communicator khác nhau.
- Group: là các nhóm xử lý
- Process(tiến trình hay xử lý): với kiểu lập trình trên một máy có một bộ
xử lý thì process được coi như là một tiến trình trong một chương trình có
không gian địa chỉ riêng do hệ điều hành cung cấp.
- Send/receive: Vì các chương trình sử dụng phương pháp lạp trình
Message passing không chia sẻ vùng nhớ chung, hay biến cục bộ mà tất
cả dữ liệu đều phải giao tiếp thông qua truyền thông. Do đó MPI định
nghĩa Send/receive là 2 cơ chế gửi nhận thông điệp giữa các xử lý trên máy khác nhau.
3. Cấu trúc chương trình MPI
Các tập tin tư viện: liên quan đến các hàm và thủ tục , các kiểu dưa liệu.Bao
gồm tập tin.h như mpi.h, mpio.h,…Cấu trúc chương trình MPI:
6
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 MPI
Thoát khỏi môi trường