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

Tiểu luận MÔN HỌC ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN SONG SONG TRONG BÀI TOÁN GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH

35 939 1

Đ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 35
Dung lượng 1,13 MB

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

Nội dung

- Định nghĩa: Tính chéo trội của một ma trận vuông: Ma trận A với các thành phần aij được gọi là có tính chéo trội, nếu giá trị tuyệt đối của các phần tử nằm trên đường chéo chính lớn hơ

Trang 1

BÁO CÁO MÔN HỌC ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY

Trang 2

1.2.2 Một số ví dụ minh họa 12

CHƯƠNG 2 - LẬP TRÌNH SONG SONG VỚI MPI 13

2.1 Tổng quan về lập trình song song với MPI 13

2.1.1 Giới thiệu 13

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

2.2 Lập trình song song với MPI 15

2.2.1 Giới thiệu 15

2.2.2 Một số vấn đề về hiệu năng 17

CHƯƠNG 3 – MPI TRONG THUẬT TOÁN JACOBI VÀ GAUSS-SEIDEL CHO BÀI TOÁN HỆ PHƯƠNG TRÌNH TUYỂN TÍNH SONG SONG 22

3.1 Lựa chọn hàm MPI cho thuật toán song song 22

3.2 CHƯƠNG TRÌNH DEMO: 25

3.2.1 Giao diện chương trình: 25

3.2.2 Cách sử dụng: 25

3.2.3 Kết quả đạt được : 26

CHƯƠNG 4 : TÀI LIỆU THAM KHẢO 30

Trang 3

CHƯƠNG 1 HỆ PHƯƠNG TRÌNH TUYẾN TÍNH SONG SONG

1.1 Giới thiệu các phương pháp giải

bởi công thức sau:

n

b b b

o Nếu detA = 0 và tồn tại j{1, 2, , }n sao cho |A  j| 0 thì hệ

phương trình vô nghiệm

o Nếu detA = 0 và |A j| 0,  j 1,n thì hệ phương trình không

có nghiệm duy nhất (nghĩa là vô nghiệm hoặc vô số nghiệm) Nếu xảy ra trường hợp này thì ta sẽ dùng phương pháp Gauss (được nêu trong phần tiếp theo) để giải hệ phương trình này

b Hệ quả: Hệ phương trình tuyến tính thuần nhất n phương trình

n ẩn có nghiệm không tầm thường khi và chỉ khi định thức của

ma trận các hệ số bằng 0.

Nhận xét: Phương pháp này dùng để giải hệ phương trình có số

phương trình bằng số ẩn

c Các ví dụ:

Trang 5

b Thuật toán sau để giải hệ phương trình tuyến tính (gọi là thuật

toán Gauss):

Lập ma trận các hệ số mở rộng A Bằng các phép biến đổi sơ cấp

trên dòng đưa ma trận A về dạng bậc thang Giả sử ma trận bậc

- Nếu tồn tại ít nhất d i với r   1 i m khác 0 thì hệ vô nghiệm

- Nếu d r1 d r2   d m  0 thì hệ có nghiệm Khi đó các cột i i1 , , , 2 i r

(là các cột được đánh dấu * ) được giữ lại bên trái và các

1, , ,2

r

i i i

x x x là các ẩn, còn các cột còn lại thì được chuyển sang

bên phải, các ẩn x ktương ứng với các cột này sẽ trở thành tham

số Vậy ta sẽ có n – r tham số và hệ đã cho tương ứng với hệ

d x c

Trong đó d x i( )k là các hàm tuyến tính của x kvới k i i 1 , , , 2 i r Hệ

phương trình (3) là hệ phương trình dạng tam giác ta có thể dễ

dàng giải được bằng cách thế dần từ dưới lên, tức là tính lần lượt

Chú ý: Nếu trong quá trình biến đổi xuất hiện 1 dòng mà bên trái

bằng 0 còn bên phải là số khác 0 thì ta có thể kết luận hệ phương

