1. Trang chủ
  2. » Khoa Học Tự Nhiên

Một số phương pháp song song cho hệ đại số tuyến tính

54 809 2
Tài liệu đã được kiểm tra trùng lặp

Đ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 54
Dung lượng 489,13 KB

Nội dung

Một số phương pháp song song cho hệ đại số tuyến tính

Trang 1

MỤC LỤC

LỜI NÓI ĐẦU2

Chương 1: TỔNG QUAN VỀ XỬ LÍ SONG SONG4

1.1 Xử lý song song4

1.2 Phân loại kiến trúc máy tính4

1.3 Các thành phần chính của máy tính song song7

1.4 Thiết kế và đánh giá thuật toán song song

1.5 Kiến trúc cụm máy tính

Chương 2: GIAO DIỆN TRUYỀN THÔNG ĐIỆP MPI

2.1 Giới thiệu về MPI

3.2 Một số phương pháp lặp tuần tự giải hệ phương trình đại số tuyến tính

3.3 Một số thuật toán lặp song song giải hệ phương trình đại số tuyến tính

3.4 Chương trình thử nghiệm

KẾT LUẬN

TÀI LIỆU THAM KHẢO

PHỤ LỤC

Trang 2

LỜI NÓI ĐẦU

Sự bùng nổ của công nghệ thông tin đó và đang làm thay đổi mọi mặt của đời

sống xó hội Cụng nghệ thông tin đó được ứng dụng rộng rói và những chiếc mỏy

trở thành cụng cụ đắc lực cho con người trong rất nhiều lĩnh vực của khoa học và

cuộc sống, đặc biệt là trong tính toán và xử lí dữ liệu Trước những đũi hỏi cần cú

lời giải nhanh cho những bài toỏn với kích thước dữ liệu lớn như: dự báo thời tiết,

xử lý ảnh ba chiều, trớ tuệ nhõn tạo, mụ phỏng cỏc hệ thống lớn…xử lý song song

là một hướng phát triển tất yếu và đang cần được nghiên cứu và ứng dụng rộng rói

vào thực tế Sự ra đời của các máy tính song song, đặc biệt là những cụm máy tính

phục vụ cho việc xử lý song song với giá rẻ đó hỗ trợ rất lớn cho việc xõy dựng

những chương trỡnh song song giải quyết cỏc bài toỏn khoa học và thực tiễn Khúa

luận tốt nghiệp này chủ yếu nằm trong hướng nghiên cứu ứng dụng thuật toán song

song giải hệ phương trỡnh đại số tuyến tính bằng phương pháp lặp

Khóa luận được trỡnh bày thành ba chương:

Chương 1 Tổng quan về xử lí song song : Trỡnh bày khỏi niệm xử lớ song song,

cỏc kiến trỳc mỏy tớnh, cỏc thành phần chớnh của máy tính song song, các nguyên

lí thiết kế và đánh giá thuật toán song song, và kiến trúc cụm máy tính của trung

tâm tính toán hiệu năng cao

Chương 2 Giao diện truyền thông điệp MPI : Giới thiệu về giao diện truyền

thông điệp MPI, mô hỡnh lập trỡnh MPI, các nhóm hàm cơ bản của thư viện mpi.h

khi lập trỡnh MPI với ngụn ngữ C

Chương 3 Một số phương pháp lặp giải hệ đại số tuyến tính : Giới thiệu một số

phương pháp lặp tuần tự và song song giải hệ đại số tuyến tính như Jacobi, JOR,

SOR, chương trỡnh thử nghiệm, đánh giá kết quả và định hướng phát triển

Trang 3

Khóa luận này chắc chắn không tránh khỏi thiếu sót do hạn chế về thời gian

cũng như kiến thức Em rất mong nhận được sự đóng góp ý kiến của thầy cụ và cỏc

bạn để có thể phát triển đề tài đạt được kết quả tốt hơn

Em xin gửi lời cảm ơn chân thành tới thầy giáo về sự tận tâm hướng dẫn, giúp

đỡ em hoàn thành khóa luận này Em xin cảm ơn tất cả các các thầy cô khoa Toán

Cơ Tin học, các thầy cô trường Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà

Nội về sự dạy dỗ ân cần trong thời gian em học tại trường Em xin cảm ơn các thầy

cô, các anh chị của Trung Tâm Tính Toán Hiệu Năng Cao đó tạo điều kiện và giúp

đỡ em rất nhiều trong việc hoàn thành khóa luận Xin cảm ơn gia đỡnh, người thân

và bạn bè đó luụn ủng hộ và là nguồn cổ vũ lớn lao cho tôi

Trang 4

Chương 1: TỔNG QUAN VỀ XỬ LÍ SONG SONG

1.1 Xử lớ song song

Xuất phỏt từ yờu cầu giải quyết nhanh những bài toỏn bài toán có khối lượng

dữ liệu lớn như xử lí ngôn ngữ tự nhiên, xử lí tiếng nói, xử lí ảnh ba chiều, dự báo

thời tiết, trí tuệ nhân tạo,…trong khi những máy tính xử lí tuần tự kiểu von

Neumann hiện nay không đáp ứng được yêu cầu đó Chính vỡ vậy vấn đề đặt ra là

phải khai thác được khả năng xử lí song song của các hệ thống máy tính hiện đại

Xử lí song song là cách xử lí thông tin bằng việc sử dụng nhiều hơn một bộ xử

lí để thực hiện nhiều hơn một thao tác trên dữ liệu tại một thời điểm.

Khỏc với xử lớ tuần tự, trong tính toán song song một số bộ xử lí kết hợp với

nhau để giải quyết cùng một vấn đề nên giảm được thời gian xử lí vỡ mỗi thời điểm

có thể có nhiều phép toán được thực hiện đồng thời Với tốc độ xử lí nhanh hơn, xử

