2012-10-01 17 views
9

Tôi có một ứng dụng mà tôi muốn chia sẻ một GPU giữa nhiều quy trình. Tức là, mỗi quá trình này sẽ tạo ra bối cảnh CUDA hoặc OpenCL của riêng mình, nhắm mục tiêu cùng một GPU. Theo giấy trắng Fermi [1], việc chuyển đổi bối cảnh ở cấp ứng dụng nhỏ hơn 25 micro giây, nhưng các lần khởi chạy được tuần tự hóa một cách hiệu quả khi chúng khởi chạy trên GPU - vì vậy Fermi sẽ không hoạt động tốt cho điều này. Theo giấy trắng Kepler [2], có một cái gì đó gọi là Hyper-Q cho phép lên tới 32 kết nối đồng thời từ nhiều luồng CUDA, các quá trình MPI hoặc các luồng trong một tiến trình.Thực hiện hạt nhân GPU đồng thời từ nhiều quá trình

Câu hỏi của tôi: Có ai đã thử điều này trên GPU Kepler và xác minh rằng hạt nhân của nó được chạy đồng thời khi được lên lịch từ các quy trình riêng biệt? Đây có phải chỉ là một tính năng của CUDA hay nó cũng có thể được sử dụng với OpenCL trên GPU Nvidia? GPU của AMD có hỗ trợ tương tự không?

[1] http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf

[2] http://www.nvidia.com/content/PDF/kepler/NVIDIA-Kepler-GK110-Architecture-Whitepaper.pdf

+2

Trong câu trả lời cho câu hỏi đầu tiên bạn đặt ra, nvidia đã xuất bản một số kết quả siêu Q trong một blog [ở đây] (http://blogs.nvidia.com/2012/08/unleash-legacy-mpi-codes-with -keplers-hyper-q /). –

+0

Thú vị, cảm ơn liên kết. Bài đăng trên blog đó cũng ngụ ý rằng các GPU K10 không có Hyper-Q, trong khi K20 sẽ có. –

+0

Đúng vậy. Bạn sẽ lưu ý liên kết giấy trắng Kepler bạn đã đăng tham chiếu "GK110" trong tiêu đề. GPU trên K20 là GK110. GPU trên K10 là GK104 (hai trong số đó). –

Trả lời

7

Đáp lại câu hỏi đầu tiên, NVIDIA đã công bố một số kết quả siêu-Q trong một blog here. Blog chỉ ra rằng các nhà phát triển đang chuyển CP2K đã có thể tăng tốc kết quả nhanh hơn vì hyper-Q cho phép họ sử dụng cấu trúc MPI của ứng dụng nhiều hơn hoặc ít hơn và chạy nhiều cấp bậc trên một GPU duy nhất và sử dụng GPU hiệu quả cao hơn theo cách đó. Như đã đề cập trong các ý kiến, tính năng này (hyper-Q) chỉ có sẵn trên bộ vi xử lý K20, vì nó phụ thuộc vào GPU GK110.

+0

Cảm ơn Robert, đó là điều tốt cho câu hỏi đầu tiên, và tôi đoán tôi sẽ phải tiếp tục tìm kiếm những người khác. –

-2

Tôi đã chạy hạt nhân đồng thời từ kiến ​​trúc Fermi nó hoạt động tuyệt vời và trên thực tế, thường là cách duy nhất để có được sức chứa cao từ phần cứng của bạn. Tôi đã sử dụng OpenCL và bạn cần chạy một hàng đợi lệnh riêng biệt từ một chuỗi cpu riêng biệt để thực hiện việc này. Hyper-Q là khả năng gửi các hạt nhân song song dữ liệu mới từ bên trong một hạt nhân khác. Đây chỉ là trên Kepler.