trình vô nghiệm và không cần làm gì tiếp

Nhận xét: Nếu ma trận thu được cuối cùng trong thuật toán

Trang 6

Vì | | |AA1 | | A2 | | A3 | 0  nên ta không thể dùng phương pháp Cramer

để giải hệ phương trình này

Ta sẽ áp dụng phương pháp Gauss để giải hệ phương trình trên

Ta viết hệ dưới dạng ma trận hóa như sau:

- Khi hệ phương trình có vô số nghiệm thì dù giải bằng phương

pháp nào ta cũng có thể có nhều cách chọn biến tự do

- Khi giải hệ phương trình tuyến tính thuần nhất, ta có nhiều cách

chọn hệ nghiệm cơ bản

Trang 7

- Trong đó ma trận C và vec tơ d được xây dựng từ A và b

Để thực hiện phép lặp ta chọn một vec tơ ban đầu x(0), sau đó

tính các x(i), i=1,2, theo công thức lặp sau:

Véc tơ x(k) được gọi là vec tơ lặp thứ k

- Ta có định lý sau:

- Định lý (Sự hội tụ của phương pháp)

Trang 8

- Nói chung theo phương pháp lặp đơn, điều kiện để phép lặp

được hội tụ thì ||C|| < 1 Tuy nhiên trong thực tế thì ta chỉ có

ma trận A Một câu hỏi đặt ra là ma trận A phải thỏa mãn điều

kiện gì để ta có thể đưa (2.4) về dạng (2.5) và áp dụng phương

pháp lặp đơn?

Để phương pháp lặp hội tụ thì thường ma trận A phải thỏa mãn

tính chéo trội của ma trận vuông

- Định nghĩa: (Tính chéo trội của một ma trận vuông): Ma trận A

với các thành phần aij được gọi là có tính chéo trội, nếu giá trị

tuyệt đối của các phần tử nằm trên đường chéo chính lớn hơn

tổng các giá trị tuyệt đối của các phần còn lại nằm cùng hàng,

tức là:

Sau đây sẽ giới thiệu 2 phương pháp lặp đơn Jacobi và

Gaus-Seidel

1.1.4 Phương pháp lặp Jacobi

- Với giả thiết ma trận A có tính chéo trội, khi đó các hệ số aii ≠0,

i = 1,2, ,n do đó ta có thể chia phương trình thứ i của hệ(2.1)

cho aii và nhận được hệ tương đương

Trang 9

Từ đây ta có:

Khi đó ma trận C, vector d là:

Trang 10

(Đến đây ta đã đưa hệ(2.4) về dạng (2.5) và dễ thấy rằng ma trận C

thỏa mãn điều kiện lặp đơn, tức là ||C||∞< 1.)

Vậy đến đây ta tiếp tục áp dụng phương pháp lặp (2.6) đểtính

nghiệm ởcác bước lặp như sau:

Với vectơ x(0) cho trước bất kỳ, ví dụ x(0) = θ(vecto0) ta có thểtính các

vectơ x(k) tại

bước lặp k bằng công thức x(k) = C x(k-1) + d , k =1, 2,

Cụ thể hơn, nếu x(k) = (x1(k), x2(k), , xn(k)) thì ta có

Với từng thành phần xi(k) ta có

Trang 11

- Điều kiện hội tụ, đánh gía sai số của phương pháp lặp Jacobi

cũng giống với phương pháp lặp đơn

Giải (1).Có thể thấy rằng ma trận các hệ số của hệ phương trình trên

đây thỏa mãn tính chéo trội, do đó ta có thể biến đổi hệ này để áp

dụng phương pháp lặp Jacobi Chia hai vế phương trình đầu tiên cho

4, hai vế phương trình thứ hai cho 3 và hai vế của phương trình thứ

ba cho 4 rồi biến đổi thích hợp ta nhận được:

x1= 2 - 0.06x2+0.02x3x2= 3 - 0.03x1+ 0.05x3x3= 5 - 0.01x1+ 0.02x2hay

(2) Chọn x(0) = (2,3,5)T, rồi tính x(1), x(2), theo công thức (2.10) với

lưu ý aii =1 ta được bảng kết quả sau:

(3) Xem x(3) là nghiệm gần đúng cần tìm, ta có thể đánh giá sai x(3)

với nghiệm đúng x* theo (2.10) như sau:

Trang 12

1.1.5 Phương pháp Gauss-Seidel

- Với giả thiết ma trận A có tính chéo trội Từ công thức (2.10) ta

thấy rằng phần tử thứ i của vec tơ nghiệm tại bước k được tính

qua các phần tử ở các vị trí khác i trong bước k-1 Phương pháp

Gauss-Seidel cải tiến phương pháp Jacobi bằng cách dùng ngay

những kết quảvừa tính được cho các thành phần của nghiệm

tại bước k để tính các thành phần khác của bước k, chỉ có

những thành phần nào chưa được tính thì mới lấy ở bước k-1

Cụ thể hơn ta có tại các bước:

(1) Giá trị x1(1) được tính qua các giá trị x2(0), x3(0), xn(0)

Giá trị x2(1) được tính qua các giá trị x1(1), x3(0), xn(0)

Giá trị x3(1) được tính qua các giá trị x1(1), x2(1), x4(0), xn(0)

(h) Giá trịx1(h) được tính qua các giá trị x2(h-1), x3(h-1), xn(h-1)

Giá trị x2(h) được tính qua các giá trị x1(h), x3(h-1), xn(h-1)

Giá trị x3(h) được tính qua các giá trị x1(h), x2(h), x4(h-1), xn(h-1)

- Với vec tơ x(0) cho trước bất kỳ, ví dụ x(0) = θ(vec tơ 0) ta có thể

tính các vec tơ x(k) tại bước lặp k bằng công thức

- Trong công thức (2.11) chúng ta có thể không dùng chỉ số trên

để chỉ ra rằng chúng ta chỉ dùng một mảng là vec tơ có n thành

phần để lưu trữ nghiệm Giá trị nào vừa được tính toán thì được

Trang 13

- Sự hội tụ của phương pháp Gauss-Seidel:

Điều kiện hội tụcủa phương pháp lặp Gauss- Seidel cũng giống

với phương pháp lặp đơn Như ta sẽthấy trong ví dụ trong phần

sau, phương pháp Gauss- Seidel nói chung hội tụ nhanh hơn

phương pháp lặp đơn

Ta có thể sử dụng các công thức sau để đánh giá sai số của

phương pháp lặp Gauss-Seidel:

Gọi x* là nghiệm đúng của hệphương trình và gọi

Giải (1).Có thể thấy rằng ma trận các hệ số của hệ phương trình trên

đây thỏa mãn tính chéo trội, do đó ta có thể biến đổi hệ này để áp

dụng phương pháp lặp Jacobi Chia hai vế phương trình đầu tiên cho

4, hai vế phương trình thứ hai cho 3 và hai vế của phương trình thứ

ba cho 4 rồi biến đổi thích hợp ta nhận được:

Trang 14

(2) Chọn x(0) = (2,3,5)T, rồi tính x(1), x(2), theo công thức (2.11) với

lưu ý aii=1 ta được

bảng kết quả sau:

Trang 15

- Thuật toán Jacobi cũng tương tự như thuật toán Gauss-Seidel,

nhưng thuật toán Gauss - Seidel có tốc độ hội tụ nhanh hơn

1.2 Một số ứng dụng thực tế của giải hệ PTTT

1.2.1 Giới thiệu

- Ứng dụng tính chi phí

- Các ứng dụng về hỗn hợp

- Các ứng dụng liên quan đến gốc và lãi

- Các ứng dụng liên quan đến khoảng cách, tốc độ, và thời gian

