Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

CSE703032

Lập trình song song

Bài giảng 6
LẬP TRÌNH SONG SONG VỚI
BỘ NHỚ CHIA SẺ
Khoa Công nghệ thông tin
Đại học Phenikaa
Reductions (rút gọn): tại sao, cái gì, như thế nào?
o Chúng ta hãy xem ví dụ sau:

o Vấn đề ở đây là điều kiện chạy đua (race condition) liên quan đến biến
sum, vì biến này được chia sẻ giữa tất cả các luồng. 2
Mệnh đề rút gọn (Reduction clause):

o Mệnh đề rút gọn cho phép chúng ta chỉ định một hoặc nhiều
biến riêng tư của luồng có thể thực hiện thao tác rút gọn ở cuối
vùng song song.
o Khi chúng ta thêm mệnh đề này vào vùng song song:
 OpenMP sẽ tạo một bản sao của biến rút gọn trên mỗi luồng,
được khởi tạo theo danh tính của toán tử rút gọn.
 Mỗi luồng sau đó sẽ rút gọn thành biến cục bộ của nó.
 Ở cuối vùng song song, các kết quả cục bộ được kết hợp lại
bằng cách sử dụng toán tử rút gọn thành biến toàn cục
3
Mệnh đề rút gọn (Reduction clause):
o Chúng ta biên dịch và chạy ví dụ sau:

4
Mệnh đề rút gọn (Reduction clause):
o Chúng ta có thể rút gọn trên các sections:

5
Lỗi chia sẻ (false sharing):
o Nếu như code của chúng ta không dễ dàng để thực hiện việc rút gọn, chúng ta có
thể thực hiện bằng các biến toàn cục và sau đó thu thập các kết quả để tổng hợp
lại.

o Mặc dù code này đúng nhưng nó có thể không hiệu quả do một hiện tượng gọi là
chia sẻ sai (false sharing). Điều này có nghĩa là các lõi sẽ lãng phí rất nhiều thời
gian và băng thông để cập nhật bản sao của dòng bộ đệm này của nhau.
6
Lỗi chia sẻ (false sharing):
o Việc chia sẻ sai có thể được ngăn chặn bằng cách cung cấp cho
mỗi luồng dòng bộ đệm riêng:

7
Giá trị ban đầu để rút gọn:
o Việc xử lý các giá trị ban đầu trong các rút gọn có liên quan:

o Mỗi luồng thực hiện rút gọn một phần, nhưng giá trị ban đầu của nó
không phải là giá trị init_x do người dùng cung cấp mà là giá trị phụ
thuộc vào toán tử.
o Đến cuối cùng, kết quả một phần sẽ được kết hợp với giá trị ban đầu của
người dùng.

8
Giá trị ban đầu để rút gọn:
o Giả sử chúng ta thực hiện trên 2 luồng:

9
Rút gọn các hàm (Reduction functions):
o Đây là cú pháp của định nghĩa rút gọn, sau đó có thể được sử dụng trong
nhiều mệnh đề rút gọn:

o identifier : là một cái tên.


o typelist : là danh sách các loại.
o combiner : là một biểu thức cập nhật biến nội bộ omp_out dưới dạng
hàm của chính nó và omp_in.
o initializer : đặt omp_priv thành danh tính của mức giảm.

10
Rút gọn các hàm (Reduction functions):
o Ví dụ:

11
References
1. Đỗ Thanh Nghị, Nguyễn Văn Hòa, Đỗ Hiệp Thuận (2014), Giáo trình lập trình
song song. NXB Trường ĐHCT. ISBN: 978-604-919-065-0
2. A. Grama, G. Karypis, V. Kumar and A. Gupta (2003), Introduction to Parallel
Computing. Addison Wesley. ISBN: 978-0201648652

You might also like