1. Trang chủ
  2. » Luận Văn - Báo Cáo

NÂNG CAO HIỆU NĂNG TÍNH TOÁN CHO CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHÁT VÀ CÂY KHUNG NHỎ NHẮT

26 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 458,94 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Với mục đích tìm hiểu và nghiên c u về thuật toán

Trang 1

Đ I H C ĐÀ NẴNG

TR NG ĐẠI H C S PHẠM

-

NGUY N ĐĔNG KHOA

NÂNG CAO HI U NĔNG TệNH TOÁN

CHO CÁC BÀI TOÁN TÌM Đ NG ĐI NGẮN NHẤT

Trang 2

Công trình được hoàn thành tại

TR NG ĐẠI H C S PHẠM

Ng i h ng d n khoa học: TS Nguy n Đình Lầu

Phản biện 1: PGS TSKH Trần Quốc Chiến

Phản biện 2: TS Nguyễn Quang Thanh

Luận văn đã được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ ngành Hệ thống thông tin họp tại trường Đại học

Sư phạm vào ngày 06 tháng 4 năm 2019

Có thể tìm hiểu luận văn tại:

- Thư viện Trường Đại học Sư phạm – ĐHĐN

- Khoa Công nghệ thông tin, trường Đại học Sư phạm - ĐHĐN

Trang 3

M Đ U

1 Lý do ch ọn đ tài

Công nghệ thông tin đang phát triển với một tốc độ chóng

mặt, đi cùng đó là lượng dữ liệu khổng lồ Để xử lý lượng dữ liệu khổng lồ đó đòi hỏi khối lượng tính toán rất lớn và thời gian là yếu tố quyết định tính thực tiễn c a bài toán đó.Để tăng tốc độ tính toán, các nhà khoa học đã đưa ra hai giải pháp:

Th nhất là 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 bạc nhưng tốc độ thì chỉ đạt đến một giới hạn nhất định

Th hai là chia bài toán ra thành những bài toán nhỏ để chạy song song trên nhiều bộ xử lý

Các nhà khoa học đã tập trung nghiên c u ở giải pháp th hai, từ đó ra đời thuật 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 mộ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ý hay 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

Với mục đích tìm hiểu và nghiên c u về thuật toán song song để giải quyết bài toán đồ thị một cách hiệu quả hơn, thời gian

xử lý ngắn hơn do đó tôi chọn đề tài: “Nâng cao hiệu năng tính toán

cho các bài toán tìm đường đi ngắn nhất và cây khung nhỏ nhất “

2 M c tiêu và nhi m v

2.1 Mục tiêu

Nghiên c u thuật toán song song, ng dụng một thư viện cụ

Trang 4

thể nâng cao hiệu năng tính toán cho hai thuật toán Dijkstra và Prim nhằm giảm thời gian thực hiện, góp phần nâng cao hiệu năng hoạt động c a hệ thống

3.1 Đối tượng nghiên cứu của đề tài

⁻ XLSS và thuật toán song song

⁻ Các bài toán đồ thị

⁻ Lập trình song song với MPI

3.2 Phạm vi nghiên cứu của đề tài

⁻ Tổng quan về XLSS và phân tán

⁻ Tổng quan về lý thuyết đồ thị

4 Ph ng pháp nghiên c u

4.1 Nghiên cứu lý thuyết

⁻ XLSS và thuật toán song song

⁻ Đồ thị và các bài toán trên đồ thị

⁻ Tìm hiểu lập trình song song với MPI

4.2 Nghiên cứu thực nghiệm

⁻ Xây dựng sơ đồ, thuật toán song song

⁻ Lập trình song song với MPI bằng Visual Studio

5 B c c đ tài

Ngoài phần mở đầu và kết thúc, nội dung chính c a luận văn

Trang 5

có 3 chương

Chương 1: Xử lý song song và lập trình với MPI

Chương 2: Các thuật toán trên đồ thị

Chương 3: Nghiên cứu ứng dụng thuật toán song song trên thư viện MPI

6 ụ nghĩa khoa học và thực ti n c a đ tài

Nghiên c u và nâng cao hiệu năng c a hệ thống bằng XLSS Tối ưu hơn về thời gian và chi phí so với phương pháp thông thường

Có thể áp dụng cho một số lĩnh vực cụ thể và một số bài toán

có độ ph c tạp về thời gian lớn, những bào toán thời gian thực

