2015-07-27 26 views
7

Tài liệu CUDA không xác định số lượng quy trình CUDA có thể chia sẻ một GPU. Ví dụ: nếu tôi khởi chạy nhiều chương trình CUDA bởi cùng một người dùng chỉ với một thẻ GPU được cài đặt trong hệ thống, hiệu ứng đó là gì? Nó sẽ đảm bảo tính chính xác của việc thực hiện? Làm thế nào để các nhiệm vụ lịch trình GPU trong trường hợp này?Chạy nhiều ứng dụng CUDA trên một GPU

Trả lời

13

Hoạt động CUDA từ các quy trình lưu trữ độc lập thường sẽ tạo CUDA contexts độc lập, một cho mỗi quy trình. Do đó, hoạt động CUDA được khởi chạy từ các quá trình lưu trữ riêng biệt sẽ diễn ra trong các bối cảnh CUDA riêng biệt, trên cùng một thiết bị.

Hoạt động CUDA trong các ngữ cảnh riêng biệt sẽ được đăng theo thứ tự. GPU sẽ thực thi hoạt động từ một quá trình và khi hoạt động đó không hoạt động, nó có thể và sẽ chuyển ngữ cảnh sang ngữ cảnh khác để hoàn thành hoạt động CUDA được khởi chạy từ quá trình khác. Hành vi lập lịch liên vùng chi tiết không được chỉ định. (Chạy nhiều bối cảnh trên một GPU đơn lẻ cũng không thể vi phạm các giới hạn GPU cơ bản, chẳng hạn như khả năng bộ nhớ cho phân bổ thiết bị.)

Trường hợp này (serialization hoạt động GPU từ các quy trình host độc lập) sẽ là CUDA Máy chủ đa quy trình. Tóm lại, MPS hoạt động như một "kênh" để thu thập hoạt động CUDA phát ra từ một số quy trình lưu trữ và chạy hoạt động đó như thể nó phát ra từ một quy trình lưu trữ đơn lẻ. Lợi ích chính là tránh serialization of kernels which might otherwise be able to run concurrently. Trường hợp sử dụng hợp lý sẽ là để khởi chạy nhiều cấp bậc MPI mà tất cả đều có ý định sử dụng một tài nguyên GPU duy nhất.

Lưu ý rằng mô tả ở trên áp dụng cho các GPU nằm trong "Mặc định" compute mode. Các GPU trong chế độ tính toán "Exclusive Process" hoặc "Exclusive Thread" sẽ từ chối mọi nỗ lực tạo nhiều hơn một quy trình/ngữ cảnh trên một thiết bị duy nhất. Ở một trong các chế độ này, các nỗ lực của các quá trình khác để sử dụng một thiết bị đã được sử dụng sẽ dẫn đến một lỗi CUDA báo cáo lỗi. Chế độ tính toán có thể sửa đổi được trong một số trường hợp bằng cách sử dụng nvidia-smi utility.

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