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
7
A
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
- 1. Chỉ định loại véc tơ có chuỗi
- 2. Bạn có thể sử dụng glVertexAttribPointer để gán một véc tơ nhỏ hơn cho một véc tơ lớn hơn không?
- 3. Lấy chỉ mục của các giá trị của một véc tơ trong một véc tơ khác?
- 4. Xóa véc tơ của con trỏ
- 5. Tại sao yêu cầu một véc tơ?
- 6. Đặt hàng hóa véc tơ trong R
- 7. Tôi có thể sử dụng value_type trên một thể hiện của các véc tơ, không theo loại
- 8. C++ véc tơ ra khỏi bộ nhớ
- 9. Sử dụng next_permutation để hoán vị một véc tơ của các lớp
- 10. Cư trú NA trong một véc tơ sử dụng các giá trị phi NA trước đó?
- 11. Làm thế nào tôi có thể nhận được một loại véc tơ trong C#?
- 12. Nhân bản véc tơ trong R
- 13. Đặt véc tơ bằng cách sử dụng vectơ boolean khác trong R
- 14. Tạo một véc tơ mới bằng cách sử dụng một biến đổi
- 15. Lỗi phân đoạn Matlab khi chuyển giao véc-tơ
- 16. Clojure: trả lại véc tơ từ chức năng ẩn danh
- 17. Có vectơ weak_ptr, muốn trả về véc tơ của shared_ptr
- 18. Hiển thị đồ họa véc tơ trong một trình duyệt
- 19. Tạo một véc tơ có độ dài không đổi
- 20. Sắp xếp một véc tơ theo thứ tự giảm dần
- 21. Cách hiệu quả nhất để đặt véc tơ vectơ
- 22. OpenCV - Chuyển đổi vectơ của véc tơ thành Mat
- 23. Nhu cầu chuẩn hóa véc tơ là gì?
- 24. Chuyển đổi ma trận MATLAB thành một véc tơ
- 25. Làm cách nào để kiểm tra xem một véc tơ có phải là tập hợp con của một véc tơ khác không?
- 26. R: ma trận của phép nhân véc tơ
- 27. Phân bổ bộ nhớ cho một véc tơ
- 28. hoạt động yếu tố khôn ngoan với các loại véc tơ và vector vectơ boost C++ ublas
- 29. Bảng tra cứu sử dụng SIMD
- 30. Cách truyền véc tơ của shared_ptrs của một lớp dẫn xuất đến một véc tơ của share_ptrs của một lớp cơ sở
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. –