2011-08-29 28 views
7

Tôi hiện đang có một mảng lớn các phao mà tôi xử lý trong hạt nhân OpenCL của tôi, tôi tự hỏi liệu tôi có phân chia mảng này và sử dụng mảng kiểu véc tơ OpenCL thay thế không, nếu nó tăng tốc quá trình. Về cơ bản nếu tôi có một mảng 4.800 float, tôi sẽ chia nó thành một mảng gồm 300 vectơ float16. Điều này có lợi dụng SIMD không?Làm các loại véc tơ OpenCL sử dụng SIMD

+2

OpenCL đã tận dụng được các tính năng SIMD của phần cứng cơ bản hoặc nó sẽ khá vô dụng đối với lập trình GPU. Tôi không chắc chắn những gì nó làm trên CPU mặc dù, mặc dù CPU không phải là tên miền hoàn hảo của OpenCL để chơi thế mạnh của nó, anyway. –

Trả lời

7

Intel thực sự mô tả SDK OpenCL của họ làm gì: xem Writing Optimal OpenCL™ Code with Intel® OpenCL SDK. Bạn có thể muốn kiểm tra điều đó, như là một bổ sung cho điểm chuẩn. Phần thú vị bắt đầu ở chương 2.3.

Để trả lời câu hỏi của bạn: có, nó sẽ tận dụng SIMD. Nhưng để "tối đa hóa việc sử dụng các đơn vị vector CPU bằng cách sử dụng các kiểu dữ liệu vectơ", bạn thực sự nên đọc tài liệu đó.

0

Có thể, hoặc có thể không. Nó phụ thuộc vào việc thực hiện OpenCL và phần cứng mà chương trình của bạn thực thi.

Cách duy nhất để xem liệu nó có cải thiện hay không là chuẩn trên nền tảng và triển khai quan tâm - cho phạm vi kích thước vectơ (ví dụ: so sánh 1 (vô hướng), 2, 4, 8 và 16).

Các vấn đề liên quan