lí song song giải quyết được nhiều bài toỏn lớn và phức tạp

1.2 Phõn loại kiến trỳc mỏy tớnh

Cách phân loại kiến trúc máy tính của Flynn là một trong những các phân loại

được chấp nhận rộng rói nhất Cỏch phõn loại này được Micheal J Flynn đề xuất

năm 1966 gồm bốn loại kiến trúc máy tính như sau:

1.2.1 Kiến trúc SISD (đơn dũng lệnh, đơn luồng dữ liệu)

Máy tính loại SISD chỉ có một CPU, và ở mỗi thời điểm chỉ thực hiện một lệnh

và chỉ đọc, ghi một mục dữ liệu Mô hỡnh SISD chớnh là mụ hỡnh mỏy tớnh kiểu

von Neumann

Trang 5

Hỡnh 1.1 Mụ hỡnh của kiến trỳc SISD

1.2.2 Kiến trúc SIMD (đơn dũng lệnh, đa luồng dữ liệu)

Những máy tính SIMD có một đơn vị điều khiển để điều khiển nhiều đơn vị xử

lí thực hiện một dũng cỏc cõu lệnh Đơn vị điều khiển phát sinh tín hiệu điều khiển

tới tất cả cỏc bộ xử lớ thực hiờn cựng một phộp toỏn trờn cỏc mục dữ liệu khỏc

nhau

Hỡnh 1.2 Mụ hỡnh của kiến trỳc SIMD

1.2.3 Kiến trúc MISD (đa dũng lệnh, đơn luồng dữ liệu)

Mỏy tớnh loại MISD cú thể thực hiện nhiều chương trỡnh trờn cựng một mục

dữ liệu Kiến trỳc kiểu này chia thành hai nhúm như sau:

• Lớp các máy tính yêu cầu các đơn vị xử lí khác nhau có thể nhận những

lệnh khác nhau và thực hiện trên cùng một mục dữ liệu

Tớn hiệu điều khiển

Trang 6

• Lớp các máy tính có các luồng dữ liệu được chuyển tuần tự qua một dóy

cỏc bộ xử lớ liờn tiếp

Hỡnh 1.3 Mụ hỡnh của kiến trỳc MISD

1.2.4 Kiến trúc MIMD (đa luồng lệnh, đa luồng dữ liệu)

Mỏy tớnh MIMD cũn được gọi là đa bộ xử lí, mỗi bộ xử lí có thể thực thi

những luồng lệnh riêng trên các luồng dữ liệu riêng của chúng Đa số các hệ thống

MIMD có bộ nhớ riêng và có thể truy cập vào bộ nhớ chung nên giảm được thời

gian trao đổi giữa các bộ xử lí

Đơn vị điều khiển1

Đơn vị điều khiển 2

Đơn vị điều khiển n

Luồng dữ liệu 1

Luồng dữ liệu 2

Đơn vị điều khiển1

Đơn vị điều khiển 2

Đơn vị điều khiển n

Luồng

dữ liệu

Luồng dữ liệu 2

Trang 7

Hỡnh 1.4 Mụ hỡnh của kiến trỳc MIMD

1.3 Cỏc thành phần chớnh của mỏy tớnh song song

1.3.1 Bộ nhớ

Bộ nhớ là một trong những thành phần quan trọng nhất của kiến trúc máy tính

và thường được phân cấp như sau:

Hỡnh 1.5 Phõn cấp hệ thống bộ nhớ

Bộ nhớ mức 1 là bộ nhớ mức cao nhất thường gắn chặt với bộ xử lí thành bộ

nhớ cục bộ Khi mức bộ nhớ tăng dần thỡ dung lượng tăng dần cũn giỏ cả và tốc độ

giảm dần

Mụ hỡnh bộ nhớ đối với máy tính truy cập ngẫu nhiên song song được biết

dưới tên gọi PRAM (Parallel Random Access Machine) bao gồm bộ nhớ chung

RAM với M ô nhớ đủ lớn để chia sẻ cho P bộ xử lí Bộ nhớ chung dùng để lưu trữ

dữ liệu và là nơi giao tiếp giữa các bộ xử lí, nó cho phép các bộ xử lí truy cập dữ

Bộ xử lớ

Bộ nhớ mức 1

Bộ nhớ mức 2

Bộ nhớ mức n

Trang 8

• Đọc độc quyền ER (Exclusive Read): mỗi bộ xử lí đọc được chính xác

một ô nhớ và mỗi ô nhớ chỉ được đọc bởi một bộ xử lí

• Ghi đồng thời CW (Concurrent Write): nhiều bộ xử lí có thể ghi vào

cùng một ô nhớ ở cùng một thời điểm

• Ghi độc quyền EW (Exclusive Write): mỗi bộ xử lí chỉ ghi được vào một

ô nhớ và mỗi ô nhớ chỉ được ghi bởi một bộ xử lí

Dễ nhận thấy rằng ER và EW là những trường hợp riêng của CR và CW Trong

đó CW có những đặc tính sau:

• Ghi đồng thời có ưu tiên (Priority CW): mỗi bộ xử lí được gắn với một

mức ưu tiên, bộ nhớ có mức ưu tiên cao nhất sẽ được quyền ghi vào một

ô nhớ cho trước Các mức ưu tiên có thể tĩnh hoặc động theo qui tắc xác

định

• Ghi đồng thời chung (Common CW): tất cả các bộ xử lí được phép ghi

vào cụng một ô nhớ nếu chúng ghi cùng một giá trị Khi đó một bộ xử lí

sẽ được chọn để thực hiện việc ghi dữ liệu đó

• Ghi đồng thời tự do (Arbitracy CW): một số bộ xử lí muốn ghi dữ liệu

vào một ô nhớ nhưng chỉ một bộ xử lí được phép Trong trường hợp này

ta phải chỉ ra cách xác định bộ xử lí được chọn

