Tải bản đầy đủ (.docx) (36 trang)

Đánh giá hiệu năng một số thuật toán tìm kiếm sử dụng MPI

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 (1017.25 KB, 36 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======***======

BÁO CÁO BÀI TẬP LỚN HỌC PHẦN:
TÍNH TỐN HIỆU NĂNG CAO

Đánh giá hiệu năng một số thuật tốn
tìm kiếm sử dụng MPI

GVHD:
Nhóm - Lớp:
Thành viên:

TS. HÀ MẠNH ĐÀO
8 - 20231IT6069001
Đỗ Huy Hoàng
- 2021600158
Nguyễn Văn Hoàng - 2021604232
Trần Thị Trà Mi
- 2021602647

Hà Nội – 2023


1

LỜI NÓI ĐẦU
Trong suốt nhiều thập kỉ qua, những tiến bộ về Khoa học và Công nghệ
đã mang đến những thay đổi lớn trên nhiều lĩnh vực và đóng góp một tầm ảnh
hưởng vô cùng quan trọng tới mọi mặt đời sống của con người. Một trong


những tiến bộ đó có thể nói tới đó là việc các thiết bị phần cứng ngày nay
đang trở nên hoàn hảo và đáp ứng được khả năng tính tốn mạnh mẽ trước
những u cầu phức tạp mà con người đề ra.
Tính tốn hiệu năng cao (High Performance Computing - HPC) trên cơ
sở các hệ thống siêu máy tính là một trong những thành phần cốt lõi trong sự
phát triển đó và nó đã đánh dấu cho sự thay đổi trong bước chuyển hóa về
nghiên cứu dựa trên những cơng cụ tính tốn lớn. HPC được coi là một siêu
máy tính tập hợp bởi nhiều máy chủ với sự kết hợp về sức mạnh tính tốn
giúp hiệu năng có sự vượt trội hơn rất nhiều so với một chiếc máy tính truyền
thống. Hệ thống HPC đóng một vai trị quan trọng trong đẩy nhanh tốc độ xử
lý, đặc biệt với các bài toán trên tập dữ liệu lớn, đa chiều, sử dụng các thuật
toán phức tạp.
Chính vì vậy, nhóm chúng em quyết định lựa chọn đề tài “Đánh giá
hiệu năng một số thuật toán tìm kiếm sử dụng MPI” này để tìm hiểu, khảo sát
và nghiên cứu từ đó có được một cái nhìn tồn diện, kiến thức và sự hiểu biết
về tính tốn hiệu năng cao đã và đang phát triển mạnh mẽ hiện nay đồng thời
tìm và đưa ra những kỳ vọng tương lai giúp cho các hệ thống phát triển và có
những hướng đi mới tồn diện hơn nữa.


2

MỤC LỤC
LỜI NĨI ĐẦU.......................................................................................................1
DANH MỤC HÌNH ẢNH.....................................................................................4
DANH MỤC BẢNG BIỂU...................................................................................4
CHƯƠNG 1: GIỚI THIỆU KIẾN THỨC CƠ SỞ LIÊN QUAN.........................5
1.1 Giới thiệu về tính tốn hiệu năng cao....................................................5
1.1.1


Tính tốn hiệu năng cao là gì?........................................................5

1.1.2

Cách hoạt động của tính tốn hiệu năng cao..................................5

1.1.3

Tính tốn song song là gì?..............................................................7

1.1.4

Mơ hình máy tính song song........................................................11

1.1.5

Nguyên lý thiết kế giải thuật song song.......................................14

1.1.6

Giới thiệu thư viện MPI................................................................15

1.2 Giới thiệu thuật tốn tìm kiếm............................................................18
1.2.1

Định nghĩa....................................................................................18

1.2.2

Ngun lý hoạt động....................................................................18


1.2.3

Phân tích độ phức tạp của thuật tốn............................................18

CHƯƠNG 2: MƠ TẢ CHI TIẾT BÀI TỐN....................................................20
2.1 Giới thiệu bài tốn...............................................................................20
2.2 Cài đặt mơi trường MPI......................................................................20
2.3 Các thuật tốn tìm kiếm......................................................................21
2.3.1

Thuật tốn tìm kiếm tuyến tính sử dụng MPI...............................21

2.3.2

Thuật tốn tìm kiếm nhị phân sử dụng MPI.................................23

2.3.3

Thuật tốn tìm nhảy với MPI.......................................................26

2.4 Đánh giá hiệu năng..............................................................................29


3
2.5 Đánh giá theo lý thuyết.......................................................................29
2.6 Đánh giá theo thực tế...........................................................................29
2.7 Biểu đồ và nhận xét.............................................................................30
CHƯƠNG 3: TỔNG KẾT...................................................................................33
TÀI LIỆU THAM KHẢO...................................................................................34



4

DANH MỤC HÌNH Ả
Hình 1. 1 Mơ hình tính tốn hiệu năng cao.......................................................6
Hình 1. 2 Ví dụ chung về tính tốn song song..................................................8
Hình 1. 3 Ví dụ tính tốn song song xử lý bảng lương.....................................9
Hình 1. 4 Chip Điện tốn BG/Q của IBM với 18 lõi (PU) và 16 đơn vị Bộ
đệm L2 (L2)....................................................................................................10
Hình 1. 5 Kết nối mạng...................................................................................10
Hình 1. 6 Ví dụ về cụm máy tính song song...................................................11
Hình 1. 7 Danh sách các nhà phát triển máy tính song song...........................11
Hình 1. 8 Mơ hình kiến trúc máy SISD...........................................................12
Hình 1. 9 Mơ hình kiến trúc máy SIMD.........................................................13
Hình 1. 10 Mơ hình kiến trúc máy MISD.......................................................14
Hình 1. 11 Mơ hình kiến trúc máy MIMD......................................................15
Hình 1. 12 Hệ thống bộ nhớ phân tán.............................................................17
Hình 1. 13 Hệ thống bộ nhớ chia sẻ................................................................18
Hình 1. 14 Cấu trúc chương trình MPI.........................................................19Y
Hình 2. 1 Màn hình kết quả chạy thuật tốn tìm kiếm tuyến tính...................24
Hình 2. 2 Màn hình kết quả chạy thuật tốn tìm kiếm nhị phân.....................27
Hình 2. 3 Màn hình kết quả chạy thuật tốn tìm kiếm nhảy...........................29
Hình 2. 4 Biểu đồ so sánh thời gian chạy của thuật tốn tìm kiếm tuyến tính32
Hình 2. 5 Biểu đồ so sánh thời gian chạy của thuật tốn tìm kiếm nhảy........32
Hình 2. 6 Biểu đồ so sánh thời gian chạy của thuật tốn tìm kiếm nhị phân. .33
DANH MỤC BẢNG BIỂ

Bảng 2. 1 Bảng so sánh tìm kiếm tuần tự và tìm kiếm song song..................31
Bảng 2. 2 Bảng đánh giá hiệu quả của thuật toán song song với N =

10,000,000.......................................................................................................32


5


6

CHƯƠNG 1: GIỚI THIỆU KIẾN THỨC CƠ SỞ LIÊN QUAN
1.1 Giới thiệu về tính tốn hiệu năng cao
1.1.1 Tính tốn hiệu năng cao là gì?
Là một quá trình kết hợp sức mạnh tính tốn của nhiều máy tính nhằm
mang lại hiệu suất cao hơn rất nhiều so với một máy tính thơng thường để giải
quyết các vấn đề nghiên cứu khoa học, xử lý những tính tốn vơ cùng phức
tạp.
HPC được viết tắt High Performance Computing (tính tốn hiệu năng
cao), hoặc được biết rộng rãi với cụm từ Supercomputer (siêu máy tính). Mơ
hình hệ thống tính tốn hiệu năng cao là một hệ thống các máy tính có kết nối
với nhau qua mạng internet hoặc là siêu máy tính được thiết kế để giải quyết
các bài toán lớn với tốc độ cao.
Hiệu năng HPC được tính bằng FLOPS.
Tính tốn hiệu năng cao thường được sử dụng trong một số vấn đề lớn
của thế giới về khoa học, kĩ thuật, tài chính, mơi trường …

Hình 1. 1 Mơ hình tính tốn hiệu năng cao

1.1.2 Cách hoạt động của tính tốn hiệu năng cao
Một hệ thống tính tốn hiệu năng cao hoạt động bằng cách các nút
(nodes) máy tính đơn lẻ hoạt động cùng nhau trong 1 cụm (nhóm) được kết
nối với nhau để thực hiện một lượng lớn tính tốn trong 1 thời gian ngắn.

Các máy tính (nodes) được kết nối với nhau qua mạng Internet để trao
đổi dữ liệu.


7
Hệ thống HPC bao gồm ba phần:
 Compute (máy tính)
 Network (mạng)
 Storage (lưu trữ)
Các máy chủ tính tốn được nhóm lại với nhau để tạo thành một kiến
trúc máy tính hiệu suất cao. Trên các máy chủ của cụm, các chương trình
phần mềm và thuật tốn chạy đồng thời. Các nhóm dữ liệu được nối mạng với
nhau để thu được kết quả đầu ra. Các thành phần này hoạt động song song với
nhau để hoàn thành một loạt các nhiệm vụ.
Vì sao HPC quan trọng:
Tính tốn hiệu năng cao (HPC) là một phần quan trọng trong hoạt động
nghiên cứu và đổi mới công nghiệp nhiều thập kỉ qua. HPC giúp các nhà kỹ
sư, khoa học dữ liệu, nhà thiết kế và các nhà nghiên cứu giải quyết các vấn đề
lớn, phức tạp trong thời gian ngắn hơn và chi phí thấp hơn so với điện tốn
truyền thống.
Các lợi ích to lớn của HPC:
● Giảm kiểm tra vật lý: HPC có thể được sử dụng để tạo mơ phỏng, loại
bỏ nhu cầu kiểm tra vật lý. Ví dụ, khi thử nghiệm các vụ tai nạn ô tô,
việc tạo mô phỏng sẽ dễ dàng và ít tốn kém hơn nhiều so với thực hiện
thử nghiệm va chạm.
● Tốc độ: Với các CPU, bộ xử lý đồ họa (GPU) mới nhất và kết cấu
mạng có độ trễ thấp như truy cập bộ nhớ trực tiếp từ xa (RDMA), kết
hợp với các thiết bị lưu trữ khối và cục bộ toàn flash, HPC có thể thực
hiện các phép tính lớn trong vài phút thay vì tuần hoặc tháng thậm chí
vài năm với sức mạnh của các máy tính bình thường.

● Chi phí: Ít lãng phí thời gian và tiền bạc hơn. Ngồi ra, với HPC dựa
trên đám mây, ngay cả các doanh nghiệp nhỏ và cơng ty mới thành lập
cũng có thể đủ khả năng để chạy khối lượng công việc của HPC, chỉ trả
tiền cho những gì họ sử dụng và mở rộng quy mô khi cần.


8
● Cải tiến: HPC thúc đẩy đổi mới trong hầu hết mọi ngành - đó là động
lực đằng sau những khám phá khoa học đột phá giúp cải thiện chất
lượng cuộc sống cho mọi người trên khắp thế giới.
● Hiệu suất: Hệ thống HPC vượt trội hơn nhiều so với PC trung bình về
hiệu suất. Một tổ chức có quyền truy cập vào HPC sẽ vượt trội hơn các
đối thủ cạnh tranh đơn giản vì các nhiệm vụ hiện tại có thể được hồn
thành hiệu quả hơn và giá trị mới có thể được trích xuất từ dữ liệu có
sẵn. Các sản phẩm hoặc quy trình mới có cơ hội thành công cao hơn
nhiều nếu các mô phỏng được chạy trên hệ thống HPC trong q trình
phát triển.
1.1.3 Tính tốn song song là gì?
Theo nghĩa đơn giản nhất, tính tốn song song là việc sử dụng đồng
thời nhiều tài nguyên tính tốn để giải quyết một vấn đề tính tốn:
● Một vấn đề được chia thành các phần riêng biệt có thể được giải quyết
đồng thời
● Mỗi phần được chia nhỏ thành một loạt các hướng dẫn
● Các hướng dẫn từ mỗi phần thực thi đồng thời trên các bộ xử lý khác
nhau
● Một cơ chế kiểm soát/phối hợp tổng thể được sử dụng

Hình 1. 2 Ví dụ chung về tính tốn song song



9

Hình 1. 3 Ví dụ tính tốn song song xử lý bảng lương

Vấn đề tính tốn sẽ có thể:
● Chia nhỏ các cơng việc rời rạc để có thể giải quyết đồng thời
● Thực hiện nhiều hướng dẫn chương trình bất cứ lúc nào
● Được giải quyết trong thời gian ngắn hơn với nhiều tài nguyên điện
toán so với một tài ngun điện tốn duy nhất.
Các tài ngun tính tốn thường là:
● Một máy tính có nhiều bộ xử lý/lõi
● Một số lượng tùy ý các máy tính như vậy được kết nối bởi một mạng
Máy tính song song:
Hầu như tất cả các máy tính độc lập ngày nay đều song song từ góc độ
phần cứng:
● Nhiều đơn vị chức năng (bộ đệm L1, bộ đệm L2, nhánh, tìm nạp
trước, giải mã, dấu phẩy động, xử lý đồ họa (GPU), số nguyên, ...)
● Nhiều đơn vị thực thi/lõi
● Nhiều chủ đề phần cứng


10

Hình 1. 4 Chip Điện tốn BG/Q của IBM với 18 lõi (PU) và 16 đơn vị Bộ đệm L2 (L2)

● Các mạng kết nối nhiều máy tính độc lập (các nút) để tạo thành các
cụm máy tính song song lớn hơn.

Hình 1. 5 Kết nối mạng


Ví dụ, sơ đồ bên dưới hiển thị một cụm máy tính song song LLNL điển hình:
● Bản thân mỗi nút tính tốn là một máy tính song song đa bộ xử lý
● Nhiều nút điện toán được nối mạng cùng với mạng Infiniband
● Các nút mục đích đặc biệt, cũng là bộ xử lý đa năng, được sử dụng
cho các mục đích khác


11

Hình 1. 6 Ví dụ về cụm máy tính song song

● Phần lớn các máy tính song song lớn (siêu máy tính) trên thế giới là các
cụm phần cứng được sản xuất bởi một số ít (hầu hết) các nhà cung cấp
nổi tiếng.

Hình 1. 7 Danh sách các nhà phát triển máy tính song song


12
1.1.4 Mơ hình máy tính song song
Mơ hình máy tính song song hiện nay có 4 cách phân loại theo Flynn:
Kiến trúc đơn dòng lệnh đơn luồng dữ liệu (SISD): Máy tính SISD
chỉ có một CPU, ở mỗi thời điểm thực hiện một chỉ lệnh và chỉ đọc, ghi một
mục dữ liệu. Tất cả các máy tính SISD chỉ có một thanh ghi (register) được
gọi là bộ đệm chương trình, được sử dụng để nạp địa chỉ của lệnh tiếp theo và
kết quả là thực hiện theo một thứ tự xác định của các câu lệnh.
 Một máy tính nối tiếp (khơng song song)
 Chỉ lệnh đơn: Chỉ có một luồng lệnh đang được CPU thực hiện trong
bất kỳ một chu kỳ xung nhịp nào
 Dữ liệu đơn: Chỉ một luồng dữ liệu được sử dụng làm đầu vào trong bất

kỳ một chu kì đồng hồ nào
 Thực hiện xác định
 Đây là loại máy tính lâu đời nhất
Ví dụ: máy tính lớn thế hệ cũ, máy tính mini, máy trạm và PC lõi đơn/bộ xử
lý.

Hình 1. 8 Mơ hình kiến trúc máy SISD

Kiến trúc đơn dòng lệnh đa luồng dữ liệu (SIMD): Máy tính SIMD
có một đơn vị để đ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. Mơ hình SIMD cịn được gọi là
SPMD, đơn chương trình và đa dữ liệu.
 Một loại máy tính song song
 Lệnh đơn: Tất cả các đơn vị xử lý thực hiện cùng một lệnh tại bất kỳ
chu kỳ xung nhịp nhất định nào


13
 Nhiều dữ liệu: Mỗi đơn vị xử lý có thể hoạt động trên một phần tử dữ
liệu khác nhau
 Thích hợp nhất cho các vấn đề chuyên biệt được đặc trưng bởi mức độ
đều đặn cao, chẳng hạn như xử lý đồ họa/hình ảnh.
 Thực thi đồng bộ (lockstep) và xác định
 Hai loại: Mảng bộ xử lý và Đường ống Vector

Hình 1. 9 Mơ hình kiến trúc máy SIMD

Kiến trúc đa dòng lệnh đơn luồng dữ liệu (MISD): Máy tính loại

MISD có thể thực hiện nhiều chương trình (nhiều lệnh) trên cùng một mục dữ
liệu (ngược với máy tính loại SIMD).
 Một loại máy tính song song
 Nhiều lệnh: Mỗi đơn vị xử lý hoạt động trên dữ liệu một cách độc lập
thông qua các luồng lệnh riêng biệt.
 Dữ liệu đơn: Một luồng dữ liệu được đưa vào nhiều đơn vị xử lý.
 Rất ít (nếu có) ví dụ thực tế về loại máy tính song song này đã từng tồn
tại.
 Một số cách sử dụng có thể hiểu được có thể là:
o nhiều bộ lọc tần số hoạt động trên một luồng tín hiệu
o nhiều thuật tốn mã hóa cố gắng bẻ khóa một tin nhắn được mã
hóa.


14

Hình 1. 10 Mơ hình kiến trúc máy MISD

Kiến trúc đa dịng lệnh đa luồng dữ liệu (MIMD): Máy tính loại
MIMD gọi là đa bộ xử lý, trong đó mỗi bộ xử lý có thể thực hiện những luồng
lệnh (chương trình) khác nhau trên các luồng dữ liệu riêng. Hầu hết các hệ
thống MIMD đều có bộ nhớ riêng và cũng có thể truy cập vào bộ nhớ chung
khi cần, do vậy giảm thiểu được thời gian trao đổi dữ liệu giữa các bộ xử lý
trong hệ thống. Đây là loại kiến trúc phức tạp nhất, nhưng nó là mơ hình hỗ
trợ xử lý song song cao nhất và đã có nhiều máy tính được thiết kế theo cấu
trúc này, ví dụ: BBN Butterfly, Alliant FX, iSPC của Intel, …
 Một loại máy tính song song
 Nhiều lệnh: Mỗi bộ xử lý có thể đang thực thi một luồng lệnh khác
nhau
 Nhiều dữ liệu: Mọi bộ xử lý có thể đang làm việc với một luồng dữ liệu

khác
 Việc thực thi có thể đồng bộ hoặc khơng đồng bộ, xác định hoặc khơng
xác định
 Hiện tại, loại máy tính song song phổ biến nhất - hầu hết các siêu máy
tính hiện đại đều thuộc loại này.
 Ví dụ: hầu hết các siêu máy tính hiện tại, các cụm máy tính song song
được nối mạng và "lưới", máy tính SMP đa bộ xử lý, PC đa lõi.


15

Hình 1. 11 Mơ hình kiến trúc máy MIMD

1.1.5 Ngun lý thiết kế giải thuật song song
Thuật toán song song được định nghĩa là một tập các tiến trình hoặc tác
tách vụ 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 tốn. Có thể có nhiều thuật tốn song song cùng giải
một bài toán tùy thuộc vào cách phân chia dữ liệu cho các tác vụ, cách truy
xuất dữ liệu, cách phân rã các tác vụ và cách đồng bộ các tiến trình. Tuy
nhiên để chỉ ra được một thuật tố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 tốn song song phải được thêm
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 tố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.
Khi xử lý song song phải xét đến kiến trúc máy tính và giải thuật song song.
Những giải thuật mà trong đó có một số thao tác có thể thực hiện đồng thời
gọi là giải thuật song song.
Khi thiết kế giải thuật song song, cần phải thực hiện:
● Chia bài toán thành những phần nhỏ hơn tương đối độc lập với nhau

(phân chia về mặt dữ liệu hay chức năng) và giải quyết chúng một cách
song song.
● Chỉ ra cách truy cập và chia sẻ dữ liệu.
● Phân các tác vụ cho các tiến trình (cho bộ xử lý).


16
● Chỉ ra các tiến trình đồng bộ ra sao.
Nguyên lý cơ bản trong thiết kế giải thuật song song bao gồm:
 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 tố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 tốn của thuật tố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 tốn tổng thể tăng lên
một hằng số nào đó - nhưngvẫn là O(f(n)).
 Ngun 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ựchiện sau khi Ti kết thúc.
 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 q trình truyền thơng và tính tố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)
 Nguyên lý đồ thị phụ thuộc dữ liệu:
Phân tích mối quan hệ dữ liệu trong tính tố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.
 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.
1.1.6 Giới thiệu thư viện MPI
 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 trình trên các máy tính song song. Mơ hình này có hai tính chất


17
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.
MPI viết tắt của Message Passing Interface, là đặc tả cho người phát
triển và thư viện lập trình truyền thơng message sử dụng trong tính tốn song
song. Tập lệnh MPI thực thi bao gồm thư viện các thủ tục sao cho có thể gọi
được từ các chương trình Fortran, C, C++ hay Ada.
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 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.
 Mơ hình lập trình
● Ban đầu MPI được thiết kế cho các kiến trúc bộ nhớ phân tán, kiến trúc
rất phổ biến thời kỳ 1980 đến đầu năm 1990.

Hình 1. 12 Hệ thống bộ nhớ phân tán

● Xu hướng công nghệ thay đổi, bộ nhớ chia sẻ kết hợp với mạng máy
tính tạo ra dạng lai của hai hệ thống bộ nhớ chia sẻ và bộ nhớ phân tán.

● Thực thi MPI tương thích với cả hai kiểu kiến trúc trên và cũng tương
thích với các kiểu kết nối và giao thức khác nhau.


18

Hình 1. 13 Hệ thống bộ nhớ chia sẻ

