1. Trang chủ
  2. » Công Nghệ Thông Tin

TỔNG QUAN VỀ TÍNH TOÁN SONG SONG TRONG KHOA HỌC MÁY TÍNH

14 887 5
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

Tiêu đề Tổng Quan Về Tính Toán Song Song
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Khoa Học Máy Tính
Thể loại Bài Tiểu Luận
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 14
Dung lượng 191,5 KB

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

Nội dung

Tính toán song song hay xử lý song song: là quá trình xử lý thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết một bài toán.Siêu máy tính: là những máy tính đa năng thông thường có tốc độ tính toán vô cùng lớn. Chúng chia làm hai loại:Máy tính song song dựa trên bộ vi xử lý : được thiết kế với rất nhiều bộ xử lý có tốc độ vừa phải. Siêu máy tính truyền thống (supercomputer) : ít bộ xử lý hơn nhưng tốc độ của mỗi bộ xử lý đó lại cực cao.Song song về dữ liệu (data parallelism): Là cơ chế sử dụng nhiều đơn vị xử lý thực hiện cùng một thao tác trên nhiều đơn vị dữ liệu .

Trang 1

TỔNG QUAN VỀ TÍNH TOÁN SONG SONG

I Tổng quan thuật toán song song

1 Khái niệm thuật toán song song

Tính toán song song hay xử lý song song: là quá trình xử lý thông tin trong đó nhấn mạnh việc nhiều đơn vị dữ liệu được xử lý đồng thời bởi một hay nhiều bộ xử lý để giải quyết một bài toán

Siêu máy tính: là những máy tính đa năng thông thường có tốc độ tính toán vô cùng lớn Chúng chia làm hai loại:

- Máy tính song song dựa trên bộ vi xử lý : được thiết kế với rất nhiều bộ xử lý có tốc độ vừa phải

- Siêu máy tính truyền thống (supercomputer) : ít bộ xử lý hơn nhưng tốc độ của mỗi bộ xử lý đó lại cực cao

Song song về dữ liệu (data parallelism): Là cơ chế sử dụng nhiều đơn vị xử lý thực hiện cùng một thao tác trên nhiều đơn vị dữ liệu

Song song điều khiển (control parallelism) : là cơ chế trong đó nhiều thao tác khác nhau tác động lên nhiều đơn vị dữ liệu khác nhau một cách đồng thời

Dây chuyền (pipeline) : là cơ chế chia công việc thành nhiều chặng nối tiếp, mỗi chặng được thực hiện bởi một bộ phận khác nhau Đầu ra của bộ phận này là đầu vào của

bộ phận tiếp theo

Tăng tốc : tăng tốc của thuật toán song song là tỉ số giữa thời gian thực hiện trong tình huống xấu nhất của thuật toán tuần tự tốt nhất và thời gian thực hiện cũng công việc đó của thuật toán song song

2 Các mức độ song song

Tăng tốc =

Thời gian thực hiện trong tình huống xấu nhất theo thuật toán tuần tự nhanh nhất

Thời gian thực hiện trong tình huống xấu nhất của thuật toán song song đang xét

Trang 2

Giả sử có 10 công việc từng đôi một khác nhau thì ta giao cho 10 máy làm, ta có mức song song cao nhất, và chúng ta gọi là mức chương trình song song Mỗi công việc ta lại chia thành các công đoạn (Task) và có thể thực hiện song song, ta gọi mức độ song song này là mức song song chương trình con Mỗi chương trình cũng như chương trình con lại

có hàng loạt câu lệnh, ta có mức độ song song câu lệnh, trong câu lệnh lại có hành loạt thao tác (operation) => mức độ song song thao tác

3 Phân loại các kiến trúc song song

Một trong những phân loại hay được nhắc tới là của Flynn – 1972 Michael Flynn phân các kiến trúc máy tính thành bốn loại dựa trên tương tác giữa lệnh và dữ liệu :

- SIMD(single instruction stream, single data stream) Đây chính là kiến trúc tuần tự Von Neuman, trong đó tại mỗi thời điểm chỉ một lệnh được thực hiện

- MISD (multiple instruction stream, single data stream) Kiến trúc này cho phép một vài lệnh cùng thao tác trên một dữ liệu