• Ghi đồng thời ngẫu nhiên (Random CW): bộ xử lí được chọn để ghi dữ

liệu là ngẫu nhiên

Trang 9

• Ghi đồng thời kết hợp (Combining CW): tất cả các giá trị mà các bộ xử lí

muốn ghi đồng thời lên một ô nhớ sẽ được kết hợp lại thành một giá trị

và giá trị này sẽ được ghi vào ô nhớ đó

Một số mụ hỡnh bộ nhớ cho mỏy truy cập ngẫu nhiờn song song PRAM:

1 Mụ hỡnh truy cập bộ nhớ đồng bộ UMA (Uniform Memory Access) của

bộ nhớ chia sẻ: tất cả các bộ xử lí làm việc nhờ cơ chế chuyển mạch tập

trung để truy cập tới bộ nhớ chia sẻ Thời gian truy cập vào bộ nhớ là

như nhau với tất cả các bộ xử lí

2 Mụ hỡnh truy cập bộ nhớ khụng đồng bộ NUMA của bộ nhớ chia sẻ:

trong mụ hỡnh này, bộ nhớ được phân tán và được chia thành một số

môđun nhớ độc lập Bộ nhớ chia sẻ được phân tán cho tất cả các bộ xử lí

được gọi là các môđun nhớ địa phương và các môđun nhớ này hợp lại

thành bộ nhớ chung (toàn cục) cho cỏc bộ xử lớ

3 Kiến trúc bộ nhớ chỉ lưu trữ COMA ( Cache-Only Memory

Architexture ): bộ nhớ chính được phân tán và chuyển thành các vùng

lưu trữ (cache), tất cả các vùng này tạo ra không gian địa chỉ toàn cục

4 Bộ nhớ đa máy tính: trong bộ nhớ đa máy tính mỗi nút là một máy tính

có bộ nhớ địa phương không chia sẻ với những bộ xử lí khác, các bộ xử

lí liên lạc với nhau thông qua giao thức truyền thông điệp

1.3.2 Mạng liờn kết cỏc thành phần của mỏy tớnh song song

Trong hầu hết cỏc kiến trỳc song song, vấn đề quan trọng nhất trong thiết kế là

xác định sự liên kết giữa các bộ xử lí với nhau Nói chung có hai loại cấu hỡnh cho

mạng liờn kết: liờn kết tĩnh và liờn kết động

- Mạng liờn kết tĩnh là mạng cỏc thành phần của một hệ thống mỏy tớnh, bộ

xử lí và bộ nhớ được liên kết một cách cố định

Trang 10

- Mạng liên kết động là mạng các thành phần của hệ thống máy tính trong đó

các liên kết giữa các bộ xử lí và bộ nhớ là có thể thay đổi được cấu hỡnh

Sau đây là một số mô hỡnh mạng liờn kết tĩnh giữa cỏc bộ xử lớ của mỏy tớnh

song song

1 Mạng liờn kết tuyến tớnh

Trong mạng liên kết tuyến tính các bộ xử lí được liên kết với nhau và được sắp

xếp theo thứ tự tăng dần Trừ hai bộ xử lí đầu tiên và cuối cùng, các bộ xử lí cũn lại

cú hai lỏng giềng là bộ xử lớ trước và sau nó Dữ liệu phải truyền qua một số bộ xử

lí nên sự truyền thông dữ liệu giữa các bộ xử lí bị chậm lại nhất là giữa bộ xử lí đầu

và cuối

Hỡnh 1.6 Mạng liờn kết tuyến tớnh của n bộ xử lớ

2 Mạng liờn kết vũng

Mạng liờn kết vũng cú thể được tổ chức như mạng tuyến tính bằng cách nối hai

bộ xử lí đầu và cuối Sự trao đổi giữa các bộ xử lí có thể theo một chiều hoặc hai

chiều tuy nhiên việc truyền thông giữa các bộ xử lí đặc biệt là các bộ xử lí ở xa

Trang 11

Giả sử cú N bộ xử lớ P0, P1,…, Pn với N là lũy thừa của 2 Trong mạng liên kết

xáo trộn hoàn hảo, đường liên kết một chiều từ bộ xử lí Pi đến bộ xử lí Pj được xác

=

N 1 i 2

i 2

j

1 N i 2 N

1 2 N i 0

các liên kết xáo trôn được biểu diễn bằng mũi tên và các liên kết trao đổi được biểu

diễn bằng đoạn thẳng Dễ thấy rằng ngoài bộ xử lí P0 và PN-1 tự liên kết với chính

nó, bộ xử lí i được liên kết với bộ xử lí 2i mod (N-1)

4 Mạng liên kết lưới hai chiều

Trong mạng liên kết lưới hai chiều, các bộ xử lí được sắp xếp thành một ma

trận hai chiều, mỗi bộ xử lí được liên kết với bốn láng giềng: trên, dưới, trái, phải

Không có qui luật chung cho những bộ xử lí ở biên Có hai biến thể của mạng lưới

hai chiều: lưới hai chiều khụng cú kết nối vũng và lưới hai chiều có kết nối vũng

với với

Trang 12

(a) Lưới không có kết nối vũng (b) Lưới có kết nối vũng

Hỡnh1.9 Mạng liờn kết lưới hai chiều

5 Mạng liờn kết siờu khối

Mạng liờn kết siờu khối d chiều gồm N= 2d bộ xử lí , mỗi bộ xử lí liên kết với d

bộ xử lí khác trong mạng Thông thường mạng liên kết siêu khối d+1 chiều được

xây dựng bằng cách kết nối hai mạng liên kết siêu khối d chiều Một cách hỡnh

thức, mạng liờn kết N bộ xử lí được gọi là mạng siêu khối nhị phân, các bộ xử lí

được gắn nhón nhị phõn cú giỏ trị từ 0 đến N-1, và hai bộ xử lí được gọi là láng

