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

Tiểu luận môn tính toán lưới TÌM HIỂU TÍNH TOÁN SONG SONG

33 592 4

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

Nội dung

Tính toán song song Tính toán song song là quá trình tính toán gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia tính toán giải quyết một vấn đề, và nói chung phải thực hiện

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Thành phố Hồ Chí Minh - Tháng 07 Năm 2013

Trang 2

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN

Trang 4

1 Tổng quan về tính toán song song

1.1 Tính toán tuần tự

- Một vấn đề được chia thành một dãy rời rạc các chỉ thị (Instruction – lệnh máytính) mà máy tính có thể hiểu để thực hiện

- Máy tính thực hiện các chỉ thị theo thứ tự mà chúng xuất hiện

- Chỉ có duy nhất một chỉ thị được thực hiện tại một thời điểm

- Các phần mềm ứng dụng đều được viết cho các máy tính tuần tự

Máy tính tuần tự là loại máy tính thực hiện các lệnh một cách tuần tự và tại mỗithời điểm chỉ một chỉ thị duy nhất được thực hiện Cách tính toán tuần tự trên máyđơn nguyên có thể minh họa bởi hình 1.1

Hình 1.1 Mô tính toán tuần tự

1.2 Tính toán song song

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

- Một vấn đề cần tính toán được phân hoạch thành các phần tính toán rời rạc,các phần này lại có thể tính toán được đồng thời (song song)

- Từng phần của phân hoạch lại được chia nhỏ thành chuỗi các chỉ thị và đượcthực hiện tuần tự

- Các chỉ thi của từng phần thực hiện đồng thời trên các CPU khác nhau

Quan niệm đơn giản nhất, tính toán song song là việc sử dụng đồng thời nhiềumáy tính được kết nối thành mạng hoặc chỉ trên một máy tính nhưng có nhiều hơnhai bộ xử lý

Trang 5

Hình 1.2 Mô tính toán song song

Trong tính toán song song hiện nay, có hai công nghệ chính:

Thứ nhất là sử dụng các siêu máy tính với rất nhiều bộ xử lý được tích hợp bên trong được thiết kế đồng bộ cảvềphần cứng và phần mềm Các công nghệ được áp dụng trong các siêu máy tính thường là các công nghệ tiên tiến làm cho giá thành của hệ thống siêu tính tăng rất cao.Vì thế các siêu máy tính thường được sử dụng trong các lĩnh vực mà vấn đềtính toán phức tạp, nhạy cảm và yêu cầu thời gian thực như mô phỏng thực hiện của các động cơ máy bay, quốc phòng, vũ trụ

Cách thứ hai là kết nối các máy tính lại với nhau và cùng thực hiện bài toán Hệ thống các máy tính kết nối này chính là hệ thống tính toán song song phân cụm Hệ thống này có ưu điểm là giá thành rẻ hơn rất nhiều so với siêu máy tính có cùng sức mạnh (do sử dụng các thiết bị thông thường) và tính linh hoạt của hệthống (sốnút, số

bộ xử lý, bộ nhớ, thiết bịmạng đều mang tính tuỳ biến cao) Sự phát triển mạnh mẽ của mạng máy tính, các công nghệ mạng hiện nay đã lấp đi hạn chế về truyền thông trong hệ thống máy tính song song phân cụm làm cho nó được phát triển rộng rãi Cáclĩnh vực sử dụng hệ thống tính toán song song phân cụm thường yêu cầu tính toán cáckiến trúc song song

1.3 Tại sao sử dụng tính toán song song?

Tiết kiệm thời gian và / hoặc tài chính

Trang 6

Giải quyết được các vấn đề lớn hơn, phức tạp hơn

Nhiều vấn đề quá lớn và/hoặc quá phức tạp đến nỗi nó không thực tế hoặc không

có khả năng giải quyết chúng trên máy tính đơn, đặc biệt là bộ nhớ máy tính lại bị hạnchế Chẳng hạn các vấn đề:

- Dự báo thời tiết, bão, động đất, sóng thần, mô hình sinh thái, …

- Máy dò tìm web/CSDL để xử lý hàng triệu triệu giao dịch trên một giây(công cụ tìm kiếm web/CSDL xử lý hàng triệu giao dịch/giây)

- …

Cung cấp tính đồng thời

Sử dụng tài nguyên phi cục bộ

