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

ĐÁNH GIÁ HIỆU NĂNG THUẬT TOÁN TÍNH TÍCH MA TRẬN FOX 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 (1.51 MB, 34 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

CHỦ ĐỀ:
ĐÁNH GIÁ HIỆU NĂNG THUẬT TỐN TÍNH
TÍCH MA TRẬN FOX SỬ DỤNG MPI
GVHD:

HÀ MẠNH ĐÀO

Nhóm – Lớp:

5 – 20231IT6069001

Thành viên:
Nguyễn Đức Cường – 2021605340
Nguyễn Mạnh Trung – 2021607594
Lê Đức Phi – 2020603655

Hà Nội, Năm 2023


LỜI MỞ ĐẦU
Nhu cầu tính tốn trong lĩnh vực khoa học và công nghệ ngày càng cao
và trở thành một thách thức vì phương pháp xử lý tuần tự với một bộ xử lý
không thể đáp ứng được. 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ể nhắc tới việc các thiết bị
phần cứng ngay nay đang trở nên hồn hảo và đáp ứng được khả năng tính
tốn mạnh mẽ trước những yêu cầu phức tạp mà con người đề ra. Với sự
phát triển mạnh mẽ của công nghệ sản xuất chip, sản xuất phần cứng máy
tính thì giờ đây việc xây dựng các hệ thống máy tính mạnh đã trở nên đơn
giản hơn trong lĩnh vực tính tốn hiệu năng cao. Ngoài ra thách thức đặt ra
trong lĩnh vực tính tốn hiệu năng cao phải đối mặt là làm sao để sử dụng
các hệ thống tính tốn hiệu năng cao để giải quyết các bài toán trong đời
sống. Nhóm chúng em thực hiện nghiên cứu chủ đề “Đánh giá hiệu năng cao
thuật tốn tính tích ma trận Fox sử dụng MPI” với bài tốn tính tích ma trận
khá phổ biến trong xử lý ảnh và trong lĩnh vực AI. Chúng em cũng không
quên gửi lời cảm ơn thầy Hà Mạnh Đào đã hỗ trợ nhóm thực hiện đề tài.
Nhóm mong muốn qua việc nghiên cứu chủ đề có thể hiểu thêm về các khái
niệm trong tính tốn hiệu năng cao - một lĩnh vực có thể coi là xu hướng hiện
nay trong giới cơng nghệ nói chung từ đó có thể có nền tảng vững chắc để
ứng dụng kiến thức đã học vào phát triển các giải pháp thực tế.

MỤC LỤC
Chương 1. Giới thiệu kiến thức cơ sở liên quan
2

4


1.1

Giới thiệu về tính tốn hiệu năng cao...................................................4

1.1.1


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

1.1.2

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

1.2

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

1.2.1

Mơ hình tính tốn song song........................................................10

1.2.2

Nguyên lý thiết kế thuật toán song song......................................15

1.3

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

1.4

Giới thiệu thuật toán Fox....................................................................18

1.4.1

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


1.4.2

Nguyên lý hoạt động....................................................................18

1.4.3

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

Chương 2. Mơ tả, thực hiện và đánh giá hiệu năng của bài toán
2.1

Giới thiệu bài toán..............................................................................20

2.2

Thực hiện thuật toán Fox....................................................................20

2.2.1

Thuật toán tuần tự.........................................................................20

2.2.2

Thuật toán song song....................................................................22

2.3

20


Đánh giá hiệu năng.............................................................................27

2.3.1

Đánh giá theo lý thuyết................................................................28

2.3.2

Đánh giá theo thực tế....................................................................29

Chương 3. Tổng kết

30

3.1

Nội dung đã thực hiện.........................................................................30

3.2

Hướng phát triển.................................................................................30

3


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ì?
− Tính tốn hiệu năng cao là việc sử dụng tổng hợp sức mạnh của máy
tính để mang lại kết quả tính tốn cao hơn so với máy tính truyền thống

hoặc các máy chủ trong việc xử lý các bài tốn khó và phức tạp.
− 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à 1 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.
− 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 …

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 toá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.
4


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:
● 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 quá trình
phát triển.
● Tốc độ: Hệ thống HPC cực kỳ nhanh chóng. Máy tính thơng thường
chạy ở tốc độ gigaFLOPS (một tỷ FLOPS) hoặc teraFLOPS (một nghìn
tỷ FLOPS) cịn hệ thống HPC được đo bằng cấp độ nhanh hơn là
petaFLOPS hoặc exaFLOPS. Khả năng hồn thành các phép tính trong
vài phút hoặc vài giờ thay vì ngày hoặc cả tháng là một lợi thế to lớn.
● Chi phí: Câu trả lời nhanh hơn có nghĩa là ít lãng phí thời gian và tiền
bạc hơn. Ngoà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.
5


● 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.

6


1.2 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 ngun 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

7


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 nguyên đ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:
8


● 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, v.v.)
● Nhiều đơn vị thực thi/lõi
● Nhiều chủ đề phần cứng

● 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.

9



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

● 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.

10


1.2.1 Mơ hình tính tốn song song
Mơ hình tính tốn song song hiện nay có 4 cách phân loại theo Flynn:
SISD: Single Instruction stream Single Data stream
● 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

11


● 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ý.


SIMD: Single Instruction stream Multiple Data stream
● 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

12


● 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

13


MISD: Multiple Instruction stream Single Data stream
● 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


MIMD: Multiple Instruction stream Multiple Data stream
● 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


