Hi, I am

Ngô Tôn

I am a programmer.

Home / HCMUS / Parallel Programming on a GPU / Cộng các phần tử trong mảng – Lập trình song song trên GPU bằng CUDA

Cộng các phần tử trong mảng – Lập trình song song trên GPU bằng CUDA

Bài viết tiếp theo trong chuỗi bài viết về Lập trình song song trên GPU bằng CUDA.

Chúng ta đã tìm hiểu cách thực thi song song 2 bài toán cơ bản là Cộng 2 vectorNhân 2 ma trận ở các bài viết trước

Trong bài này, húng ta sẽ cài đặt thuật toán Cộng các phần tử trong mảng  hay có một tên gọi khác là Reduction trên CPU và GPU. Sau đó, chúng ta sẽ so sánh tốc độ thực thi trên một số cấu hình khác nhau.

Nội dung

Kích thước mảng: 2^13 + 1

Phát sinh ngẫu nhiên giá trị của các phần tử đầu vào trong [0, 1]

So sánh thời gian chạy với các kích thước block khác nhau

Thực hiện

Chúng ta cùng xem lại thuật toán tính tổng các phần tử trong mảng nào.

Vậy chúng ta sẽ song song hóa như thế nào?

Nhận thấy kết quả của tổng sẽ được cộng dồn sau mỗi bước nhảy, chúng ta thử chia đôi mảng ra và thực hiện cộng 2 phần lại xem sao

Ta áp dụng với CUDA tương tự bằng việc sử dụng thread để đảm nhiệm phần tử tương ứng.

Các bạn chú ý, chúng ta cần phải đợi có kết quả trước để dùng tính tổng cho kết quả sau nên chúng ta sẽ phải đồng bộ bằng cách dùng __syncthreads()

Ở bài viết sau, chúng ta sẽ tối ưu lại việc sử dụng thread cũng như block một cách hiệu quả để tránh bị phân kỳ (một trong những vấn đề khi lập trình song song trên GPU với CUDA)

About ngoton

Ngô Tôn is a programmer with passion for tailored software solutions. Comes with 7+ years of IT experience, to execute beautiful front-end experiences with secure and robust back-end solutions.

Check Also

Cộng 2 vector – Lập trình song song trên GPU bằng CUDA

Mục lục Nội dungThực hiệnKết quả Bài viết đầu tiên trong chuỗi bài viết về …

Leave a Reply

avatar
  Subscribe  
Notify of