Sử dụng tài nguyên tính toán trên một mạng diện rộng, hoặc thậm chí Internetkhi tài nguyên tại nơi tính toán tài nguyên đang khan hiếm, không đủ Ví dụ:

Những hạn chế khi tính toán tuần tự

o Tốc độ truyền - tốc độ của một máy tính tuần tự phụ thuộc trực tiếp vào tốc độchuyển dữ liệu qua phần cứng Giới hạn tốc độ tuyệt đối là tốc độ của ánh sáng(30 cm/nanosecond) và hạn chế sự lan truyền (băng thông) của dây đồng (9cm/nanosecond) Để tăng tốc độ cần phải tăng số lượng các phần tử xử lý,

o Các giới hạn về công nghệ tiểu họa vi xử lý (miniaturization – processortechnology) là cho phép tăng số lượng bóng bán dẫn được đặt trên một chip.Tuy nhiên, ngay cả với các thành phần cấp độ phân tử hoặc nguyên tử thì mộtgiới hạn cũng sẽ được đạt đến dù các thành phần nhỏ đến thế nào đi nữa

o Các hạn chế về kinh tế - làm một bộ xử lý đơn càng nhanh thì càng đắt tiền

o Các kiến trúc máy tính hiện tại đang ngày càng dựa vào khả năng song songhóa phần cứng để cải thiện hiệu suất như:

 Có nhiều đơn vị thực hiện

 Dùng các chỉ lệnh đường ống (Pipelined instructions)

 Đa nhân (Multi-core)

Trang 7

Một vấn đề được thực hiện song song sẽ có các ưu/nhược điểm cơ bản sau:

Ưu điểm:

- Có thể kết thúc công việc sớm hơn,

- Chi phí có thể ít hơn nhiều,

-

Nhược điểm:

- Tăng tính phức tạp cho hệ thống

- Tăng chi phí cho nhân lực vì phải tăng nhân lực

- Tăng chi phí mua các thiết bị

- Tăng chi phí lắp đặt hệ thống

Trong 20 năm qua, sự phát triển mạnh của các mạng (network), hệ thống phân tán

và kiến trúc đa xử lý (thậm chí là máy tính để bàn) đã cho thấy rõ song song là xu hướng của tính toán Trong thời gian đó, các siêu máy tính đã tăng hơn 1000 lần về hiệu xuất, và sẽ tiếp tục trong tương lai

Trang 8

Tính toán song song hiện đang được sử dụng rộng rãi trên thế giới trong nhiều ứng dụng lớn

Nguồn: Top500.org

Trang 9

Nhà cung cấp:

Trang 10

Phần lớn các siêu máy tính trên thế giới là các cụm phần cứng được sản xuất bởi một

số ít các nhà cung cấp nổi tiếng

Nguồn: Top500.org

2 Các mô hình máy tính song song

Micheal Flynn chia kiến trúc máy tính song song như hình sau:

2.1 Đơn chỉ thị đơn dữ liệu (SISD - Single Instruction Single Data)

− Dùng cho máy tính đơn nguyên tuần tự - không song song

− Đơn chỉ thị: mỗi thời điểm chỉ dùng một chỉ có một chỉ thị đang được xử lý bởiCPU trong một chu kỳ đồng hồ nào đó Chẳng hạn, hình 2.1, chu kỳ đồng hồ

thứ nhất load, chu kỳ đồng hồ thứ hai load, … , chu kỳ đồng hồ cuối cùng

Store

Trang 11

Hình 2.1 Ví dụ về đơn chỉ thị, đơn luồng dữ liệu

− Đơn luồng dữ liệu: chỉ có một dữ liệu đang được sử dụng như đầu vào trong

một chu kỳ đồng hồ nào đó Chẳng hạn , hình 1.8, chu kỳ đồng hồ thứ nhất A,

chu kỳ đồng hồ thứ hai B, … , chu kỳ đồng hồ cuối A

− Thực hiện theo tiền định, nghĩa là công việc được hoạch định rõ ràng khi lậptrình (tĩnh), trong qúa trình thực thi các câu lệnh và dữ liệu không bị thay đổi

− Đây là loại máy tính lâu đời nhất và thậm chí cho đến ngày nay vẫn là loại máytính phổ biến nhất

2.2 Đơn chỉ thị đa dữ liệu (SIMD - Single Instruction Multiple Data)

