Gom lô các luồng (Thread Batching)

Một phần của tài liệu tính toán hiệu năng với bộ xử lý đồ họa GPU và ứng dụng (Trang 39)

Lô các luồng thực hiện được nhân 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.

2.2.2.1. Khi lung

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ự 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ợ

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ố 2 hoặc 3 thành phần để thay thế. Đối với các khối kích thước 2 chiều(Dx, Dy), thread ID 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), thread ID của phần tử (x, y, z) là (x + yDx + z Dx Dy).

2.2.2.2. Lưới các khi lung (Grid of Thread Blocks)

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 này 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 nó 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 block ID, một ứng dụng có thể xác định một lưới như một mảng 2 chiều với kích thước cố định và định danh mỗi khối sử dụng chỉ mục 2 thành phần. Với khối 2 chiều kích thước (Dx, Dy), block ID của block (x,y)là (x + y Dx).

Hình 16: Khối luồng

Một phần của tài liệu tính toán hiệu năng với bộ xử lý đồ họa GPU và ứng dụng (Trang 39)