Gom lô các luồng

Một phần của tài liệu Xây dựng thuật toán song song tìm đường đi ngắn nhất với CUDA báo cáo nghiên cứu khoa học sinh viên (Trang 34 - 36)

5. Bố cục đề tài

2.1.4.2.Gom lô các luồng

Lô các luồng thực hiện được nhân (kernel) tổ chức thành một lưới các khối luồng được miêu tả trong phần khối luồng và lưới các khối luồng dưới đây.

Khối luồng

Một khối luồng là một tập các luồng, có thể đồng thời xử lý với nhau bằng cách dùng dữ liệu trong bộ nhớ dùng chung và thực thi đồng bộ để phối hợp truy cập bộ nhớ.

Chính xác hơn, có thể xác định các điểm đồng bộ trong nhân, nơi các luồng trong khối sẽ dừng cho đến khi tất cả các luồng tới điểm đồng bộ.

Mỗi luồng được xác định bởi ID, đó là số hiệu của luồng trong khối. Để hỗ trợ việc định địa chỉ phức tạp dựa trên ID luồng, một ứng dụng cũng có thể chỉ định một khối như một mảng hai hoặc ba chiều có kích thước tùy ý và xác định từng luồng bằng cách sử dụng chỉ số hai hoặc ba thành phần để thay thế. Đối với các khối kích thước hai chiều (Dx, Dy), ID luồng của phần tử có chỉ số (x, y) là (x + y Dx) và cho một khối kích thước ba chiều (Dx, Dy, Dz), ID luồng của phần tử (x, y, z) là (x + yDx + z Dx Dy) [3].

Lƣới các khối luồng (Grid of Thread Blocks)

Hình 2.5: Khối luồng

Số lượng luồng tối đa trong một khối có giới hạn. Tuy nhiên, các khối cùng số chiều và kích thước thực thi trên cùng nhân có thể nhóm với nhau thành lưới các khối, do vậy tổng số luồng chạy trên một nhân là lớn hơn nhiều. Điều này xuất phát tại các chi phí

hợp tác giữa các luồng giảm, vì các luồng trong các lô khác nhau trong lưới không thể trao đổi và đồng bộ với nhau. Mô hình mô tả ở Hình 2.5, cho phép các nhân chạy hiệu quả mà không phải dịch lại trên các loại thiết bị khác nhau với khả năng chạy song song khác nhau: Một thiết bị có thể chạy trên tất cả khối của lưới một cách tuần tự nếu thiết bị đó có rất ít khả năng chạy song song hoặc chạy song song nếu nó có khả năng chạy song song nhiều hoặc kết hợp cả hai.

Mỗi khối được xác định bởi ID của nó, đó là số khối trong lưới. Để hỗ trợ việc định địa chỉ phức tạp dựa trên khối ID (block ID), một ứng dụng có thể xác định một lưới như một mảng hai chiều với kích thước cố định và định danh mỗi khối sử dụng chỉ mục hai thành phần. Với khối hai chiều kích thước (Dx, Dy), ID của khối (x,y) là (x + y Dx).

Một phần của tài liệu Xây dựng thuật toán song song tìm đường đi ngắn nhất với CUDA báo cáo nghiên cứu khoa học sinh viên (Trang 34 - 36)