Trang 3

- SIMD (single instruction stream, multiple data stream) Cho phép một lệnh được thực hiện đồng thời trên các dữ liệu khác nhau

- MIMD (multiple instruction stream, multiple data stream) Cho phép nhiều lệnh khác nhau có thể đồng thời xử lý nhiều dữ liệu khác nhau trong cùng một thời điểm

4 Đánh giá độ phức tạp của thuật toán song song

Trong thuật toán tuần tự chúng ta chỉ quan tâm tới độ 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 Hơn nữa, độ 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 (P > 1) 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 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

4.1

Song song giới hạn và song song không giới hạn

Độ phức tạp thời gian của thuật toán song song cũng là một hàm của kích thước dữ

liệu đầu vào – n Độ phức tạp thời gian là đại lượng quan trọng nhất của thuật toán song

song bởi vì động cơ chính của song song là nhằm tăng tốc thời gian tính toán

Độ phức tạp thời gian tồi nhất (hay đơn giản là độ phức tạp thời gian) của thuật toán

song song giải quyết bài toán Pn với kích thước đầu vào n là một hàm f(n) cho thời gian

lớn nhất từ lúc bắt đầu thực hiện thuật toán trên một hay nhiều bộ xử lý đến lúc kết thúc thuật toán bởi một hay nhiều bộ xử lý với bất kỳ bộ dữ liệu nào

Các thuật toán song song được thực hiện trên một tập các bộ xử lý nên đòi hỏi việc truyền dữ liệu giữa chúng Vì thế nó bao hàm hai hoạt động khác nhau Một hoạt động là tính toán (như các phép toán số học hay logic) được thực hiện một cách cục bộ trên một

bộ xử lý, hoạt động khác là gửi dữ liệu giữa các bộ xử lý Trong thuật toán song song một bước cơ bản là một tập các hoạt động cơ bản có thể được thực hiện một cách đồng thời

Trang 4

bởi một tập các bộ xử lý – độ phức tạp thời gian của một bước cơ bản là hằng số hay O(1) Độ phức tạp thời gian của thuật toán song song được xác định bởi việc đếm số bước cơ bản và số bước chuyển giao dữ liệu, trong đó thời gian chuyển giao dữ liệu tại mỗi bước phụ thuộc vào mô hình liên kết giữa các bộ xử lý Một số tài liệu còn gọi độ phức tạp thời gian của thuật toán song song là độ sâu

Độ phức tạp thời gian của thuật toán song song phụ thuộc vào mô hình tính toán song song được sử dụng một cách tốt nhất trên số lượng bộ xử lý Vì thế, khi đưa ra độ phức tạp thời gian của thuật toán song song cần thiết đưa ra số lượng lớn nhất bộ xử lý cần sử

dụng như một hàm của kích thước dữ liệu đầu vào n, và gọi là độ phức tạp số bộ xử lý

của thuật toán Việc tổng hợp và phân tích một thuật toán song song dưới mô hình có P

bộ xử lý (P là một số nguyên cố định và P > 1) được gọi là mô hình song song có giới hạn Ngược lại, mô hình song song không giới hạn là khi mà chúng ta có và được phép tùy ý sử dụng một số lượng bộ xử lý không giới hạn

Thuật toán song song thực hiện trên mô hình P bộ xử lý được gọi là P-song song Nếu

thuật toán P-song song cho bài toán kích thước n đòi hỏi t(n) bước song song thì được gọi

là P-có thể tính toán trong thời gian t Chúng ta giả sử rằng một thuật toán song song A

giải quyết bài toán kích thước n với P bộ xử lý.Nếu tồn tại đa thức F sao cho n , P  F(n) , thì số lượng bộ xử lý được gọi là cận đa thức, ngược lại thì không có cận đa thức.

Thuật toán song song có giới hạn là thích hợp trong thực tế Tuy nhiên, các thuật toán song song không giới hạn có một sự quan tâm lớn về mặt lý thuyết, vì chúng đưa ra các giới hạn cho tính toán song song Bằng trực giác điều đó có nghĩa là chúng ta giả sử tồn tại một số lượng vô hạn bộ xử lý( nghĩa là thuật toán có thể sử dụng tùy ý số lượng bộ xử lý), và cũng không có giới hạn về truyền thông và truy cập bộ nhớ, thì thời gian tính toán không thể giảm dưới một giới hạn nào đó

