2011-11-08 36 views
6

Câu hỏi của tôi không phải về GPGPU. Tôi hiểu GPGPU khá rõ ràng và đó không phải là những gì tôi đang tìm kiếm. Cầu cát của Intel được cho là một số tính năng cho phép bạn trực tiếp thực hiện các tính toán trên GPU.Đang tải mã lên GPU (Intel Sandy Bridge)

Điều đó có thực sự đúng không?

Mã tôi đang lập kế hoạch viết sẽ được lắp ráp nội tuyến (trong C). Có hướng dẫn lắp ráp thay vì thực thi trên công cụ đẩy CPU ra ngoài GPU không?

Một số tài liệu liên quan:

PDF có các tập lệnh.

Trả lời

2

Trả lời câu hỏi đầu tiên của bạn: Không, điều đó không đúng.

Hãy để tôi trích dẫn từ các nguồn lực bạn đã liên kết:

Các Processing Unit Graphics được điều khiển bởi CPU thông qua một giao diện trực tiếp của bộ nhớ ánh xạ IO đăng ký, và gián tiếp bằng cách phân tích các lệnh mà CPU có được đặt trong bộ nhớ. (Chương 2.2 từ hướng dẫn sử dụng GPU của SB)

Vì vậy, không thực thi trực tiếp mã GPU trong bối cảnh CPU.

Đối với câu hỏi thứ hai của bạn: "Đẩy nội dung vào GPU" được thực hiện bằng lệnh mov. Target là một bản ghi IO được ánh xạ (mem-mapping), cung cấp cho bạn những thứ bạn muốn viết. Bạn có thể cần phải chèn một số "sfence" hoặc hướng dẫn tương tự để đảm bảo không có sắp xếp lại bộ nhớ yếu nào xảy ra.

+0

Điều này nghe có vẻ cực kỳ ngu ngốc, nhưng phần mà bạn đã trích dẫn, trong đó bạn đã tìm thấy thủ công? Vì vậy, tôi đoán những gì tôi cần làm là thực sự "đặt những lệnh trong bộ nhớ" thông qua CPU (?) – user813182

+0

Tập 1, Phần 1 - đầu tiên trên trang bạn đã liên kết. Bạn sử dụng CPU để đặt mã GPU mà bạn muốn thực hiện ở đâu đó trong bộ nhớ. Hầu như giống như việc nạp một chương trình thực thi cho CPU. – hirschhornsalz

3

Tôi không tin rằng bộ hướng dẫn chi tiết trong tệp PDF bạn đã liên kết có thể được sử dụng trực tiếp từ "không gian người dùng". Đó là điều mà trình điều khiển GPU trên hệ điều hành của bạn có thể * sử dụng để triển khai các giao diện cấp cao hơn như OpenGL và DirectX.

Đối với những gì đáng giá, GPU Sandy Bridge khá yếu. Nó không hỗ trợ OpenCL **, là một thư viện GPGPU chuẩn được hỗ trợ bởi ATI/nVidia. Tôi muốn khuyên bạn nên lập trình cho thư viện đó (trên phần cứng hỗ trợ nó), vì nó dễ di chuyển hơn (và dễ sử dụng hơn) hơn là cố gắng lập trình cho giao diện trần kim loại mà bạn đang xem.


*: Có thể, mặc dù không chắc, có giao diện khác với giao diện được sử dụng trong trình điều khiển nguồn đóng của Intel.

**: Không giống với OpenGL, mặc dù nó được thiết kế bởi cùng một nhóm.

+0

bạn thấy SNB GPU hỗ trợ OpenCL ở đâu? – Bahbar

+0

Sai lầm của tôi; nó không. Đã sửa. – duskwuff

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