- Ứng dụng trong hình học

1.2.2 Một số ví dụ minh họa

a Ví dụ 1: Trang gửi tiết kiệm 12000$ ở ngân hàng với 2 tài

khoản theo lãi suất lần lượt là 7.5% và 6% Nếu cuối năm số

tiền lãi thu được là 840$ thì số tiền gửi ở mỗi tài khoản ban đầu

của cô ấy là bao nhiêu?

Giải:

x: số tiền gửi ở tài khoản với lãi suất 7.5%

y: số tiền gửi ở tài khoản với lãi suất 6%

Tổng số tiền gửi : x + y = 12000

Số lãi cuối năm: x*0.075 + y*0.06 = 840

Ta có hệ PT:

x+ y=12000

Trang 16

y: tốc độ của gió

Hà Nội -> tp.HCM: (x+y)*2 = 1200

tp.HCM -> Hà Nội: (x-y)*2.5 = 1200

Ta có hệ PT:

c Ví dụ 3: Tổng của 2 góc nhọn trong một tam giác vuông là 90o

Giả sử số đo của một góc nhỏ hơn 6o so với 2 lần góc còn lại

Tính số đo mỗi góc nhọn trong tam giác?

CHƯƠNG 2 - LẬP TRÌNH SONG SONG VỚI MPI

2.1 Tổng quan về lập trình song song với MPI

Trang 17

diện từ ngành công nghiệp, các học viện và phòng thí nghiệm của

chính phủ Nó đã nhanh chóng được chấp nhận rộng rãi bởi được

thiết kế cẩn thận cho phép hiệu suất tối đa trên một loạt các hệ

thống, và nó dựa trên truyền thông điệp, một trong những mô hình

mạnh mẽ nhất và được sử dụng rộng rãi cho lập trình các hệ thống

song song.Những nỗ lực cho MPI bắt đầu vào mùa hè năm 1991, khi

một nhóm nhỏ các nhà nghiên cứu bắt đầu thảo luận tại một nơi hẻo

lánh trên núi ở Úc.Nội dung đó lại được thảo luận tại hội thảo “tiêu

chuẩn cho truyền thông điệp trong một môi trường bộ nhớ phân tán”

(Standards for Message Passing in a Distributed Memory

environment) tổ chức vào ngày 29 – 30 tháng 4 năm 1992 tại

Williamsburg, Virginia Tại hội thảo này, các tính năng cơ bản cần

thiết cho một MPI chuẩn đã được thảo luận, mà một nhóm cộng tác

đã được thành lập để tiếp tục quá trình tiêu chuẩn hoá Jack

Dongarra, Rolf Hempel Hempel, Tony Hey và David W.Walker đưa ra

một bản dự thảo sơ bộ được biết đến như MPI-1 trong tháng 11 năm

1992Trong tháng 11 năm 1992, một cuộc họp của nhóm cộng tác

MPI đã được tổ chức tại Minneapolis, mà tại đó hội thảo quyết định

đặt các quá trình tiêu chuẩn hoá trên một cơ sở chính thức hơn

Nhóm cộng tác MPI đã gặp nhau 6 tuần một lần trong suốt 9 tháng

đầu của năm 1993 Bản dự thảo chuẩn MPI đã được trình bày tại hội

nghị Siêu máy tính năm 93 trong tháng 11 năm 1993

Sau một thời gian nhận những ý kiến đóng góp từ cộng đồng, một số

kết quả được thay đổi trong MPI, phiên bản 1.0 của MPI được phát

hành vào tháng 6 năm 1994 Thông qua những cuộc gặp gỡ và thư

điện tử, các nhà nghiên cứu đã thảo luận với nhau thành lập diễn

đàn MPI, trong đó tất cả các thành viên của cộng đồng điện toán

hiệu suất cao đều có thể đăng ký làm thành viên của diễn đàn

Trang 18