giềng của nhau nếu các nhón của nú chỉ khỏc nhau một bit ( tức là khỏc nhau một

lũy thừa của 2)

Hỡnh 1.10 Mạng liờn kết siờu khối 3 chiều

6 Mạng liờn kết hỡnh sao

Trong mạng liờn kết hỡnh sao, mỗi bộ xử lớ sẽ tương ứng với một hoán vị của

n kí hiệu với n là một số tự nhiên Mạng liên kết hỡnh sao cú n! bộ xử lớ, nhón mỗi

bộ xử lớ là một hoỏn vị của n kớ hiệu Bộ xử lớ Pi được liên kết với bộ xử lí Pj nếu

j nhận được từ i bằng cách thay kí hiệu thứ k, với 2≤k≤n

Trang 13

Hỡnh 1.11: Mạng liờn kết hỡnh sao với 24 bộ xử lớ

1.4 Thiết kế và đánh giá thuật toán song song

1.4.1 Nguyờn lớ thiết kế thuật toỏn 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 cỏc tỏc 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 toán Có thể có nhiều thuật toỏ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 Để thiết kế một thuật toán song song

tốt ta có thể sử dụng năm nguyên lí chính trong thiết kế thuật toỏn song song:

Trang 14

- Nguyên lí lập lịch: Giảm tối thiểu các bộ xử lí trong thuật toán mà không

làm tăng thời gian tính toán Nói chung, khi số bộ xử lí giảm thời gian thực

hiện của chương trỡnh cú thể tăng và có thể tăng lên một hằng số nào đó

nhưng xét theo độ phức tạp của thuật toán thỡ vẫn khụng thay đổi

- Nguyên lí đường ống: Nguyên lí này được áp dụng trong trường hợp ta

muốn thực hiện một dóy cỏc thao tỏc theo trỡnh tự {P1, P2,…, Pn} trong đó

một số bước của Pi+1 có thể thực hiên trước khi Pi kết thỳc

- Nguyên lí chia để trị: Chia bài toán thành các phần nhỏ tương đối độc lập và

giải quyết chúng đồng thời

- Nguyên lí đồ thị phụ thuộc dữ liệu: Chúng ta xây dựng một đồ thị có hướng

trong đó các nút biểu diễn các khối câu lệnh độc lập cũn cỏc cạnh biểu diễn

tỡnh huống khối này phụ thuộc kết quả từ việc thực hiện của khối kia Từ đó

ta tỡm cỏch loại bỏ cỏc phụ thuộc để xây dựng thuật toán song song

- Nguyờn lớ cạnh tranh: Nếu hai tiến trỡnh cựng truy cập vào một mục dữ

liệu chia sẻ thỡ chỳng cú thể cản trở lẫn nhau

1.4.2 Các giai đoạn thiết kế thuật toán song song

Có ba cách tiếp cận trong thiết kế thuật toán song song cho một bài toán, đó là:

- Song song hóa các thuật toán tuần tự, biến đổi những cấu trúc tuần tự để tận

dụng khả năng song song tự nhiên của tất cả cỏc thành phần trong hệ thống

xử lớ

- Thiết kế thuật toỏn song song hoàn toàn mới

- Thiết kế thuật toán song song từ những thuật toán song song đó được xây

dựng

Trong thiết kế dù sử dụng hướng tiếp cận nào thỡ cũng thường bao gồm các

giai đoạn sau:

Trang 15

1 Phõn ró (Partioning): Chia những tớnh toỏn và dữ liệu thành những tỏc vụ

nhỏ Giai đoạn này chủ yếu là để tỡm kiếm khả năng thực hiện song song và

thường độc lập với kiến trúc máy tính

2 Truyền thông (Communication): Giai đoạn này nhằm thiết lập sự phối hợp

thực hiện giữa các tác vụ và xác định thuật toán và cấu trúc truyền thông

thích hợp

3 Tích hợp (Agglomeration): Mục đích của giai đoạn này là đánh giá những

yêu cầu hiệu năng và chi phí thực hiện Nếu cần thiết, những tác vụ có thể

kết hợp lại thành các tác vụ lớn hơn để tăng hiệu năng và giảm chi phí thực

hiện

4 Ánh xạ (Mapping): Mỗi tác vụ sẽ được giao cho một bộ xử lí nhằm tối đa

hóa sự tận dụng khả năng của các bộ xử lí và giảm thiểu chi phí truyền

thông Ánh xạ có thể được xác định tĩnh (statically) hoặc trong thời gian

chạy (runtime) bằng thuật toỏn cõn bằng tải (load-balancing)

1.4.3 Đánh giá thuật toán song song

1 Thời gian thực hiện

Thời gian thực hiện của một thuật toỏn bao gồm: thời gian tớnh toỏn, thời gian

truyền thụng và thời gian rỗi

Thời gian tớnh toỏn

Thời gian tớnh toỏn của một thuật toỏn (Tcomp) là thời gian sử dụng để

tính toán (bao gồm các phép toán logic và số học) Nếu chúng ta có một

chương trỡnh tuần tự mà thực hiện tớnh toỏn giống như thuật toán song song

chúng ta có thể xác định Tcomp bằng việc tính thời gian chương trỡnh đó Nếu

không chúng ta có thể phải thực thi những nhân then chốt Thời gian tính

toán sẽ thường phụ thuộc vào kích thước bài toán dù nó được biểu diễn bởi

một tham số N hay bởi một tập các tham số N1, N2, …, Nm.Thời gian tớnh

Trang 16

toỏn cũn phụ thuộc vào số cỏc tỏc vụ hoặc số bộ xử lớ Trong mạng mỏy

tớnh song song khụng đồng nhất ( như mạng các máy trạm), thời gian tính

toán có thể biến thiên theo bộ xử lí mà tại đó tính toán được thực hiện Thời

