2010-07-29 4 views

Trả lời

4

Tùy thuộc vào những gì bạn gọi là chia sẻ.

Nói chung, bạn có thể tạo 2 quy trình vừa tạo ra thiết bị OpenCL, trên cùng một GPU. Đó là trách nhiệm của trình điều khiển/HĐH/GPU để đảm bảo mọi thứ hoạt động.

Điều đó nói rằng, hầu hết các triển khai sẽ cắt lát thời gian thực thi GPU để thực hiện điều đó (giống như nó xảy ra với đồ họa).

Tôi cảm thấy đây không phải là chính xác những gì bạn đang làm. Bạn có thể mở rộng câu hỏi của mình bằng một ca sử dụng không?

+0

Trường hợp sử dụng sẽ là một quá trình sử dụng OpenCL để sử dụng GPU trong một khoảng thời gian dài. Nếu một quy trình OpenCL khác cũng yêu cầu GPU được khởi chạy thì cách xử lý này như thế nào? Câu trả lời của bạn cho thấy rằng trình điều khiển sẽ cắt lát thời gian, tức là phân bổ toàn bộ GPU cho một quá trình tại bất kỳ thời điểm nào. Chắc chắn điều này là không hiệu quả, cho rằng dữ liệu liên kết với mỗi quá trình phải được sao chép ngược và chuyển tiếp giữa thiết bị và máy chủ? – Chris

+0

@ Chris: câu trả lời ngắn gọn là không phải tất cả dữ liệu cần được sao chép. việc thực hiện được cắt lát theo thời gian, nhưng bộ nhớ có thể được chia sẻ, nếu cả hai đều vừa trên thẻ (bộ nhớ được "ảo hóa". Xem URL bên dưới). Nếu nó _not_ phù hợp, sau đó nó sẽ sao chép dữ liệu xung quanh cho chắc chắn. Độ chi tiết của thời gian cắt cũng quá thô. Giả sử chúng ta đang nói về các cửa sổ, trong WDDM 1.1, một hoạt động hạt nhân CL không bao giờ bị gián đoạn và hơn thế nữa. Xem http://en.wikipedia.org/wiki/Windows_Display_Driver_Model để biết thêm thông tin. – Bahbar

+0

Cụ thể: http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/PRI103_WH06.ppt – Bahbar

4

GPU hiện tại (trừ Fermi của NVidia) không hỗ trợ thực thi đồng thời nhiều hơn một hạt nhân. Hơn nữa, đến ngày này, GPU không hỗ trợ đa nhiệm ưu tiên; nó hoàn toàn hợp tác! Việc thực thi của hạt nhân không thể bị đình chỉ và tiếp tục sau này. Vì vậy, mức độ chi tiết của bất kỳ chia sẻ GPU dựa trên thời gian nào phụ thuộc vào thời gian thực hiện của hạt nhân.

Nếu bạn có nhiều chương trình đang chạy yêu cầu truy cập GPU, bạn nên đảm bảo rằng hạt nhân của bạn có thời gian chạy ngắn (< 100ms là quy tắc), do đó thời gian GPU có thể được tính trong số các hạt nhân muốn có chu kỳ GPU . Nó cũng quan trọng để làm điều đó vì nếu không đồ họa của hệ thống máy chủ sẽ trở nên rất không phản hồi khi chúng cần truy cập GPU. Điều này có thể đi xa đến mức một hạt nhân trong một vòng lặp vô tận hoặc dài sẽ làm hỏng hệ thống.