Thực tế số lượng bộ xử lý là có giới hạn, nên thuật toán trên mô hình song song không giới hạn chỉ có thể sử dụng trong thực tế nếu chúng được chuyển thành thuật toán P-song song Có hai phương pháp đưa ra các phép chuyển đổi này : phân tách bài toán hoặc là phân tách thuật toán Ta có thuật toán song song A giải bài toán Pn kích thước đầu

Trang 5

vào n trong thời gian t1(n) sử dụng p1(n) bộ xử lý Giờ ta đi thiết kế thuật toán mới B giải

bài toán Pn trong thời gian t2(n) sử dụng p2(n) bộ xử lý, trong đó p2(n) < p1(n) Cách thứ nhất phân tách bài toán thành các bài toán nhỏ hơn với kích thước m (m < n), mỗi bài

toán được giải bởi thuật toán ban đầu với số lượng bộ xử lý nhỏ hơn – p2(m) Cách thứ

hai là phân tách một thuật toán, mỗi bước của nó được phân tách thành các bước nhỏ hơn theo một cách nào đó sao cho chúng được thực hiện với một số lượng bộ xử lý nhỏ hơn

4.2 Cận trên và cận dưới

Thuật toán song song nhanh nhất được biết để giải quyết bài toán cho ta cận trên của tính toán đó Nếu một ai đó thiết kế ra một thuật toán nhanh hơn thuật toán nhanh nhất trước đó để giải quyết cùng một bài toán thì chúng ta nói rằng cận trên mới đã được thiết lập cho việc tính toán lời giải của bài toán đó Cận dưới xác định độ phức tạp của bài toán, nghĩa là nó đưa ra lượng thời gian tối thiểu để giải quyết bài toán sử dụng một thuật toán song song tùy ý

4.3 Chi phí, tăng tốc, và hiệu quả của thuật toán song song

Tăng tốc và hiệu suất : xét bài toán với thuật toán tuần tự tốt nhất có thời gian Ts, thuật toán song song Tp ; số bộ xử lý là P Khi đó:

Tăng tốc = Ts/Tp Hiệu suất = Ts/(PTp) Tăng tốc luôn nhỏ hơn số bộ xử lý, cố gắng đạt tới bằng nên hiệu suất đạt cùng lắm là 1

4.4 Các kĩ thuật cho việc nâng cao hiệu quả của thuật toán song song

- Giảm số lượng bộ xử lý

- Giảm độ phức tạp thời gian

4.5 Độ phức tạp của bài toán

Dưới đây là mô hình phân lớp độ phức tạp của bài toán

Trang 6

Nói chung xử lý song song không có tác dụng cho việc giải quyết các bài toán NP Một bài toán thực hiện trong 400 tỷ thế kỷ trên một bộ xử lý sẽ mất 400 thế kỷ nếu chúng

ta thực hiện song song hóa một cách hoàn hảo và thực hiện trên 1 tỷ bộ xử lý Vì thế, xử

lý song song được sử dụng chính cho việc tăng tốc thời gian thực hiện của bài toán P

II Tổng quan MPI

1 Môi trường gửi nhận MPI.

1.1 Khái niệm SPMD độc trình dùng bộ nhớ phân tán.

Mỗi máy hoạt động theo nhịp đồng hồ riêng của mình và chỉ có thể đọc dữ liệu ở trên máy của mình (distributed memory system & asynchronous operation mode) Đối với một mạng như vậy, thì về nguyên tắc, trên mỗi máy ta có thể cho chạy một trình riêng và

dữ liệu của mỗi trình là riêng (MPMD) Các trình này có thể khác nhau, tức là chúng giải quyết các bài toán khác nhau, hoạt động độc lập và chỉ đến một lúc nào đó thì chúng mới trao đổi dữ liệu cho nhau

Trang 7

Sự việc xảy ra là: nếu thời điểm khởi động các trình trên các máy khác nhau mà không xác định, thì thời điểm cho việc chúng trao đổi dữ liệu cho nhau cũng không thể xác định được Vậy chúng ta vẫn cần phải có một “trọng tài” để xác định thời điểm bắt