− Đơn chỉ thị: Tất cả các bộ vị xử lý p1, p2, …, pn cùng thực thi cùng một chỉ thị tại cùng một chu kỳ đồng hồ đã cho Chẳng hạn, hình 2.1, chu kỳ đồng hồ thứ nhất, n bộ xử lý này cùng có một chỉ thị là load, chu kỳ đồng hồ thứ hai, n

bộ xử lý cùng có một chỉ thị là load, … , chu kỳ đồng hồ thứ 4, n bộ xử lý cùng

có một chỉ thị là Store,…

− Đa luồng dữ liệu: Mỗi bộ xử lý có thể hoạt động trên một phần tử dữ liệu khác với dữ liệu của bộ xử lý khác - có nhiều dữ liệu đang được sử dụng như đầu vào trong một chu kỳ đồng hồ nào đó Chẳng hạn, hình 2.1, chu kỳ đồng hồ thứnhất A(1), A(2), …, A(n); chu kỳ đồng hồ thứ hai B(1), B(2), …, B(n) ; … , chu kỳ đồng hồ thứ 4 là C(1), C(2), …, C(n); …

− Loại máy tính này rất phù hợp cho các vấn đề chuyên ngành được đặc trưng bởi mức đồng bộ cao, chẳng hạn như xử lý đồ họa hoặc hình ảnh,…

− Đồng bộ và thực hiện tiền định

− Hai kiến trúc bộ xử lý hay được sử dụng nhất trong trường hợp này là: Bộ xử

lý mảng và xử lý kiểu đường ống vectơ

Máy tính kiến trúc SIMD chỉ có một CU để điều khiển nhiều PE thực hiện theomột luồng lệnh CU phát lệnh điều khiển tới tất cả các PE, các PE này cùng thực hiện

Trang 12

một phép toán trên các mục dữ liệu khác nhau, nghĩa là mỗi PE có một luồng dữ liệu riêng Như vậy SIMD cho phép các Pi khác nhau (hoặc ALU khác nhau) làm cùng một phép tính trên các toán hạng khác nhau Máy tính SIMD có hỗ trợ cách xử lý vector, nghĩa là gán mỗi thành phần của một vector cho các Pi để thực hiện tính toán đồng thời Cấu trúcbản của SIMD như hình 2.2

Hình 2.2.a Kiến trúc kiến trúc SIMD

Hình 2.2.b Đơn chỉ thị, đa luồng dữ liệu

2.3 Da dữ liệu đơn dòng lệnh (MISD - Multiple Instruction Single Data)

− Một dòng dữ liệu duy nhất được đưa vào các đơn vị đa xử lý

− Mỗi đơn vị xử lý hoạt động trên các dữ liệu một cách độc lập thông qua cácluồng chỉ thị độc lập khác nhau

− Rất ít ví dụ thực tế của lớp các máy tính song song kiểu này

Kiến trúc MISD được chia làm hai nhóm cơ bản:

− Thứ nhất, nhóm máy tính yêu cầu có các công việc khác nhau, các phần tử xử

lý khác nhau có thể nhận những chỉ lệnh khác nhau để thực hiện trên một mục

dữ liệu

Trang 13

− Thứ hai, nhóm máy tính có các luồng dữ liệu được chuyển tuần tự theo dãy các

PE liên tiếp Hoạt động của máy tính theo kiến trúc này giống như hệ tuầnhoàn nên còn được gọi là hệ tâm thu, hình 2.3

Hình 2.3 Kiến trúc kiến trúc MISD

2.4 Đa dữ liệu đa dòng lệnh (MIMD – Multiple Instruction Multiple Data)

Hiện nay, các loại phổ biến nhất của máy tính song song Hầu hết máy tính hiệnđại đều thuộc vào loại này

dòng chỉ thị khác với các dòng chỉ thị của các bộ xử lý khác

dòng dữ liệu khác với các dòng dữ liệu của các bộ xử lý khác

Việc thực hiện các chỉ thị có thể được đồng bộ hoặc không đồng bộ, tiền định hoặckhông tiền định

Hình 2.4.a Các kiến trúc máy tính xử lý song

Kiến trúc MIMD còn được gọi là máy đa bộ xử lý, mỗi bộ xử lý có thể thực hiện bởi luồng lệnh và luồng dữ liệu riêng

Trang 14

Hình 2.4.b Kiến trúc kiến trúc MIMD