1.2.2 Nguyên lý thiết kế thuật toán song song
Khi muốn thực hiện việc xử lí song song ta phải xét cả kiến trúc máy
tính và các thuật tốn song song.
Để thiết kế được các thuật toán song song cần phải thực hiện:
− Phân chia dữ liệu cho các tác vụ.
− Chỉ ra cách truy cập và chia sẻ dữ liệu.
16


− Phân các tác vụ cho các tiến trình (bộ xử lí).
− Các tiến trình được đồng bộ ra sao

Khi thiết kế một thuật tốn song song có thể sử dụng năm ngun lí
chính trong thiết kế thuật tốn song song:
+ Nguyên lý lập lịch: mục đích là giảm tối thiểu các bộ xử lí sử dụng
trong thuật tố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).
+ 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.
+ Nguyên lý chia để trị: 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.
+ 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 tố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.3 Giới thiệu thư viện MPI
MPI là viết tắt của Message Passing Interface. Đó là một thư viện các
hàm trong C/C++ và Fortran cho phép chèn vào trong code để thực hiện trao
đổi dữ liệu giữa các tiến trình.
MPI thường sử dụng cho hệ thống có kiến trúc bộ nhớ phân tán (hệ
thống máy tính phân cụm (cluster))), tuy nhiên nó cũng hoạt động bình
thường trên hệ thống kiến trúc chia sẻ bộ nhớ.
17


Chương trình MPI được dịch và chạy trên nền tảng có hỗ trợ chuẩn
MPI.
Trong mơ hình lập trình MPI, các tiến trình truyền thơng bằng cách gọi

các hàm thư viện để gửi và nhận thơng điệp với những tiến trình khác. Trong
hầu hết các chương trình MPI, số bộ xử lí cố định khi khởi tạo chương trình,
và một tiến trình được tạo ra trên một bộ xử lí. Tuy nhiên, những tiến trình
này có thể chạy những chương trình khác nhau.
Một chương trình MPI bao gồm nhiều chương trình tuần tự có trao
đổi dữ liệu với nhau thơng qua việc gọi các hàm trong thư viện.
Cấu trúc của chương trình MPI:
#include "mpi.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
//Khoi tao moi truong cho MPI
MPI_Init(&argc, &argv);
int numtasks;
//Chua so process trong group
int idtask;
//Chua gia tri id cua moi process
MPI_Comm_size(MPI_COMM_WORLD, &numtasks);
MPI_Comm_rank(MPI_COMM_WORLD, &idtask);
//in ra id cua cac tac vu va so tac vu khoi tao
printf("Id tac vu: %d trong tong so: %d\n", idtask, numtasks);
//Giai phong moi truong
MPI_Finalize();
return 0;
}

Group (nhóm) và Communicator
Một nhóm là một tập có thứ tự của các tiếng trình. Mỗi tiến trình
trong 1 nhóm được gắn với 1 số id duy nhất (rank). Các giá trị của rank bắt
đầu từ 0 tới N-1, ở đây N là số tiến trình trong nhóm. Trong MPI, một nhóm

được đại diện trong bộ nhớ hệ thống như 1 đối tượng. Nó có thể truy cập
bởi các lập trình viên chỉ qua “handle”. Một nhóm ln luôn gắn với một đối
tượng communicatior.
Một communicator liên quan đến một nhóm các tiến trình mà có thể
giao tiếp với nhau. Tất cả các message MPI phải chỉ định bởi một
18


communicator. Giống như group, các communicator được mô tả trong bộ
nhớ như các đối tượng và được truy cập bởi lập trình viên chỉ qua các
“handle”. Ví dụ, handle cho một communicator là bao gồm tất cả các tác vụ
của MPI_COMM_WORLD.
Về khía cạnh lập trình viên, một nhóm và một communicator là một.
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.

● 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.

● Ngày nay MPI có thể chạy trên hầu hết các nền tảng phần cứng:
19


● Bộ nhớ chia sẻ
● Bộ nhớ phân tán
● Dạng lai hai loại trên


1.4 Giới thiệu thuật toán Fox
1.4.1 Định nghĩa
Thuật toán Fox là một thuật toán phổ biến hiện nay để thực hiện tính
tốn nhân 2 ma trận và nhiều hơn nữa. Đây là một thuật toán song song
được sử dụng để nhân ma trận lớn bằng cách chia ma trận thành các khối
con và thực hiện tính tốn đồng thời trên các khối này.

1.4.2 Nguyên lý hoạt động
● Các phần tử n của 2 ma trận A và B được phân vùng giữa các bộ xử lý
với tổng số bộ xử lý là p để mỗi bộ xử lý ban đầu lưu trữ

( √n❑ ) * ( √n❑ )

● Lúc này, thuật toán sẽ sử dụng 1 phần tử của ma trận A nhân với tất cả
các phần tử cùng hàng tại ma trận B. Sau đó dịch chuyển vòng tròn một
bước lên trên của các khối lệnh ma trận B dọc theo các cột của bộ xử lý
● Ban đầu chọn khối chéo Ai,i để phân vùng các bộ xử lý
1. Sau khi hoàn thành phần trên, ta lập lại thêm p lần:
2. Nhân Ai,i với tất cả các phần tử trong hàng của ma trận B
3. Nhân ma trận A vừa nhận được với ma trận B
4. Dịch khối B lên trên một bước
5. Sau đó chọn khối Ai,(j+1)mod√❑ và nhân với các phần tử trong cùng
1 hàng
6. Quay lại bước 2

20




×