Làm giảm chi phí giá thành, thời gian cho các cơ quan, doanh nghiệp khi ng dụng, triển khai thực tế

CH NG 1 X LÝ SONG SONG VÀ L P TRÌNH

V I MPI 1.1 Gi i thi u v x lý song song

Ngày nay, rất nhiều bài toán yêu cầu khả năng tính toán và lưu trữ rất lớn thì mô hình kiến trúc này còn hạn chế Do đó để giải quyết các bài toán này cần có những hệ thống máy tính đ mạnh để thực hiện một cách nhanh chóng và hiệu quả Vì vậy, hướng xử lý song song với việc kết hợp nhiều bộ xử lý vào trong một máy tính được lựa chọn để giải quyết các bài toán đặt ra

Xử lý song song hay tính toán song song là quá trình xử lý

gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một vấn đề, nói chung là thực hiện tính toán trên những hệ thống đa bộ xử lý [1]

Máy tính song song là tập hợp các bộ xử lý kết nối với nhau

Trang 6

theo một kiến trúc xác định cùng hợp tác hoạt động và trao đổi song song

1.2 Ki n trúc máy tính song song

1.2.1. Mô hình SISD

1.2.2. Kiến trúc song song SIMD

1.2.3. Kiến trúc song song MISD

1.2.4. Mô hình máy tính MIMD

1.3 Thu t toán song song

1.3.1. Quy trình thiết kế thuật toán song song

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

1.3.3. Các cách tiếp cận trong thiết kế

1.3.4. Phân tích đánh giá thuật toán song song

Trong thuật toán tuần tự chúng ta chỉ quan tâm đến độ ph c tạp

về thời gian và không gian, nhưng trong thuật toán song song thường có thêm một số đại lượng đo lường khác Độ ph c tạp thời gian c a thuật toán song song không chỉ đơn giản là việc đếm số câu lệnh cơ bản như trong thuật toán tuần tự mà thay vào đó nó phụ thuộc vào các phép toán

cơ bản này có thể được thực hiện trên p bộ xử lý như thế nào Bên cạnh

độ ph c tạp thời gian độ ph c tạp về số bộ xử lý cũng là một đại lượng quan trọng trong phân tích thiết kế thuật toán song song

Thiết kế thuật toán song song hiệu quả bao gồm việc lựa chọn cấu trúc dữ liệu phù hợp, phân bố bộ xử lý và cuối cùng là thực hiện thuật toán Ba đại lượng này tác động lẫn nhau như một tổ ch c tính toán

1.4 Các mô hình l p trình song song

1.4.1. Mô hình chia sẽ bộ nhớ

1.4.2. Mô hình luồng

1.4.3. Mô hình truyền thông điệp

Trang 7

1.4.4. Mô hình phân hoạch dữ liệu

1.5 L p trình song song trong môi tr ng MPI

1.5.1. Giới thiệu

Giao th c truyền thông điệp MPI là một thư viện các hàm và macro có thể được gọi từ các chương trình sử dụng ngôn ngữ C, Fortran, và C++ Như tên gọi c a nó MPI được xây dựng nhằm sử dụng trong các chương trình để khai thác hệ thống các bộ xử lý bằng cách truyền thông điệp

1.5.1. Một số đặc điểm của lập trình MPI

1.6.1. Các lệnh quản lý môi trường MPI

Các lệnh này có nhiệm vụ thiết lập môi trường cho các lệnh thực thi MPI, truy vấn chỉ số c a tác vụ, các thư viện MPI,

- MPI Init khởi động môi trường MPI

MPI_Init (&argc, &argv)