đầu hoạt động cho chúng Với quan niệm này người ta coi như tất cả chúng chỉ là một trình chung thôi độc trình Điều này hàm ý: - (1) Trên mỗi máy tính chạy một trình,

nhưng chúng hoàn toàn giống nhau, - (2) Tất cả các trình ấy được khởi động để chạy cùng một lúc

Tuy chỉ sử dụng một độc trình, nhưng các máy tính khác nhau vẫn sẽ làm những

“phần việc” của mình, bởi trong trình chung ấy, mỗi “phần việc” là những đoạn lệnh riêng – mà mỗi máy sẽ tự kiểm tra xem mình cần chạy đoạn lệnh nào

Các trình, tức là các đoạn lệnh “riêng” ấy, chỉ có thể truy cập trực tiếp vào bộ nhớ

RAM trong máy của mình – độc trình dùng bộ nhớ phân tán Nếu ở trong trình có một

biến được khai báo thì tức là nó sẽ có mặt ở tất cả các máy tính

Điều vừa được trình bày ra ở trên hàm ý là các máy tính không thể thực hiện được việc trao đổi giá trị với nhau thông qua các ô nhớ (bởi trên thực tế chúng chẳng có ô nhớ chung nào cả!) Các máy tính muốn trao đổi dữ liệu với nhau thì phải thông qua các lệnh gửi-nhận mà MPI cung cấp Đó là môi trường đảm nhận nhiệm vụ truyền tải dữ liệu qua mạng Mỗi máy tính muốn tham gia vào hệ thống MPI phải được cài thêm một trình thường trú, gọi là Driver-MPI Nó gửi/nhận dữ liệu truyền theo đường mạng rồi chuyển đến nơi qui định

1.2 Khái niệm mạng ảo.

Mục đích của MPI là tạo ra một môi trường gửi-nhận dữ liệu thân thiện, cho phép chúng ta soạn thảo và thử trình MPI chỉ trên một máy, để sau đó chạy nó trên một mạng máy tính – có thể có cấu trúc rất phức tạp Để làm việc này MPI cho phép mô phỏng một mạng ảo chỉ trên một máy tính Độc trình của chúng ta sẽ chạy trên các máy ảo này (vẫn theo nguyên tắc trên mỗi máy chạy một trình) MPI bảo đảm để về mặt hình thức máy ảo hoàn toàn tương đương với máy thật Điểm lưu ý là các độc trình trên cùng một máy thật thì dùng chung đĩa cứng

Trang 8

Cho dù là trên cùng một máy, nhưng các độc trình không thể trực tiếp trao đổi dữ liệu cho nhau (vì chúng chạy trên các máy ảo khác nhau) Hoàn toàn giống như các máy tính độc lập trong mạng, các chúng chỉ có thể trao đổi dữ liệu với nhau thông qua môi trường MPI

Thông thường người ta viết và chạy thử trình trên một máy tính, khi ấy sẽ có sự phân biệt giữa giữa trình và máy tính Tuy nhiên, khi sử dụng trên một mạng gồm nhiều máy tính thì, thường là, trên mỗi máy chỉ chạy có một trình Vì vậy, mỗi khi không có khả năng xảy ra nhầm lẫn, chúng ta sẽ dùng từ máy tính với hàm ý chỉ trình chạy trên nó

1.3 Cấu trúc một trình MPI

Cấu trúc khái quát của một trình MPI chạy trên nhiều máy bao gồm 2 phần Phần thứ nhất là việc mỗi máy tự “nhận biết” đoạn trình mà mình cần thực hiện, và phần thứ hai là thủ tục gửi-nhận dữ liệu cho nhau

Sơ đồ như sau:

#include <stdlib.h>

#include <stdio.h>

#include <mpi.h>

main(int argc,char **argv)

{

if (MPI_Init(&argc, &argv) != MPI_SUCCESS) exit(1); /* Initialize MPI */ MPI_Comm_size( , &np );

MPI_Comm_rank( , &ip );

If (ip == me)

{

… do work-of-me …

Trang 9

}

MPI_Finalize(); exit(0); /* check-out */

}

