Các tiến trình thực hiện tuần tự

Một phần của tài liệu Parallel processing (Trang 25 - 26)

hiện tuần tự B: Các tiến trình thực hiện song song C: Các tiến trình thực hiện tuần tự D: Các tiến trình thực hiện song song E: Các tiến trình thực hiện tuần tự A B C D E 148

3.2 Các ngôn ngữ lập trình song song -Occam

Các tiến trình trong Occam

Có ba tiến trình nguyên thuỷ trong Occam:

• Tiến trình gán: thay đổi giá trị của các biến

• Tiến trình Input: nhận dữ liệu vào từ các kênh vào (cổng vào) • Tiến trình Output: gửi dữ liệu ra các kênh ra.

Cấu trúc ngôn ngữ

• Tiến trình gán:

sum := partion1 + partion2

/*gắn gtrị cho biến sum là tổng hai gtrị partion1và partion2 */

• Tiến trình Input: user1 ? x

/*gán giá trị từ kênh user1 cho x */

• Tiến trình Output: C ! x * x

/*gửi giá trị x2ra kênh C */

149

3.2 Các ngôn ngữ lập trình song song -Occam

Các cấu trúc điều khiển

SEQ: cấu trúc tuần tự, các thành phần trong tiến trình này

được thực hiện theo thứ tự và tiến trình này kết thúc khi thành phần cuối cùng thực hiện xong. Mỗi thành phần của tiến trình này có thể là một tiến trình song song.

Ví dụ: SEQ

channel1 ? partial1 channel2 ? partial2 sum:= partial1 + partial2 partial3 ! Sum

Các số nguyên được nhập vào tuần tự từ 2 kênh khác nhau sau đó cộng lại và chuyển sang kênh 3

150

3.2 Các ngôn ngữ lập trình song song -Occam

Các cấu trúc điều khiển (cont.)

PAR: cấu trúc song song, các thành phần của tiến trình này

được thực hiện đồng thời và tiến trình này sẽ kết thúc khi tất cả các thành phần của nó đều kết thúc. Ví dụ: SEQ PAR channel1 ? partial1 channel2 ? partial2 sum:= partial1 + partial2

Các số nguyên được nhập vào song song từ 2 kênh khác nhau sau đó cộng lại

151

3.2 Các ngôn ngữ lập trình song song -Occam

Các cấu trúc điều khiển (cont.) (adsbygoogle = window.adsbygoogle || []).push({});

ALT: cấu trúc tuyển chọn, chọn một trong các thành phần của

tiến trình để thực hiện nếu nó thoả mãn điều kiện lựa chọn và tiến trình này kết thúc khi thành phần được lựa chọn kết thúc. (xem ví dụ tính tích phân)

152

3.2 Các ngôn ngữ lập trình song song -Occam

Các cấu trúc khác

1.Cấu trúc điều khiển IF, gọi là tiến trình điều kiệnđể chọn một tiến trình thành phần khi biểu thức Boolean có giá trị true; 2.Cấu trúc lặp WHILE, gọi là tiến trình lặpđể thực hiện lặp lại

tiến trình thành phần cho đến khi biểu thức điều kiện Boolean nhận giá trị true.

3.Cấu trúc lặp FOR, gọi là tiến trình lặp có số vòng lặp xác định trước, i = [0 FOR n]

Ví dụ: PAR i = [0 FOR 9]: tạo ra 10 tiến trình song song, i nhận giá trị từ 0 đến 9

153

Ví dụ: Giả sử có hai tiến trình giống nhau cùng nhận dữ liệu vào và cộng dồn vào tổng.

CHAN In1, In2: CHAN Out1, Out2: VAR Sum1, Sum2:

SEQ &các lệnh dƣới đây thực hiện tuần tự

Sum1 := 0 &gán giá trị đầu cho Sum1 và Sum2

Sum2 := 0

PAR &bắt đầu thực hiện song song --Tiến trình thứ nhất

While TRUE VAR Item1: SEQ

In1 ? Item1 &gán giá trị ở kênh In1 cho Item1

Sum1 := Sum1 + Item1 Out1 ! Item1 --Tiến trình thứ hai While TRUE VAR Item1: SEQ In2 ? Item2 Sum2 := Sum2 + Item2 Out2 ! Item2

154

3.2 Các ngôn ngữ lập trình song song -Occam

Sự trao đổi giữa các tiến trình

• Trong ví dụ trên, các tiến trình không cần trao đổi với nhau vì mỗi tiến trình đều sử dụng các biến cục bộ của riêng nó. • Tuy nhiên, khi có nhiều tiến trình muốn trao đổi dữ liệu với

nhau thì phải trao đổi trên cùng một kênh truyền dữ liệu. Nghĩa là, một tiến trình gửi dữ liệu ra một kênh truyền và tiến trình kia nhận dữ liệu từ kênh đó.

• Trong Occam, mỗi tiến trình thực hiện trên một bộ xử lý và truyền thông điệp (Passed-Message) tới những bộ xử lý lân cận theo kiến trúc hình khối.

1551.DEF N = 400000: 1.DEF N = 400000:

Một phần của tài liệu Parallel processing (Trang 25 - 26)