Thuật toán song song cho một số bài toán trên đồ thị

128 16 0
Thuật toán song song cho một số bài toán trên đồ thị

Đ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

Thuật toán song song cho một số bài toán trên đồ thị Thuật toán song song cho một số bài toán trên đồ thị Thuật toán song song cho một số bài toán trên đồ thị luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐỖ TRUNG KIÊN THUẬT TOÁN SONG SONG CHO MỘT SỐ BÀI TOÁN TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Hà Nội, 2006 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐỖ TRUNG KIÊN THUẬT TOÁN SONG SONG CHO MỘT SỐ BÀI TOÁN TRÊN ĐỒ THỊ LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Hà Nội, 2006 Chương I : Đại cương tính tốn song song Chương : ĐẠI CƯƠNG VỀ TÍNH TỐN SONG SONG 1.1 Một số khái niệm thuật ngữ Tính tốn song song hay xử lý song song : trình xử lý thơng tin nhấn mạnh việc nhiều đơn vị liệu xử lý đồng thời hay nhiều xử lý để giải tốn Siêu máy tính : máy tính đa thơng thường có tốc độ tính tốn vô lớn Chúng chia làm hai loại - Máy tính song song dựa vi xử lý : thiết kế với nhiều xử lý có tốc độ vừa phải - Siêu máy tính truyền thống (supercomputer) : xử lý tốc độ xử lý lại cực cao Song song liệu (data parallelism) : Là chế sử dụng nhiều đơn vị xử lý thực thao tác nhiều đơn vị liệu Song song điều khiển (control parallelism) : chế nhiều thao tác khác tác động lên nhiều đơn vị liệu khác cách đồng thời Dây chuyền (pipeline) : chế chia công việc thành nhiều chặng nối tiếp, chặng thực phận khác Đầu phận đầu vào phận Tăng tốc : tăng tốc thuật toán song song tỉ số thời gian thực tình xấu thuật toán tốt thời gian thực cơng việc thuật toán song song Liên quan đến tốc độ, năm 1967 Amdahl nêu định lý sau : ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song Định lý Amdahl : Gọi f tỷ lệ thao tác tổng số thao tác phải làm, ≤ f ≤ S tốc độ tối đa máy tính song song với p xử lý ta có S≤ ( f + − f) p Hiệu (Efficient) thuật toán song song tính Tốc độ / số xử lý tham gia tính tốn Flop : Một đơn vị đo tốc độ máy tính song song Flop viết tắt floating point operating per second : số phép tính tốn hạng số thực dấu phẩy động thực giây Mega Mflop/s = 10 flop/s Giga Gflop/s = 10 Tera Tflop/s = 10 12 P P P P Giá (cost) trình tính tốn hệ thống song song tính sau : Giá = độ phức tạp tính tốn × số lượng xử lý tham gia tính tốn Trong độ phức tạp tính tốn hay thời gian tính số bước thực thao tác (với giả thiết thực thao tác tốn đơn vị thời gian) 1.2 Các mức độ song song Giả sử có 10 cơng việc đơi khác ta giao cho 10 máy làm, ta có mức song song cao nhất, gọi mức chương trình song song Mỗi cơng việc ta lại chia thành công đoạn (Task) thực song song, ta gọi mức độ song song mức song song chương trình Mỗi chương trình chương trình lại có hàng loạt câu lệnh, ta có mức độ song song câu lệnh, câu lệnh lại có hành loạt thao tác (operation) => mức độ song song thao tác ĐỖ TRUNG KIÊN Chương I : Đại cương tính toán song song 1.3 Phân loại kiến trúc song song Một phân loại hay nhắc tới Flynn – 1972 Michael Flynn phân kiến trúc máy tính thành bốn loại dựa tương tác lệnh liệu : - SISD(single instruction stream, single data stream) : Đây kiến trúc Von Neuman, thời điểm lệnh thực - MISD (multiple instruction stream, single data stream) : Kiến trúc cho phép vài lệnh thao tác liệu - SIMD (single instruction stream, multiple data stream) : Cho phép lệnh thực đồng thời liệu khác ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song - MIMD (multiple instruction stream, multiple data stream) : Cho phép nhiều lệnh khác đồng thời xử lý nhiều liệu khác thời điểm 1.4 Mô hình SIMD Mơ hình kiến trúc cịn gọi PRAM (Parallel Random Access Machine – Máy tính song song truy cập ngẫu nhiên) Trong mơ hình này, N xử lý chia xẻ nhớ chung Mô hình PRAM chia thành lớp nhỏ : - EREW (Exclusive Read, Exclusive Write) : Độc quyền đọc, độc quyền ghi Không cho phép hai xử lý đọc ghi đồng thời ô nhớ - CREW (Concurent Read Exclusive Write) : Đọc đồng thời, ghi độc quyền Các xử lý đọc đồng thời, không phép ghi đồng thời ô nhớ - ERCW (Exclusive Read Concurent Write) : Ghi đồng thời, đọc độc quyền Các xử lý ghi đồng thời, không phép đọc đồng thời ô nhớ - CRCW (Concurent Read Concurent Write) : đọc/ghi đồng thời Các xử lý đồng thời đọc ghi ô nhớ Việc cho phép nhiều xử lý đọc ô nhớ không khó Nhưng thiết kế cấu trúc ghi đồng thời phức tạp Vấn đề chỗ giá trị ghi vào khác cuối nhớ lưu giá trị ? Có ba cách giải : - ECR (Equallity Conflict Resolution) : Chỉ thực ghi tất xử lý ghi giá trị - PCR (priority Conflict Resolution) : Mỗi xử lý có số ưu tiên, giá trị xử lý có số thứ tự ưu tiên cao ghi - ACR (arbitrary Conflict Resolution) : Trong cách giải sức mạnh máy tính tăng dần theo thứ tự Mặc dù yếu nhất, công nghệ chế tạo phổ biến lại máy EREW, cịn máy CRCW, CREW đắt khó chế tạo Do ta phải nghĩ tới việc dùng EREW để mô kiến trúc cịn lại trình bày ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song 1.5 Dùng công nghệ EREW mô kiến trúc CRCW, CREW 1.5.1 Mơ đồng thời đọc Tính đọc đồng thời mô EREW cách sử dụng thao tác quảng bá giá trị cần đọc cho xử lý Gọi xử lý P , P , , P n Thao tác quảng bá giá trị x cho xử lý R R R R R R thực sau : - P đọc x báo cho P - P P báo cho P P - P , P , P , P báo cho P , P , P , P - R R R R R R R R R R R R R R R R R R R R R R R R R Thao tác địi hỏi thời gian thực O(logn) 1.5.2 Mơ ghi đồng thời Giả sử qui định xử lý phép ghi giá trị cần ghi trùng Như thao tác ghi đồng thời tiến hành máy mô sau : Kiểm tra xem n giá trị cần ghi có trùng khơng Nếu trùng tiến hành thao tác ghi Nếu khơng dừng Thao tác tốn thời gian cỡ số Thao tác kiểm tra thứ diễn sau, với a i giá trị thứ i R For R i ← to n/2 If a i = a i+n/2 R R R then R R R R R i ← to n/4 If (a i = a i+n/4 R Else b i := True b i := False Else For R R R ) then b i := True R R b i := False R R … Sau logn bước, trình kiểm tra kết thúc Như bước kiểm tra địi hỏi thời gian cỡ logn giá phải trả cho việc mô ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song 1.6 Họ máy MIMD Trong mục xem xét họ máy SIMD, hay gọi PRAM Sau xem xét kiến trúc song song khác – lớp máy MIMD Lớp phân làm loại : - Hệ đa xử lý với nhớ phân tán - Hệ đa xử lý dùng chung nhớ - Hệ đa xử lý với nhớ dùng chung phân tán 1.6.1 Hệ đa xử lý với nhớ phân tán (Multi processor system with distributed memory) - Đây hệ song song gồm nhiều máy tính kết nối thành mạng (multicomputer system) - Các xử lý quyền truy nhập vùng nhớ cục - Liên kết xử lý thực theo mơ hình chuyển thơng báo (message passing) - Hệ thống có quy mơ lớn, lên tới hàng chục ngàn xử lý Khi số xử lý lớn làm cho đường truyền mạng trở nên tải - Kỹ thuật lập trình phức tạp, tương ứng với mơi trường lập trình chuyển thơng báo PVM, MPI - Còn gọi tên khác hệ NORMA (no remote memory access model : mô hình khơng cho phép truy cập vùng nhớ xa) Ta thấy xử lý có vùng nhớ cục riêng (local memory) quyền ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song truy nhập vào đó, vùng nhớ xa (remote memory) xử lý khác mà chúng không quyền truy nhập vào 1.6.2 Hệ đa xử lý dùng chung nhớ (Multi processor system with shared memory) - Đây máy tính lớn với nhiều xử lý (multi processor) hoạt động theo chế đa xử lý đối xứng SMP (Symmetric multi processing) - Các xử lý truy cập tồn vùng nhớ dùng chung - Liên lạc xử lý thực thông qua vùng nhớ dùng chung Giả sử xử lý P muốn gửi liệu cho P , liệu ghi vào vùng R R R R nhớ dùng chung báo địa cho P P đọc địa lấy liệu R R R R - Qui mô hệ thống tương đối nhỏ, cỡ vài trăm xử lý - Kỹ thuật lập trình dễ dàng so với mơ hình - Còn gọi tên khác UMA (uniform memory access model : quản lý đánh địa toàn vùng nhớ dùng chung theo dạng địa thống nhất) Ta thấy hệ NUMA quản lý toàn vùng nhớ dùng chung không dùng mà dùng nhiều dạng địa 1.6.3 Hệ đa xử lý với nhớ dùng chung phân tán (Multi processor system with distributed shared memory) ĐỖ TRUNG KIÊN Chương I : Đại cương tính tốn song song - Về mặt vật lý, xử lý có vùng nhớ cục - Sự truy nhập tới vùng nhớ khác thực nhờ chế truy nhập mạng Nhờ tất vùng nhớ cục gom lại đánh địa vùng nhớ logic Các xử lý truy nhập địa vùng nhớ chung - Cịn gọi tên khác hệ NUMA (non uniform memory access model - quản lý đánh địa vùng nhớ dùng chung theo nhiều dạng địa chỉ) Ta thấy xử lý, vùng nhớ cục (local memory) mình, cịn truy cập vùng nhớ xa (remote memory : vùng nhớ cục xử lý khác) Hai vùng nhớ quản lý theo hai chế độ địa khác 1.7 Mạng liên kết Như thấy mơ hình trên, xử lý liên kết với thông qua môi trường mạng liên kết (interconnection network) Ở không sâu vào phân tích mà liệt kê số kiểu mạng liên kết : - Mạng liên kết đầy đủ : Mỗi cặp xử lý kết nối với đường truyền Vùng nhớ chung chia cho xử lý - Mạng liên kết tuyến tính : Là mơ hình đơn giản nhất, xử lý P i có hai láng giềng P i-1 P i+1 , xử lý đầu cuối có láng R R R R R R giềng Một đường truyền chạy xuyên suốt qua xử lý ĐỖ TRUNG KIÊN Phụ lục Vì thế, độ phức tạp tồn thuật tốn CREW_DFS O(log2n) sử dụng O(n2n/logn) xử lý Kết rằng, DFS đồ thị mang đặc tích cố hữu tìm thuật tốn song song nhanh cho DAGs Tìm kiếm theo chiều rộng Thuật tốn CREW_BFS Đầu vào : T(x,0), cho x ∈ N, xác định parent(y | T(x,0)) bậc kí hiệu level(y | T(x,0)) cho y ∈ N Đầu : Cây khung BFS có gốc nút x ∈N, T(x, logn) xác định parent(y | T(x, logn)) bfs(y | T(x, logn )) cho y ∈ N k := While k < logn For x = to n dopar Tính tốn bfs(y | T(x,k)) cho tất y ∈ N odpar p := While p < logn for x = to n dopar for y= to n dopar z = (pn/logn+1) to ((p+1) n/logn) for If (z = x) AND else if dopar (parent(y | T(x,k)) ≠∅) then (z ∈ T(x,k)) AND M x k(y,z) :=0 R R (parent(y | T(z,k)) ≠∅) then M x (y,z) := n × (level(z|T(x,k)) + level(y|T(z,k))) + bfs(z|T(x,k)) k R R else M x k(y,z) := ∝ R R fi fi odpar odpar odpar p := p + 1; od for x = to n dopar for y = to n dopar 112 ĐỖ TRUNG KIÊN Phụ lục Tìm z m cho M x k(y,z m ) := (M x k(y,z) | z = 1, 2, … , n) R If R R R R R R R M x (y,z m ) ≠ ∝ then k R R R R parent(y | T(x,k+1)) := parent(y | T(z m ,k)) level(y | T(x,k)) := level(z m | T(x,k)) + level (y|T(z m ,k)) R R R R R R od fi odpar odpar k := k+1 od For x = to n dopar Tính tốn bfs(y|T(x,logn)) cho tất y ∈ N odpar Phân tích độ phức tạp Phân tích tương tự phân tích thuật tốn CREW_DFS ta có độ phức tạp thuật tốn CREW_BFS O(log2n) sử dụng O(n3) xử lý Tìm kiếm thành phần liên thơng sử dụng BFS Thuật toán CREW_BF_CCOMP Đầu vào : Cây T(i,0) xác định parent(j|T(i,0)) level(j|T(i,0)), cho tất i,j ∈ G Đầu : số thành phần liên thông nút i, kí hiệu comp(i), i ∈ N, thành phần xác định nút thành viên đánh số thấp Xây dựng nlogn - bfs , T(i, logn), i = 1, 2, …., n G For i = to n For j = if dopar to n dopar parent(j|T(i, logn)) ≠ ∅ then else C[i,j] := i C[i,j] := ∝ fi odpar odpar Tính tốn giá trị tối thiểu cột j = 1, 2, …, n C kí hiệu m(j); for j=1 to n dopar comp(j) := m(j) 113 ĐỖ TRUNG KIÊN Phụ lục odpar Thuật tốn CREW_BFS_CCOMP xây dựng ma trận liên thơng C[1:n, 1:n] từ n logn-bfs-tree, gốc nút i ∈ N G, cho C[i,j] = i , có đường độ dài lớn từ i tới j G = ∝ , ngược lại Xây dựng ma trận thực vòng For Cuối cùng, số lượng thành phần liên thông phân bố tới nút j số nhỏ cột j ma trận C – phần cịn lại thuật tốn Một ví dụ minh họa cách thực thuật toán đưa sau Phân tích độ phức tạp Xây dựng nlogn bfs T(i, logn) sử dụng thuật tốn CREW_BFS địi hỏi thời gian O(log2n) với O(n3) xử lý Độ phức tạp ba bước cịn lại thuật tốn CREW_BF_CCOMP là O(1) , O(logn) O(1) Hai bước đòi hỏi O(n2) xử lý bước cuối đòi hỏi O(n) xử lý Vì thế, tổng tồn độ phức tạp thời gian thuật toán CREW_BF_CCOMP O(log2n) sử dụng O(n3) xử lý 114 ĐỖ TRUNG KIÊN Phụ lục Thành phần hai liên thơng Thuật tốn CREW_TEST_BICON Đầu vào : ma trận kề A[1:n,1:n] đồ thị vô hướng G Đầu : Nếu đồ thị hai liên thơng thuật tốn thiết lập biến Bicon true, khơng False For i = to n dopar Xây dựng A i [1:n-1, : n-1] từ A việc xóa hàng i cột j A, nghĩa A i diễn tả ma trận kề đồ thị G i R R R R R odpar For i = to n dopar Xác định từ A i xem G i có liên thơng hay khơng sử dụng thuật tốn CREW_NC_CCOMP If G i liên thông Then connect(i) := else connect(i) := R R R R R R fi s := ∑ connect (i) 1≤i ≤ n if s = then bicon := TRUE else bicon := FALSE fi Vòng lặp For lấy thời gian O(1) với O(n3) xử lý để xây dựng n ma trận kề A i cho đồ thị G i , ∀i ∈ N Vòng lặp For song song thứ hai áp dụng thuật toán R R R R CREW_NC_CCOMP đồ thị G i cách đồng thời Mỗi đồ thị G i thời R R R R gian O(log n) với O(n ) xử lý Cuối cùng, tính tốn tổng n số thời gian O(logn) sử dụng O(n) xử lý Câu lệnh if cuối thời gian O(1) sử dụng xử lý Vì có chứng minh sau Gọi G = đồ thị vơ hướng liên thơng Có thể kiểm tra G có hai liên thơng hay khơng thuật tốn CREW_TEST_BICON thời gian O(log2n) sử dụng O(n3) xử lý Cho đồ thị vô hướng liên thông G = , tìm bccs G thời gian O(log2n) sử dụng O(n3) xử lý mơ hình CREW PRAM 10 Tập chu trình Thuật toán CREW_SFC 115 ĐỖ TRUNG KIÊN Phụ lục Đầu vào : ma trận kề A[1:n,1:n] đồ thị vô hướng G = Đầu : SFC, nghĩa tập {C (i,j) | (i,j) ∈E - E'} tương ứng với khung T(r) =

Ngày đăng: 13/02/2021, 06:46

Mục lục

  • CHƯƠNG I

  • CHƯƠNG II

  • CHƯƠNG III

  • CHƯƠNG IV

  • KẾT LUẬN

  • TÀI LIỆU THAM KHẢO

  • PHỤ LỤC

Tài liệu cùng người dùng

Tài liệu liên quan