MPI là một giao thức truyền thông độc lập với ngôn ngữ dùng để lập

trình máy tính song song MPI hỗ trợ cả giao tiếp điểm – điểm và giao

tiếp tập thể Mục tiêu của MPI là hiệu suất, khả năng mở rộng và khả

năng di dộng cao.MPI thường xuyên chạy trên các máy tính chia sẻ

bộ nhớ.Mặc dù MPI thuộc về lớp thứ 5 và lớp cao hơn của mô hình

OSI, nhưng những triển khai có thể bao gồm hầu hết các lớp, với

socket và TCP (Transmission

Control Protocol) được dùng trong tần vận chuyển.Hầu hết các triển

khai MPI bao gồm một thiết lập định tuyến riêng có thể được gọi trực

tiếp từ C, C++, Fortran hay bất kỳ ngôn ngữ nào có giao diện với các

thư viện, bao gồm C#, Java hoặc Python Những ưu điểm ucar MPI

vượt qua những thư viện truyền thông điệp cũ là tính di động (MPI có

thể được triển khai cho hầu hết các kiến trúc bộ nhớ phân tán) và tốc

độ (MPI thực hiện nguyên tắc tối ưu hoá cho phần cứ mà nó chạy)

MPI sử dụng LIS (Language Independent Specifications) để gọi và

ràng buộc ngôn ngữ Phiên bản đầu tiên được phát hành chỉ định

ràng buộc ANSI C và Fortran 77 cùng với LIS Năm 2008, chuẩn

MPI-1.3 chứa khoảng 128 chức năng, đây cũng là phát hành cuối cùng

của seri MPI-1 trong năm 2008

Phiên bản MPI-2.2 bao gồm những tính năng nới như là I/O song

Trang 19

bằng ngôn ngữ hỗn hợp dễ dàng hơn.

MPI cung cấp mô hình liên kết ảo, đồng bộ hoá và chức năng liên lạc

giữa một tập hợp các tiến trình (đã được ánh xạ tới các nút/máy chủ/

máy tính cụ thể) trong một ngôn ngữ độc lập, với cú pháp ngôn ngữ

đặc trưng (ràng buộc), cùng với một vài tính năng ngôn ngữ đặc

trưng Những chương trình MPI luôn luôn làm việc với các tiến trình,

nhưng những lập trình viên thường xem các tiến trình như là những

bộ vi xử lý Thông thường, để đạt hiệu suất tối đa, mỗi CPU (hoặc 1

nhân trong một máy tính đa nhân) sẽ được giao chỉ một tiến trình

duy nhất.Những chức năng thư viện MPI bao gồm (không giới hạn)

những hoạt động nhận/gửi loại điểm – điểm, lựa chọn giữa mô hình

xử lý logic Cartesian hoặc mô hình xử lý logic đồ thị tương đồng,

trao đổi dữ liệu giữa những cặp tiến trình, kết hợp các kết quả từng

phần của tính toán (thu thập và giảm các hoạt động), đồng bộ hoá

các nút cũng như thu thập thông tin liên quan đế mạng như số lượng

của tiến trình trong phiên tính toán, nhận dang bộ vi xử lý hiện tại

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

Trang 20

dụng như một chương trình dịch và một thư viện ở thời gian chạy,

nhưng thiết kế của MPI chủ yếu phản ánh nhu cầu nhận thức của

những người lập trình ứng dụng

- Cho phép truyền thông một cách hiệu quả: tránh việc sao chép

dữ liệu từ bộ nhớ sang bộ nhớ và cho phép gối chồng (overlap) giữa

các tính toán và truyền thông và offload để truyền thông đồng xử lý

khi có thể

- Cho phép thực thi trên một môi trường không đồng nhất

Có thể được gắn kết dễ dàng vào trong các chương trình ngôn ngữ C

và Fortran Cung cấp một giao thức truyền thông tin cậy: người dùng