gian tính toán cũng phụ thuộc vào đặc điểm của những bộ xử lí và phương

thức nhớ của chúng

Thời gian truyền thụng

Thời gian truyền thụng của một thuật toỏn ( Tcomm) là thời gian mà tất cả

các tác vụ của nó sử dụng để gửi và nhận thông điệp.Có hai loại truyền

thông: truyền thông giữa các bộ xử lí (interprocessor) và truyền thông trong

bộ xử lí (intraprocessor) Trong truyền thông giữa các bộ xử lí, hai tác vụ

thực hiện truyền thông với nhau thông được định vị trên những bộ xử lí khác

nhau Điều này luôn xảy ra khi thuật toán tạo một tỏc vụ trờn một bộ xử lớ

Truyền thụng trong bộ xử lớ, thỡ hai tỏc vụ thực hiện truyền thụng định vị

trên một bộ xử lí Để đơn giản ta giả sử chi phí truyền thông giữa bộ xử lí và

truyền thông trong bộ xử lí là ngang nhau Điều giả sử này không phải là

không có cơ sở trong nhiều đa máy tính, trừ khi liên lạc trong bộ xử lí được

tối ưu hóa cao độ Đó là bởi vỡ chi phớ của những bản sao và chuyển ngữ

cảnh từ bộ nhớ sang bộ nhớ thực hiện trong truyền thụng trong bộ xử lớ

thường có thể so sánh được với chi phí của truyền thông giữa các bộ xử lí

Trong những môi trường như các máy trạm kết nối Ethernet, truyền thông

trong bộ xử lí nhanh hơn rất nhiều Trong kiến trúc đa máy tính lí tưởng, chi

phí gửi thông điệp giữa hai tác vụ định vị trên những bộ xử lí khác nhau có

thể biểu diễn bằng hai tham số: thời gian khởi động thông điệp ts, là thời gian

cần để khởi tạo sự truyền thông, và thời gian truyền một từ ( thường là bốn

byte) tw , được xác định bằng băng thông vật lí của kênh truyền thông liên

kết bộ xử lí nguồn và đích Ví dụ, thời gian gửi thông điệp L từ là:

Tmsg= ts + TwL

Trang 17

Thời gian rỗi

Thời gian tính toán và thời gian truyền thông đều được chỉ ra một cách

rừ ràng trong thuật toỏn song song vỡ thế khụng khú khăn để tính tổng của

chúng trong thời gian thực hiện Thời gian rỗi (Tidle) có thể khó xác định hơn,

tuy nhiên chúng thường phụ thuộc vào thứ tự các thao tác được thực hiện

Một bộ xử lớ cú thể rỗi vỡ khụng cú tớnh toỏn hoặc thiếu dữ liệu Trong

trường hợp đầu tiên, thời gian rỗi có thể tránh bằng việc sử dụng những kĩ

thuật tải cân bằng Trong trường hợp thứ hai bộ xử lí rỗi trong khi tính toán

và truyền thông đợi dữ liệu ở xa được thực hiện Thời gian rỗi này đôi khi có

thể tránh bằng việc xây dựng một chương trỡnh mà những bộ xử lớ thực hiện

những tính toán hoăc truyền thông khác trong khi đợi dữ liệu ở xa

2 Hiệu suất và hệ số gia tốc

Thời gian thực hiện không phải lúc nào cũng là thước đo tốt nhất để đánh giá

hiệu năng thuật toán Vỡ thời gian thực hiện cú khuynh hướng biến thiên theo kích

thước bài toán, thời gian thực hiện phải được chuẩn hóa khi so sánh hiệu năng thuật

toán với những kích thước khác nhau của bài toán Hiệu suất - phần thời gian mà

bộ xử lí sử dụng để làm công việc có ích- cung cấp một thước đo tốt cho chất lượng

của một thuật toán song song Nó đặc trưng hóa sự hiệu quả của một thuật toán sử

dụng tài nguyên tính toán của một máy tính song song một cách độc lập với kích

thước bài toán Chúng ta định nghĩa hiệu suất tương đối như sau:

E=

P

1

PT T

trong đó T1 là thời gian thực hiện trờn một bộ xử lớ và TP là thời gian trên P bộ xử

lí Một đại lượng liên quan nữa là hệ số gia tốc tương đối:

S=PE

là hệ số chỉ ra thời gian thực hiện giảm đi khi sử dụng P bộ xử lí

Trang 18

Những đại lượng trên được gọi là hệ số tăng tốc và hiệu suất tương đối vỡ

chỳng được định nghĩa với khía cạnh thuật toán song song thực hiện trên một bộ xử

lí đơn Giả sử rằng chúng ta có một thuật toán song song mà mất 10000 giây trên

một bộ xử lí và 20 giây trên 1000 bộ xử lí Một thuật toán khác cũng mất 1000 giây

trên một bộ xử lí nhưng chỉ mất 5 giây trên 1000 bộ xử lí Rừ ràng thuật toỏn thứ

hai là tốt hơn với P trong khoảng 1 đến 1000 Nó có hệ số gia tốc chỉ 200 so với

500 của thuật toán đầu

Khi so sánh hai thuật toán, sẽ hữu ích hơn nếu có một tiêu chuẩn độc lập thuật

toán hơn là thời gian thực hiện Vỡ thế chỳng ta định nghĩa hệ số tăng tốc và hiệu

suất tuyệt đối sử dụng như là phép đo thời gian bộ xử lí duy nhất (T1) cho thuật

toán tốt nhất Trong nhiều trường hợp, thuật toán tốt nhất này sẽ là thuật toỏn (tuần

tự) tốt nhất

1.5 Kiến trỳc cụm mỏy tớnh

Trước đây, thuật ngữ “máy tính hiệu năng cao” (High- Performance Computing

- HPC) thường được dùng để chỉ những máy tính song song hoặc máy tính véc tơ

