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 cao với bộ xử lý đồ họa GPU và ứng dụng (Trang 37)

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

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 khối luồng (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), ID của block (x,y)là (x + y Dx).

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