MIMD có bộ nhớ chung, các bộ xử lý của MIMD đều có bộ nhớ riêng, nhưng được phép truy cập vào bộ nhớ chung khi cần, do vậy giảm được các thao tác trao đổi giữa các bộ xử lý trong hệ thống, xem hình 2.4.b

Trang 15

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

Một số mô hình lập trình song song phổ biến được liệt kê dưới đây:

- Chia sẻ bộ nhớ (Shared Memory)

- Luồng, tiến trình (Thread)

- Truyền thông báo (Massage Passing)

- Dữ liệu song song (Data Parallel)

lý thuyết) được thi hành trên bất kỳ phần cứng cơ bản nào

Vấn đề quan trọng trong lập trình song song là phải tận dụng được khả năng tính toán của các bộ xử lý Có hai cách tiếp cận để tận dụng các bộ xử lý:

1. Phát triển những ngôn ngữ lập trình cho phép thể hiện được việc thực hiện song song ở mức thuật toán, ví dụ như Fortran, C,

2. Xây dựng những chương trình dịch đủ mạnh để nhận dạng được các phân chia chương trình thành các đoạn có thể thực hiện song song hay tuần tự -với loại chương trình dịch này có thể dùng cho tự động song song

Hai cách tiếp cận trên bổ sung cho nhau cho phép chúng ta sử dụng tốt nhất các bộ

xử lý, nếu áp dụng một cách thì dĩ nhiên là sẽ không hiệu quả bằng

Ngoài tiết cận để tận dụng các bộ xử lý, thì các cách tiếp cận trong lập trình song song như sau đây cũng đóng vai trò rất quan trọng:

1. Lập trình song song kiểu SIMD với bộ nhớ chia sẻ, trong đó truy cập bộ nhớ là

Trang 16

4. Lập trình song song kiểu SPMD với bộ nhớ chia sẻ, trong đó truy cập bộ nhớ là

3.1 Mô hình chia sẻ bộ nhớ (Shared Memory Model)

Trong mô hình lập trình chia sẻ bộ nhớ, các tác vụ chia sẻ với nhau một không gian địa chỉ chung, ở đó các tác vụ đọc và ghi không đồng bộ

Các cơ chế khác nhau như khóa / semaphores (cờ hiệu) có thể được sử dụng đểkiểm soát (hoặc điều khiển) truy cập vào bộ nhớ chia sẻ

Một lợi thế của mô hình này theo quan điểm của lập trình viên thì khái niệm

"sở hữu" dữ liệu là đang thiếu, do đó, không cần thiết phải định rõ việc truyền dữ liệu giữa các tác vụ Do vậy việc lập trình thường đơn giản hơn

Một số bất lợi quan trọng về hiệu năng, đó là nó khó hiểu hơn và khó quản lý

dữ liệu cục bộ hơn, vì:

- Việc lưu giữ dữ liệu cục bộ cho bộ xử lý làm việc trên đó, bộ xử lý này sẽ chiếm giữ bộ nhớ truy cập, nên cần phải làm tươi (mới) lại bộ nhớ cache và đường truyền bus khi có nhiều bộ xử lý sử dụng chung dữ liệu

- Việc kiểm soát dữ liệu cục bộ sẽ rất khó và ngoài tầm kiểm soát của người lập trình chưa có trình độ cao cần thiết

- Trên nền tảng bộ nhớ chia sẻ, trình biên dịch chương trình chuyển các biến của người lập trình vào các địa chỉ bộ nhớ thực, đó là địa chỉ vật lý toàn cục

- Không có những bổ sung cơ bản nào cho bộ nhớ phân tán đang tồn tại Tuy nhiên, như đã đề cập trước đó, các cách tiếp cận KSR ALLCACHE cung cấp cách thức dữ liệu của bộ nhớ chia sẻ ngay cả khi bộ nhớ vật lý của máy tính này được phân tán

3.2 Lập trình chia sẻ bộ nhớ dựa vào tiến trình

Trang 17

Tạo lập và huỷ bỏ tiến trình

Yêu cầu đầu tiên của xử lý song song là khả năng tạo ra một số tiến trình cần thiếtcho bài toán và khả năng huỷ bỏ tiến trình khi phần việc xử lý song song kết thúc đểgiải phóng các tài nguyên mà các tiến trình đã chiếm giữ và không cản trở hoạt độngcủa những tiến trình khác

Để thêm N tiến trình, chúng ta dùng lệnh:

id = create_process (N);

Lệnh này tạo thêm N tiến trình và cả một tiến trình cha (chủ) nữa để thực hiện câu lệnh đó, kết quả là có N+1 tiến trình như nhau được tạo ra và mỗi giá trị của id được

gán tương ứng cho một tiến trình

Để sử dụng các tiến trình đã được tạo ra, chúng ta có thể viết ra các chương trìnhsong song có dạng:

id = create_process(N);

Switch (id) {

Case 0 : … do NhiemVu 0 …; Break;

Case 1 : … do NhiemVu 1 …; Break;

Case 2 : … do NhiemVu 2 …; Break;

join_process (N, id)

Chỉ tiến trình tương ứng với giá trị id còn tiếp tục hoạt động, những tiến trình còn

lại kết thúc sau lời gọi hàm trên Tuy nhiên, nếu ta đặt sau nó một câu lệnh nào đó thìlệnh này sẽ không được thực hiện cho đến khi tất cả các tiến trình đều thực hiện câu

lệnh join_process() Sau đó chỉ còn lại một tiến trình hoạt động, do vậy vấn đề xử lý

song song không xuất hiện mà xử lý tuần tự

Vấn đề là khả năng các tiến trình được tạo lập có thể nhìn thấy dữ liệu của nhaunhư thế nào? Một mặt một tiến trình có thể muốn giữ một phần dữ liệu cục bộ choriêng mình, không cho những tiến trình khác nhìn thấy/truy cập tới những dữ liệu đó

Trang 18

Mặt khác, nó cũng muốn trao đổi thông tin với các tiến trình khác Do đó, xử lý vấn

đề che giấu hay chia sẻ thông tin như thế nào còn tuỳ thuộc vào mô hình mà chúng ta

áp dụng: dựa vào tiến trình hay luồng.

- Các tiến trình trong UNIX được sử dụng như các đơn vị tính toán độc lập, theo

mặc định, việc tính toán và cập nhật bộ nhớ của một tiến trình “không” sẽ không chocác tiến trình khác nhìn thấy

- Đối với các luồng, tất cả các thông tin, theo mặc định, là nhìn thấy được Do vậy,

trong mô hình này cần phải cố gắng rất nhiều mới che giấu được thông tin khi cầnthiết

Một số hàm điều phối vấn đề chia xẻ bộ nhớ

Khi muốn sử dụng bộ nhớ chung, ta cần phải xin cấp phát bộ nhớ và sau khi sử

dụng xong phải giải phóng chúng Người lập trình phải có nhiệm vụ giải phóng phần

bộ nhớ chia sẻ một khi chúng không còn sử dụng Có hai hàm cơ bản được sử dụng ở

đây là:

- Hàm cấp phát bộ nhớ shared(m , &id): hàm này giống như malloc(), nhưng cấp phát m byte bộ nhớ chia sẻ cho tiến trình id.

- Hàm giải phóng bộ nhớ free_shm(): giải phóng phần bộ nhớ đã được cấp phát.

3.3 Lập trình chia sẻ bộ nhớ dựa vào luồng

1. Trong mô hình lập trình song song dựa vào luồng, một tiến trình trình đơn

có thể có nhiều cách thực hiện đồng thời

Trang 19

2. Perhaps the most simple analogy that can be used to describe threads is theconcept of a single program that includes a number of subroutines: Lý luận đơn

giản nhất được dùng để mô tả các luồng là xét một chương trình chính a.out

bao gồm một số chương trình con, hình 4.1.2-1

The main program a.out is scheduled to run by the native operating system a.out

loads and acquires all of the necessary system and user resources to run.Hình 3.3

Chương trình chính a.out bao gồm một số chương trình con

- Chương trình chính a.out được lập lịch để chạy bằng hệ điều hành

- Each thread has local data, but also, shares the entire resources of a.out Mỗi thread có dữ liệu địa phương riêng của nó, nhưng cũng có, dùng chung tàinguyên của a.out This saves the overhead associated with replicating aprogram's resources for each thread Điều này giúp tiết kiệm chi phí “vô ích”liên quan với việc nhân bản các tài nguyên của chương trình để cung cấp chocác thread Each thread also benefits from a global memory view because itshares the memory space of a.out Mỗi thread cũng có lợi vì nó chia sẻ khônggian bộ nhớ của a.out

Ngày đăng: 09/04/2015, 19:00

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w