với giá trị lên tới hàng triệu đôla Nhưng với sự phát triển nhanh chóng của công

nghệ phần cứng đặc biệt là những tiến bộ trong việc cải tiến hiệu năng của bộ xử lí

và băng thông mạng đó làm thay đổi một cách toàn diện kiến trúc của các máy tính

hiệu năng cao Và khi các máy tính hiệu năng cao được tạo ra bằng cỏch kết nối

cỏc mỏy trạm (Workstation – WS) với nhau thỡ thuật ngữ “cụm mỏy tớnh”

(Computer Cluster) được sử dụng để mô tả dạng máy tính này

Cụm máy trạm (Workstation Cluster -WSC) là một nhóm các máy trạm được

kết nối với nhau thông qua một mạng tốc độ cao Các máy tính trong một WSC

truyền thông qua một trong hai giao thức truyền thông phổ biến đó là: truyền thông

dựa trên kết nối và truyền thông không kết nối Mô hỡnh kết nối dựa trờn giao thức

TCP (Tranmission Control Protocol) với độ tin cậy cho việc truyền thông điệp

được bảo đảm Mô hỡnh khụng kết nối dựa trờn giao thức UDP (User Datagram

Trang 19

Protocol), với giao thức này độ tin cậy cho việc truyền thông điệp được bảo đảm

Hiện nay có rất nhiều phần mềm hỗ trợ việc tính toán song song trên WSC tiêu

biểu như MPICH

WSC có rất nhiều ưu điểm đó là:

o Kĩ thuật tính toán trên các cụm máy tính có thể mở rộng từ một hệ thống

nhỏ đến các hệ thống rất lớn Điều này thể hiện tính mềm dẻo và linh

hoạt của hệ thống Hệ thống có thể chỉ gồm một máy tính hoặc nhiều

máy tính ghép nối mạng với nhau Những máy tính nối mạng Internet

cũng có thể ghép cụm được Hệ thống cũng có thể bao gồm những máy

tính chuyên dụng khác nhau

o Thiết bị phần cứng dùng để xây dựng một cụm máy tính như các máy

tính cá nhân và các máy trạm hiện nay được bán rộng rói trờn thị trường

với giá thành thấp Về nguyên tắc một cụm máy tính chỉ cần có một màn

hỡnh và một bàn phớm nờn giảm được chi phí ban đầu

o Các bộ xử lí mới có thể dễ dàng tích hợp vào hệ thống như là chúng đó

cú sẵn trong hệ thống Đây là ưu điểm của cụm máy tính so với những hệ

thống song song khác và nó nói lên tính an toàn cao của hệ thống

Kiến trúc bó IBM 1600 của trung tâm tính toán hiệu năng cao:

• 5 node tớnh toỏn pSeires 655, mỗi node gồm 8 CPU Power4+16 bit

RISC 1.7 GHz của IBM; cache 5.6 MB ECC L2, 128 MB ECC L3, băng

thông: 72.3 GBps; 32 GB RAM, băng thông bộ nhớ 51.2 GBps; 6x36

GB HDD Năng lực tính toán tổng cộng khoảng 240 GFlóp (mở rộng tối

đa 768 GFlops/16 node)

• 1 node quản lớ phần mềm CSM p630: Power4+64 bit 1.2 GHz; cache 1.5

MB ECC L2, 8 MB ECC L3, băng thông: 12.8 GBps; 1 GB RAM, băng

thông: 6.4 GBps; 6x36 GB HDD, DVD ROM

Trang 20

• 1 node điều khiển phần cứng HCM: Intel Xeon 3.06 GHz, 1GB RAM, 40

GB HDD, DVD RAM

• Các node được kết nối với nhau thông qua HPS (High Performance

Switch – Switch hiệu năng cao), băng thông 2 GBps và Gethernet

• Hệ thống lưu trữ chung: IBM DS4400 và EXP700 kết nối với cụm IBM

1600 thông qua cáp quang với băng thông 2 GBps

• Các node chạy HĐH AIX 5L phiên bản 5.2

Kiến trỳc bú IBM 1350 của trung tâm tính toán hiệu năng cao:

• 8 node tính toán, mỗi node gồm 2 chip Intel Xeon Dual Core 3.2 GHz, 2

GB RAM, 1x36 GB HDD, DVD ROM Tổng năng lực tính toán của 8

node là khoảng 51.2 Gflops

• 2 node phục vụ lưu trữ, mỗi node gồm 2 chip Intel Xeon Dual Core 3.2

GHz, 3 GB RAM, 4x72 GB HDD

• 1 node đóng vai trũ quản lớ bao gồm chip Intel Xeon Dual Core 3.2

GHz, 3 GB RAM, 2x36 GBHDD

• Năng lực lưu trữ: thiết bị lưu trữ dùng chung EXP400 với 10x73 GB

HDD SCSI 320 MBps 15KRpm, dùng hệ thống chia sẻ file: GPFS cho

Linux v2.3.0.5

• Các node chạy HĐH Redhat Enterprise Linux 3.0 và được kết nối với

nhau thông qua mạng Gethernet

Trang 21

Chương 2: GIAO DIỆN TRUYỀN THÔNG ĐIỆP MPI

2.1 Giới thiệu về MPI

Giao diện truyền thông điệp chuẩn MPI (Message Passing Interface) là một thư

viện truyền thông chuẩn Mục đích của MPI là thiết lập một chuẩn truyền thông

điệp linh hoạt và hiệu quả được sử dụng rộng rói cho việc viết cỏc chương trỡnh

Trang 22

truyền thụng điệp MPI không phải là chuẩn ISO hay IEEE nhưng trên thực tế nó

đó trở thành chuẩn công nghiệp cho việc viết các chương trỡnh truyền thụng điệp

trên nền HPC (Hight Performance Computing)