Init ((argc, argv)

- MPI Comm size trả về tổng số tác vụ MPI đang được thực hiện trong communicator (chẳng hạn như trong MPI_COMM_WORLD)

MPI_Comm_size (comm,&size)

Comm::Get_size()

- MPI Comm rank trả về chỉ số c a tác vụ (rank) Ban đầu mỗi tác vụ

sẽ được gán cho một số nguyên từ 0 đến (N-1) với N là tổng số tác

vụ trong communicator

MPI_COMM_WORLD

Trang 8

MPI_Comm_rank (comm, &rank)

Comm::Get_rank()

- MPI Abort kết thúc tất cả các tiến trình MPI

MPI_Abort (comm, errorcode)

1.6.3. Cơ chế truyền thông điệp

1.6.4. Các lệnh truyền thông điệp blocking

Một số lệnh thông dụng cho chế độ truyền thông điệp blocking gồm có:

- MPI Send gửi các thông tin cơ bản

Trang 9

MPI_Send(&buf,count,datatype,dest,tag,comm)

Comm::Send(&buf,count,datatype,dest,tag)

- MPI Recv nhận các thông tin cơ bản

MPI_Recv(&buf,count,datatype,source,tag,comm,&status) Comm::Recv(&buf,count,datatype,source,tag,status)

- MPI Ssend gửi đồng bộ thông tin, lệnh này sẽ chờ cho đến khi thông tin đã được nhận (thông tin được gửi sẽ bị giữ lại cho đến khi

bộ đệm c a tác vụ gửi được giải phóng để có thể sử dụng lại và tác

vụ đích (destination process) bắt đầu nhận thông tin)

MPI_Ssend (&buf,count,datatype,dest,tag,comm)

Comm::Ssend(&buf,count,datatype,dest,tag)

- MPI Bsend tạo một bộ nhớ đệm (buffer) mà dữ liệu được lưu vào cho đến khi được gửi đi, lệnh này sẽ kết thúc khi hoàn tất việc lưu dữ liệu vào bộ nhớ đệm

Comm::Rsend(&buf,count,datatype,dest,tag)

Trang 10

- MPI Sendrecv gửi thông tin đi và sẵn sàng cho việc nhận thông tin

từ tác vụ khác

MPI_Sendrecv (&sendbuf,sendcount,sendtype,dest,sendtag,

&recvbuf,recvcount,recvtype,source,recvtag,comm,&status) Comm::Sendrecv(&sendbuf,sendcount,sendtype,dest,sendtag,

1.6.5. Các lệnh truyền thông điệp non-blocking

Một số lệnh thông dụng cho chế độ truyền thông điệp blocking gồm có:

non-MPI Isend gửi thông điệp non-blocking, xác định một khu vực c a

bộ nhớ thực hiện nhiệm vụ như là một bộ đệm gửi thông tin

MPI_Isend (&buf,count,datatype,dest,tag,comm,&request) Request Comm::Isend(&buf,count,datatype,dest,tag)

- MPI Irecv nhận thông điệp non-blocking, xác định một khu vực c a

bộ nhớ thực hiện nhiệm vụ như là một bộ đệm nhận thông tin

MPI_Irecv (&buf,count,datatype,source,tag,comm,&request) Request Comm::Irecv(&buf,count,datatype,source,tag)

- MPI Issend gửi thông điệp non-blocking đồng bộ (synchronous) MPI_Issend (&buf,count,datatype,dest,tag,comm,&request) Request Comm::Issend(&buf,count,datatype,dest,tag)

- MPI Ibsend gửi thông điệp non-blocking theo cơ chế buffer

Trang 11

MPI_Ibsend (&buf,count,datatype,dest,tag,comm,&request) Request Comm::Ibsend(&buf,count,datatype,dest,tag)

- MPI Irsend gửi thông điệp non-blocking theo cơ chế ready

MPI_Irsend (&buf,count,datatype,dest,tag,comm,&request) Request Comm::Irsend(&buf,count,datatype,dest,tag)

- MPI Test kiểm tra trạng thái kết thúc c a các lệnh gửi và nhận thông điệp non-blocking Isend(), Irecv() Tham số request là tên biến yêu cầu đã được dùng trong các lệnh gửi và nhận thông điệp, tham số flag sẽ trả về giá trị 1 nếu thao tác hoàn thành và giá trị 0 trong trường hợp ngược lại

MPI_Barrier (comm)

Intracomm::Barrier()

- MPI Bcast gửi bản sao c a bộ đệm có kích thước count từ tác vụ root đến tất cả các tiến trình khác trong cùng một communicator MPI_Bcast (&buffer,count,datatype,root,comm)

Intracomm::Bcast(&buffer,count,datatype,root)

- MPI Scatter phân phát giá trị bộ đệm lên tất cả các tác vụ khác, bộ

Trang 12

đệm được chia thành sendcnt phần

MPI_Scatter(&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype,root,comm)

Intracomm::Scatter(&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype,root)

- MPI Gather tạo mới một giá trị bộ đệm riêng cho mình từ các mảnh

dữ liệu gộp lại

MPI_Gather(&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype,root,comm)

Intracomm::Gather(&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype,root)

- MPI Allgather tương tự như MPI_GATHER nhưng sao chép bộ đệm mới cho tất cả các tác vụ

MPI_Allgather(&sendbuf,sendcnt,sendtype,&recvbuf,recvcount,recvtype,comm)

Intracomm::Allgather(&sendbuf,sendcnt,sendtype,&recvbuf,recvcnt,recvtype)

- MPI _ Reduce áp dụng các toán tử rút gọn (tham số op) cho tất cả các tác vụ và lưu kết quả vào một tác vụ duy nhất

tử OR logic), MPI_BOR (toán tử OR bitwise), MPI_LXOR (toán tử XOR logic), MPI_BXOR (toán tử XOR bitwise), MPI_MAXLOC

Trang 13

(giá tri cực đại và vi trí), MPI_MINLOC (giá tri cực tiểu và vi trí)

- MPI Allreduce tương tự như MPI_Reduce nhưng lưu kết quả vào tất cả các tác vụ

Intracomm::Reduce_scatter(&sendbuf,&recvbuf,recvcount[], datatype,op)

- MPI Alltoall tương đương với việc áp dụng lệnh MPI_Scatter rồi tới lệnh MPI_Gather

MPI_Alltoall(&sendbuf,sendcount,sendtype,&recvbuf,recvcnt,recvtype,comm)

Intracomm::Alltoall(&sendbuf,sendcount,sendtype,&recvbuf,recvcnt,recvtype)

- MPI Scan kiểm tra việc thực hiện toán tử rút gọn c a các tác vụ MPI_Scan(&sendbuf,&recvbuf,count,datatype,op,comm) Intracomm::Scan(&sendbuf,&recvbuf,count, datatype,op)

1.7 K t lu n ch ng

Để giải những bài toán đặt ra một cách hiệu quả trên những máy tính mà chúng ta có, vấn đề chính là làm thế nào để xây dựng được những thuật toán song song Cách làm khá thông dụng là biến đổi các thuật toán tuần tự về song song, hay chuyển từ một dạng

Trang 14

song song về dạng song song phù hợp hơn nhưng vẫn bảo toàn được

tính tương đương trong tính toán

Dựa vào bốn công đoạn và những nguyên lý thiết kế chính: nguyên lý lập lịch, nguyên lý hình ống, nguyên lý chia để trị, nguyên

lý đồ thị phụ thuộc dữ liệu, nguyên lý điều kiện tranh đua để xây dựng một số thuật toán song song

Để đánh giá được tính hiệu quả c a thuật toán song song thường phải dựa vào độ ph c tạp thời gian c a thuật toán Độ ph c

tạp thời gian c a thuật toán song song không chỉ phụ thuộc vào kích

cỡ c a dữ liệu đầu vào mà còn phụ thuộc vào kiến trúc máy tính song song và số lượng các bộ xử lý được phép sử dụng trong hệ thống

CH NG 2 CÁC THU T TOÁN TRểN Đ TH 2.1 Thu t toán Dijkstra tìm đ ng đi ngắn nh t

2.1.1. Mô tả thuật toán

+ Đầu vào: Đồ thị liên thông G(V,E,w), w(i,j) > 0 (i,j)

Trang 15

nhớ ta có đường đi ngắn nhất (L(z) không thay đổi, nếu L(z) = thì không tồn tại đường đi

Ngược lại sang b c 4

B c 4: Với mỗi x T kề v gán L(x) := min {L(x), L(v) +

w(v,x)} Nếu L(x) thay đổi thì ghi nhớ đỉnh v cạnh đỉnh x bằng mảng truoc[] (với truoc[] c a đỉnh 1 = 0) để sau này xây dựng đường đi

ngắn nhất

Quay về b c 2

Độ ph c tạp c a thuật toán Dijkstra: Thuật toán dùng không quá n-1 bước lặp Trong mỗi bước lặp, dùng không hơn 2(n-1) phép cộng và phép so sánh để sửa đỗi nhãn c a các đỉnh Ngoài ra, một đỉnh thuộc Sk có nhãn nhỏ nhất nhờ không quá n – 1 phép so sánh

Do đó thuật toán có độ ph c tạp O(n2

Trang 16

(3) Thêm cạnh:

Ký hiệu M là tập M ={ (i,j)E| iT&jT} Tìm cạnh (k,h)M sao cho :

ckh=min{cij|(i,j)M} Nếu ckh<∞, thêm cạnh (k,h) và đỉnh h vào T, sang bước (2) Ngược lại t c M=, kết thúc Kết luận đồ thị G không liên thông

2.2.2. Ví dụ minh họa

CH NG 3 NGHIÊN C U NG D NG THU T TOÁN SONG SONG TRểN TH VI N MPI

3.1 Thu t toán song song Prim tìm cây khung cực ti u: 3.1.1. Cách thực hiện thuật toán:

Đầu vào: Đồ thị G=(V,E) với trọng số Các đỉnh ký hiệu là

B c 2: Bộ xử lý P1 gửi một đỉnh ban đầu lên cho các BXL

P1,P2,…,Pm

B c 3: Trên mỗi BXL (P1,P2,…,Pm) thực hiện các bước sau đây:

Trang 17

Khởi tạo T= (1 đỉnh mà P1 đã phát ra ở bước 2, không cạnh)

B c 4: Kiểm tra điều kiện kết thúc:Nếu T có n-1 cạnh thì

kết thúc, ngược lại sang bước 5

B c 5: Thêm cạnh: Trên mỗi BXL Ký hiệu Mk là tập trên BXL k

Mk={(i,j) Ek iT&jT(k=1,…,m)}

Trên mỗi BXL tìm cạnh (xk,yk)  Mk(k=1,…,m)

sao cho c( xkyk) =min{cij|(i,j) Mk(k=1,…,m)} Nếu tất cả các Mk trên tất cả m BXL là rổng thì kết thúc, kết luận đồ thị không liên thông, ngược lại sang bước 6

B c 6: BXL P1 thực hiện tìm c( xy )nhỏ nhất trên tất cả m BXL

BXL P1 thêm cạnh (x,y) và đỉnh y vào T

BXL P1 chuyển số cạnh c a T và đỉnh y lên tất cả các BXL để lặp lại b c 4

3.1.2. Ví dụ thực hiện thuật toán song song Prim

3.2 Thu t toán song song Dijkstra tìm đ ng đi ngắn

nh t t m t đ nh đ n t t cả các đ nh

3.2.1. Cách thực hiện thuật toán

Đầu vào: Đồ thị liên thông G(V,E,w), w(i,j) ≥ 0 (i,j)E, đỉnh nguồn a, 1 bộ xử lý chính và m-1 bộ xử lý phụ

Đầu ra: Chiều dài đường đi ngắn nhất là đường đi ngắn nhất

từ đỉnh a đến tất cả các đỉnh trên đồ thị

ụ t ng: Chia đồ thị ban đầu cho m bộ xử lý (P0, P1,…,P

m-1), cùng tính toán đồng thời, mỗi bộ BXL đảm nhận n/m đỉnh c a đồ thị (n là số đỉnh c a đồ thị, m là số BXL ) và ma trận trọng số n/m

Ngày đăng: 09/05/2022, 23:41

HÌNH ẢNH LIÊN QUAN

Hình 3.13. Kết quả thu được chạy bài toán Dijkstra trên hệ thống - NÂNG CAO HIỆU NĂNG TÍNH TOÁN CHO CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHÁT VÀ CÂY KHUNG NHỎ NHẮT
Hình 3.13. Kết quả thu được chạy bài toán Dijkstra trên hệ thống (Trang 22)
Bảng đánh giá trên được biểu diễn bằng đồ thị sau: - NÂNG CAO HIỆU NĂNG TÍNH TOÁN CHO CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHÁT VÀ CÂY KHUNG NHỎ NHẮT
ng đánh giá trên được biểu diễn bằng đồ thị sau: (Trang 24)
hình 3.16. Đồ thị biểu diễn sự đánh giá thuật toán song song so với tu ần tựbài toán Dijkstra 2500 đỉnh  - NÂNG CAO HIỆU NĂNG TÍNH TOÁN CHO CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHÁT VÀ CÂY KHUNG NHỎ NHẮT
hình 3.16. Đồ thị biểu diễn sự đánh giá thuật toán song song so với tu ần tựbài toán Dijkstra 2500 đỉnh (Trang 24)
Hình 3.17. Đồ thị biểu diễn sự đánh giá thuật toán song song so v ới tuần tựbài toán Prim 2100 đỉnh  - NÂNG CAO HIỆU NĂNG TÍNH TOÁN CHO CÁC BÀI TOÁN TÌM ĐƯỜNG ĐI NGẮN NHÁT VÀ CÂY KHUNG NHỎ NHẮT
Hình 3.17. Đồ thị biểu diễn sự đánh giá thuật toán song song so v ới tuần tựbài toán Prim 2100 đỉnh (Trang 25)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w