không cần phải lo lắng tới thất bại trong truyền thông Các thất bại

này được xử lý bởi các hệ thống truyền thông cơ sở phía sau

-Định nghĩa một giao thức không quá khác biệt so với các môi trường

song song hiện tại như PVM (Parallel Vitual Machine), NX, Express

và cung cấp các mở rộng cho phép độ linh hoạt cao hơn

- Định nghĩa một giao thức có thể được thực thi trên các môi trường

(flatform) của nhiều nhà cung cấp mà không cần thay đổi nào đáng

kể trong truyền thông cơ sở và phần mềm hệ thống

-Ngữ nghĩa của giao thức là độc lập với ngôn ngữ

* - Giao thức được thiết kế cho phép sử dụng luồng một cách an

Trang 21

- Một ngữ cảnh truyền thông hỗ trợ cho việc thiết kế các thư viện

phần mềm song song

- Có khả năng xác định các topology truyền thông

- Có khả năng định nghĩa các kiểu dữ liệu mới để mô tả các thông

báo dựa trên các dữ liệu không liên tục

* Các tiến trình

- Một chương trình MPI bao gồm các bộ xử lý độc lập, thực thi

các mã lệnh riêng của chúng trong một mô hình MIMD (Multiple

Instruction Multiple Data) Các tập lệnh được thực thi bởi các bộ

xử lý không nhất thiết phải giống nhau, việc truyền thông giữa

các bộ xử lý được thực hiện thông qua việc gọi các hàm truyền

thông của MPI

- MPI không định rõ kiểu thực thi cho mỗi bộ xử lý Bộ xử lý A có

thể chạy tuần tự, hoặc có thể thực thi ở dạng đa luồng với các

luồng được kích hoạt đồng thời

- Điều này thực hiện được do tính chất luồng an toàn

(thread-safe) của MPI bằng cách tránh sử dụng các trạng thái tuyệt đối

- * Ứng dụng MPI

- Một ứng dụng MPI có thể được thực thi như là một tập các

nhiệm vụ truyền thông đồng thời Một chương trình bao gồm

các đoạn mã của người lập trình

- được liên kết với các hàm thư viện được cung cấp bởi phần

mềm MPI Mỗi nhiệm vụ được chỉ định một thứ hạng (rank) duy

nhất trong khoảng 1-> n-1 với các ứng dụng có n nhiệm vụ

Các hạng này được sử dụng để xác định các nhiệm vụ MPI khác

nhau trong việc gửi và nhận tin cũng như thực hiện các thao

tác truyền thông nói chung Nhiệm vụ MPI có thể chạy trên

cùng bộ xử lý hoặc các bộ xử lý khác nhau một cách đồng thời

Lợi ích của các rank là làm cho thao tác phối hợp độc lập với vị

trí vật lý của các thành phần

2.2.2 Một số vấn đề về hiệu năng

Ngày đăng: 19/05/2015, 20:44

HÌNH ẢNH LIÊN QUAN

Bảng kết quả sau: - Tiểu luận MÔN HỌC ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN SONG SONG TRONG BÀI TOÁN GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
Bảng k ết quả sau: (Trang 14)
Hình 2.1: khả năng tăng tốc độ tính toán, trường hợp lý tưởng - Tiểu luận MÔN HỌC ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN SONG SONG TRONG BÀI TOÁN GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
Hình 2.1 khả năng tăng tốc độ tính toán, trường hợp lý tưởng (Trang 22)
Hình 3.2: phương thức hoạt động của hàm Broadca - Tiểu luận MÔN HỌC ĐIỆN TOÁN LƯỚI VÀ ĐÁM MÂY TÌM HIỂU VÀ ỨNG DỤNG THUẬT TOÁN SONG SONG TRONG BÀI TOÁN GIẢI HỆ PHƯƠNG TRÌNH TUYẾN TÍNH
Hình 3.2 phương thức hoạt động của hàm Broadca (Trang 29)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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