2.2 Mụ hỡnh lập trỡnh 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 Vỡ thế mụ hỡnh lập trỡnh MPI đôi khi được đề

cập như là đa chương trỡnh đa luồng dữ liệu (MPMD) để phân biệt với mô hỡnh

SPMD (mỗi bộ xử lý thực thi cựng một chương trỡnh)

Số tiến trỡnh trong một chương trỡnh MPI thường cố định Những tiến trỡnh

cú thể sử dụng thao tỏc truyền thông điểm tới điểm từ một tiến trỡnh cụ thể tới

được một tiến trỡnh khỏc, những thao tỏc này cú thể sử dụng để thực thi những

truyền thông cục bộ và không có cấu trúc Một nhóm các tiến trỡnh cú thể gọi cỏc

thao tỏc truyền thụng tập thể để thực hiện những thao tác toàn cục như tổng hợp và

quảng bá MPI hỗ trợ truyền thông không đồng bộ (dị bộ) Có lẽ tính năng quan

trọng nhất của MPI từ quan điểm của công nghệ phần mềm là nó hỗ trợ lập trỡnh

module Một cơ chế được gọi là bộ truyền thông (communicator) cho phộp lập

trỡnh viờn MPI định nghĩa module trong đó đóng gói các cấu trúc truyền thông bên

trong

Những thuật toỏn mà tạo ra chỉ một tỏc vụ trờn một bộ xử lý cú thể thực hiện

trực tiếp sử dụng những hàm truyền thụng tập thể hay điểm tới điểm Những thuật

toán mà tạo ra nhiều tác vụ theo một cách động hoặc phụ thuộc vào sự thực hiện

đồng thời của một vài tác vụ trên 1 bộ xử lý phải được biến đổi để có thể thực thi

MPI

Trang 23

2.3 Những hàm MPI cơ bản

Mặc dự MPI là một hệ thống phức tạp chỳng ta cú thể giải những bài toán

thuộc một phạm vi rộng mà chỉ sử dụng 6 hàm cơ bản Những hàm này khởi tạo và

kết thúc một chương trỡnh MPI, xỏc định nhận dạng các tiến trỡnh, gửi và nhận

thụng điệp

MPI_Init khởi tạo môi trường MPI

MPI_Finalize đóng môi trường MPI

MPI_Comm_size xác định số các tiến trỡnh

MPI_Comm_rank xác định số hạng tiến trỡnh

MPI-Send gửi một thông điệp

MPI-Recv nhận một thông điệp

Những hàm này được mô tả chi tiết sau đây,trong đó nhón IN, OUT, và INOUT

đứng trước tham số chỉ ra rằng:

IN: hàm sử dụng nhưng không làm thay đổi tham số

OUT: hàm không sử dụng nhưng có thể thay đổi tham số

INOUT: hàm sử dụng và cập nhật tham số

MPI_Init (int*arge, char ***argv);

Đây là hàm khởi tạo môi trường thực thi MPI Tham số argc, argv được sử

dụng trong C như là những tham số của chương trỡnh chớnh (hàm main)

Hàm này phải được gọi trong mọi chương trỡnh MPI và trước bất kỳ hàm

MPI nào khác, và chỉ được gọi một lần trong một chương trỡnh MPI chương

Với những chương trỡnh C, MPI_Init cú thể được sử dụng để truyền những

tham số dũng lệnh tới tất cả cỏc bộ xử lý

MPI_Finalize( );

Trang 24

Dùng để đóng môi trường thực thi MPI Hàm này được gọi cuối cùng trong

mọi chương trỡnh MPI, khụng một hàm MPI nào cú thể gọi sau nú

MPI_Comm_size (comm, & size);

Hàm lấy số tiến trỡnh

IN comm bộ truyền thụng

OUT size số cỏc tiến trỡnh trong nhúm comm

MPI_Comm_rank (comm, & rank);

Hàm lấy hạng của tiến trỡnh

IN comm bộ truyền thụng

OUT rank số của tiến trỡnh trong nhúm comm

Một bộ truyền thụng gồm một tập cỏc tiến trỡnh trong đó các tiến trỡnh cú

thể thực hiện truyền thụng với nhau Bộ truyền thụng cung cấp một cơ chế

nhận dạng tập các tiến trỡnh cho việc phỏt triển những chương trỡnh module

và để đảm bảo các thông điệp dành cho những mục đích khác nhau không bị

nhầm lẫn Nó cung cấp giá trị mặc định MPI_COMM_WORLD, xác định tất

cả các tiến trỡnh trong chương trỡnh Mỗi tiến trỡnh được gán một số hạng là

số nguyên liên tiếp bắt đầu từ 0 Số hạng này cũn được gọi là id của tiến

trỡnh

Bốn hàm trờn thuộc nhúm những hàm quản lý mụi trường Một ví dụ nhỏ sử

dụng các hàm này viết bằng ngôn ngữ C

#include <mpi.h>

#include <stdio.h>

Trang 25

int main(int argc, char **argv)

