2012-07-13 16 views
8

Đối với một hạt nhân đã cho, tại sao các nhóm làm việc luôn có cùng kích thước? Tôi đọc ở đâu đó (trong trường hợp chúng ta không chỉ định kích thước công việc cục bộ) mà openCL tạo ra 3 nhóm làm việc (mỗi 217 mục công việc) cho kernel với 651 mục công việc (chia hết cho 3) trong khi tạo 653 các nhóm công việc gồm 1 mục công việc, vì 653 là số nguyên tố.Kích cỡ nhóm công việc

Giả sử chúng tôi chỉ định local_work_size (nghĩa là số lượng mục công việc trong nhóm công việc), giả sử, 5. Và chúng tôi đã đưa ra tổng số work-items (global_work_size) như 9. Các nhóm công việc sẽ được tạo ra như thế nào? đó là lý do tại sao global_work_size phải là bội số của local_work_size? Nếu dữ liệu chỉ yêu cầu 9 mục công việc, làm cách nào để tăng dữ liệu lên 10 (nhiều địa phương trong số local_work_size, 5)?

Tại sao máy chủ không thể cấp phát bộ nhớ cho mảng kết quả nếu nó không biết có bao nhiêu nhóm công việc sẽ thực thi hạt nhân?

Vui lòng trợ giúp. Tôi đọc tất cả điều này về điều này: http://www.openclblog.com/2011/09/work-group-sizes.html

Trả lời

6

OpenCL Kích thước nhóm làm việc không cần phải luôn luôn có cùng kích thước. Kích thước nhóm làm việc toàn cầu thường liên quan đến kích thước vấn đề. Local Work Group Size được chọn dựa trên việc tối đa hóa thông lượng của Đơn vị tính toán và số lượng các chuỗi cần chia sẻ Bộ nhớ cục bộ.

Hãy xem xét một vài ví dụ;

A) Chia tỷ lệ hình ảnh từ N by M thành X theo Y.

B) Tổng số N.

Đối với A)

Kích thước nhóm làm việc toàn cầu rõ ràng là X, Y, 1. Tại sao? Điều này cho phép 1 chuỗi trên mỗi pixel. Kích thước Nhóm làm việc cục bộ phải được chọn dựa trên số lượng pixel đầu vào cần được xử lý để tạo ra một pixel đầu ra.

Ví dụ:

A.1) Chia tỷ lệ hình ảnh từ 4K xuống 3.2K thành 64. 64 Kích thước GWG [64,64,1] Kích thước LWG 256 A.2) Quy mô hình ảnh từ 4k x 3,2k đến 800 theo 600 .GWG Kích [800,60,1] LWG Kích 256

Đối với B)

rõ ràng Nhóm làm việc toàn cầu Kích thước là N/2,1,1, Tại sao? Vì vậy, mỗi chuỗi bắt đầu bằng cách cộng 2 giá trị với nhau. Nhóm làm việc cục bộ sẽ được đặt thành thiết bị tối đa.

Có một số cảnh báo;

1) Kích thước nhóm làm việc toàn cầu bị hạn chế bởi Kích thước bộ nhớ chung và kích thước Phân bổ bộ nhớ tối đa toàn cầu.

2) Mỗi ​​thiết bị có kích thước nhóm Công việc địa phương tối đa thường là 256

+0

Cảm ơn bạn Tim !! Cảm ơn bạn đã trả lời. :) Vì vậy, kích thước GWG Không phải là một bội số của kích thước LWG ?? – Remy

+0

Để làm rõ có, kích thước LWG phải là mukltiple hoặc null. Từ trang Man http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/ –

+0

Cảm ơn bạn rất nhiều. :) – Remy