● Ngày nay MPI có thể chạy trên hầu hết các nền tảng phần cứng:
o Bộ nhớ chia sẻ
o Bộ nhớ phân tán
o Dạng lai hai loại trên
 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.
 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ữ liệu. Bao
gồm tập tin.h như mpi.h, mpio.h, ...Cấu trúc chương trình MPI:



19

Hình 1. 14 Cấu trúc chương trình MPI

1.2 Giới thiệu thuật tốn tìm kiếm
1.2.1 Định nghĩa
Tìm kiếm đánh giá song song là một phương pháp tìm kiếm được thực
hiện bằng cách chia tập dữ liệu thành nhiều phần và sử dụng nhiều tác vụ
song song để tìm kiếm các phần đó cùng một lúc. Đây là phương pháp tìm
kiếm tốt nhất cho các tập dữ liệu lớn và có yêu cầu về tốc độ cao.
1.2.2 Nguyên lý hoạt động
Để triển khai tìm kiếm bằng MPI trong C++, bạn sẽ chia mảng thành
các phần nhỏ hơn và gán mỗi phần cho một luồng MPI khác.
Sau đó, mỗi luồng sẽ thực hiện tìm kiếm đồng thời trên đoạn mảng
được chỉ định của nó và giao tiếp với các luồng khác để phối hợp tìm kiếm.
1.2.3 Phân tích độ phức tạp của thuật tốn
Độ phức tạp của một thuật tốn tìm kiếm song song phụ thuộc vào
nhiều yếu tố, trong đó có:
● Kích thước tập dữ liệu: Độ phức tạp của thuật toán tìm kiếm song song
thường tăng dần với kích thước tập dữ liệu.
● Số lượng tác vụ song song: Số lượng tác vụ song song càng cao, độ
phức tạp của thuật tốn càng cao.
● Số lần tìm kiếm: Nếu số lần tìm kiếm lớn, độ phức tạp của thuật tốn
càng cao. Độ khó của việc tìm kiếm: Một số thuật tốn tìm kiếm có độ




×