{

int rank, size;

MPI_Init( &argc, &argv );

Đây là hàm gửi thông điệp

IN buff địa chỉ đầu tiên của bộ nhớ đệm chứa dữ liệu để

gửi

IN count số phần tử dữ liệu trong bộ đệm

Trang 26

IN datatype kiểu của dữ liệu trong bộ đệm

IN dest số hạng của tiến trỡnh nhận

IN tag nhón của thụng điệp gửi

IN comm bộ truyền thụng

MPI_Recv (void *buff, int count, MPI_Datatype datatype, int sourse, int

tag, MPI_Comm comm, MPI_Status status)

OUT buff địa chỉ đầu tiên của bộ nhớ đệm nhận dữ liệu

IN count kích thước của bộ nhớ đệm nhận tính bằng số phần tử dữ

liệu

IN datatype kiểu dữ liệu của các phần tử trong bộ nhớ đệm

nhận

IN source số hạng của tiến trỡnh nguồn (gửi)

IN tag nhón của thụng điệp

OUT status trạng thỏi

Hai hàm này thuộc nhóm hàm truyền thông điểm tới điểm Các hàm này chỉ

truyền thông điệp giữa hai và chỉ hai tiến trỡnh MPI Một tiến trỡnh thực hiện thao

tỏc gửi và tiến trỡnh cũn lại thực hiện thao tỏc nhận tương ứng

Với ngụn ngữ C, chỳng ta cú thể lập trỡnh MPI bằng cỏch sử dụng thư viện

mpi.h Những tên hàm giống với MPI chuẩn nhưng chỉ MPI được viết hoa và chữ

cái đầu tiên của tên hàm được viết hoa Mó trả về cho việc khởi tạo thành cụng là

MPI-SUCCESS Một tập mó lỗi cũng được định nghĩa Những hằng số đều được

viết hoa và được định nghĩa trong thư viện mpi.h Những kiểu dữ liệu MPI được

định nghĩa cho mỗi kiểu dữ liệu C: MPI_CHAR, MPI_LONG,

MPI_UNSIGNED_CHAR, MII_UNSIGNED, MPI_UNSIGNED_LONG,

MPI_FLOAT, MPI_DOUBLE, MPI_LONG_DOUBLE…

Trang 27

Những tham số của hàm số cú nhón IN được truyền theo giá trị, trong khi

những tham số nhón OUT, INOUT truyền theo tham chiếu (như con trỏ) Biến

status thuộc kiểu MPI_Status có trường status.MPI_SOURCE và status.MPI_TAG

gồm các thông tin về souce và tag như trong ví dụ sau (số tiến trỡnh cố định bằng

int size, rank, dest, source, count, tag=1;

char send=’x’, recv;

MPI_Send(&send, 1, MPI_CHAR, dest, tag, MPI_COMM_WORLD);

MPI_Recv(&recv, 1, MPI_CHAR, source, tag, MPI_COMM_WORLD,

&status);

}

Ngày đăng: 27/10/2012, 10:11

HÌNH ẢNH LIÊN QUAN

Hỡnh 1.2. Mụ hỡnh của kiến trỳc SIMD - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.2. Mụ hỡnh của kiến trỳc SIMD (Trang 5)
Hỡnh 1.1. Mụ hỡnh của kiến trỳc SISD - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.1. Mụ hỡnh của kiến trỳc SISD (Trang 5)
Hỡnh 1.3. Mụ hỡnh của kiến trỳc MISD - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.3. Mụ hỡnh của kiến trỳc MISD (Trang 6)
Hỡnh 1.4. Mụ hỡnh của kiến trỳc MIMD - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.4. Mụ hỡnh của kiến trỳc MIMD (Trang 7)
Hỡnh 1.6. Mạng liờn kết tuyến tớnh của n bộ xử lớ - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.6. Mạng liờn kết tuyến tớnh của n bộ xử lớ (Trang 10)
Hỡnh 1.8. Mạng liờn kết xỏo trộn hoàn chỉnh với N=8 - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.8. Mạng liờn kết xỏo trộn hoàn chỉnh với N=8 (Trang 11)
Hỡnh 1.8 mụ tả một mạng xỏo trộn một chiều hoàn chỉnh với N=8, trong  đó  các liên kết xáo trôn được biểu diễn bằng mũi tên và các liên kết trao đổi được biểu  diễn bằng đoạn thẳng - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.8 mụ tả một mạng xỏo trộn một chiều hoàn chỉnh với N=8, trong đó các liên kết xáo trôn được biểu diễn bằng mũi tên và các liên kết trao đổi được biểu diễn bằng đoạn thẳng (Trang 11)
Hỡnh 1.10. Mạng liờn kết siờu khối 3 chiều - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.10. Mạng liờn kết siờu khối 3 chiều (Trang 12)
Hỡnh 1.11: Mạng liờn kết hỡnh sao với 24 bộ xử lớ - Một số phương pháp song song cho hệ đại số tuyến tính
nh 1.11: Mạng liờn kết hỡnh sao với 24 bộ xử lớ (Trang 13)
Hỡnh 2.2. Minh hoạ cho hàm MPI_Reduce và MPI_Allreduce. - Một số phương pháp song song cho hệ đại số tuyến tính
nh 2.2. Minh hoạ cho hàm MPI_Reduce và MPI_Allreduce (Trang 35)
Hỡnh 3.1: Thời gian thực hiện của thuật toỏn Jacobi song song   với bậc của ma trận A là 10 4 - Một số phương pháp song song cho hệ đại số tuyến tính
nh 3.1: Thời gian thực hiện của thuật toỏn Jacobi song song với bậc của ma trận A là 10 4 (Trang 43)
Hỡnh 3.2: Thời gian thực hiện của thuật toỏn Jacobi song song   với cỡ của ma trận A là 4.10 4 - Một số phương pháp song song cho hệ đại số tuyến tính
nh 3.2: Thời gian thực hiện của thuật toỏn Jacobi song song với cỡ của ma trận A là 4.10 4 (Trang 44)
Hỡnh 3.2: Hệ số tăng tốc của thuật toán Jacobi song song   với bậc của ma trận A là 4.10 4 - Một số phương pháp song song cho hệ đại số tuyến tính
nh 3.2: Hệ số tăng tốc của thuật toán Jacobi song song với bậc của ma trận A là 4.10 4 (Trang 44)
BẢNG CÁC CHỮ VIẾT TẮT - Một số phương pháp song song cho hệ đại số tuyến tính
BẢNG CÁC CHỮ VIẾT TẮT (Trang 54)
BẢNG CÁC CHỮ VIẾT TẮT - Một số phương pháp song song cho hệ đại số tuyến tính
BẢNG CÁC CHỮ VIẾT TẮT (Trang 54)

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

w