Trong đó “np” là số lượng tiến trình, và “ip” là số hiệu của tiến trình hiện tại Dựa vào số hiệu “ip” mà ta biết được là phải thực hiện khúc lệnh nào.

1.4 Tuần tự hóa song song

Cho dù muốn hay không, thì vấn đề tuần tự hóa cũng xuất hiện khi các đối tượng hoạt động song song cùng sử dụng chung một thiết bị, ví dụ như màn hình Quá trình chuyển

từ song song sang tuần tự còn dính đến một vấn đề rắc rối là thứ tự trước sau Ví dụ như việc các máy tự tìm ra số hiệu của mình, rồi in ra trên màn hình (của máy số 0) Trên màn hình, số hiệu có thể xuất hiện theo một thứ tự không thể đoán trước được, và điều này là

do giữa các máy không có một giao tiếp nào để định ra thứ tự in; và do chúng chạy song song nên máy nào “may mắn” hơn thì sẽ in ra trước, máy nào “ít may mắn” hơn sẽ in ra sau(!)

Để các máy có thể in số hiệu của mình theo thứ tự tăng dần, chúng ta cần phải có biện pháp xử lý – biện pháp như thế được gọi là tuần tự hóa song song

Có thể có 2 biện pháp:

1 Biện pháp thứ nhất là gọi tên Theo cách này chúng ta bắt tất cả các máy phải dừng lại trước “barrier” để chờ và chỉ máy nào được gọi tên thì mới được “đi qua”

để thực hiện công việc của mình

2 Biện pháp thứ hai là “chuyền cờ” Theo phương pháp này có một chiếc “cờ” được chuyền từ máy này đến máy khác theo số hiệu tăng dần Chỉ máy nào nhận được

cờ thì mới được thực hiện tiếp các lệnh của mình

1.5 Các phương pháp gửi-nhận cơ bản

Trang 10

Bản chất của việc gửi dữ liệu từ một máy tính này sang một máy tính khác là việc truyền một dãy xung điện qua dây dẫn Xung điện này chuyển tải nội dung của một ô nhớ đặc biệt – “port” của máy “A” sang “port” của máy “B” Cùng lúc ấy một chương trình chuyên dụng của máy “B” được kích hoạt để vận chuyển dữ liệu ấy tới nơi qui định Như vậy vào thời điểm máy “A” gửi dữ liệu thì máy “B” phải hoạt động Trường hợp ngược lại mà “B” vẫn muốn nhận được dữ liệu thì những dữ liệu ấy phải được một máy “C” nào

đó khác nhận vào hộ

Về nguyên lý chỉ có thể có hai kiểu gửi-nhận:

1 Gửi trực tiếp – transient: “A” gửi, “B” nhận Nếu “B” không nhận thì những dữ liệu này sẽ bị mất

2 Gửi gián tiếp – persistence: “A” gửi vào “C”, “B” nhận từ “C” Máy “C” phải liên tục hoạt động

Mỗi kiểu gửi nói trên có thể được thực hiện theo một trong hai phương án sau:

1 Gửi không đồng bộ – asynchorous “A” đẩy luôn dữ liệu cho “B” mà không cần biết là “B” có nhận được dữ liệu không Nếu B chưa sẵn sàng nhận thì dữ liệu sẽ

bị mất

2 Gửi đồng bộ – synchronous Trước khi gửi dữ liệu, thì “A” tự tạo ra và gửi tín hiệu đồng bộ cho “B” Các tín hiệu này có khuôn dạng nhất định và được gửi đi gửi lại cho tới khi nào B nhận được mới thôi (như vậy nếu có mất thì không phải là mất

dữ liệu cần gửi mà chỉ là các tín hiệu đồng bộ) Tín hiệu đồng bộ hóa báo cho B biết các thông tin cần thiết như dung lượng dữ liệu sẽ gửi cho nó Khi “A” nhận được tín hiệu hồi âm của B báo cho biết là B đang chờ để nhận dữ liệu do nó gửi,

“A” chuyển ngay khối dữ liệu ấy cho “B” – đủ dung lượng như đã thông báo Về nguyên tắc “A” được giải phóng ngay sau khi bắt đầu gửi (để đi thực hiện lệnh

Ngày đăng: 05/07/2014, 18:16

TỪ KHÓA LIÊN QUAN

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

w