2012-08-22 26 views
9

Tôi đang nhầm lẫn về số lượng chủ đề tối đa có thể được khởi chạy trong GPU Fermi.Số lượng chủ đề tối đa có thể được khởi tạo trong một hạt nhân CUDA đơn lẻ

Truy vấn thiết bị GTX 570 của tôi cho biết như sau.

Maximum number of threads per block:   1024 
    Maximum sizes of each dimension of a block: 1024 x 1024 x 64 
    Maximum sizes of each dimension of a grid:  65535 x 65535 x 65535 

Từ sự hiểu biết của tôi, tôi hiểu được những tuyên bố trên như:

Đối với một hạt nhân CUDA chúng ta có thể khởi động ở hầu hết 65.536 khối. Mỗi khối được khởi chạy có thể chứa tối đa 1024 luồng. Do đó về nguyên tắc, tôi có thể khởi động lên đến 65536 * 1024 (= 67108864) chủ đề.

Điều này có đúng không? Nếu chủ đề của tôi sử dụng sổ đăng ký nhiều thì sao? Liệu chúng ta vẫn có thể đạt được tối đa lý thuyết này về số lượng các chủ đề?

Sau khi viết và khởi chạy hạt nhân CUDA, làm cách nào để biết số lượng chuỗi và chuỗi mà tôi đã khởi chạy có thực sự được khởi tạo. Tôi có nghĩa là tôi không muốn GPU để tính toán một số rác, hoặc cư xử kỳ lạ, nếu tôi có cơ hội instantiated đề nhiều hơn là có thể cho rằng hạt nhân cụ thể.

+0

Điều này có thể giúp bạn: http://stackoverflow.com/questions/2392250/understanding-cuda-grid-dimensions-block-dimensions-and-threads-organization-s – user1154664

Trả lời

17

Đối với hạt nhân CUDA, chúng tôi có thể khởi chạy tối đa 65536 khối. Mỗi khối được khởi chạy có thể chứa tối đa 1024 luồng. Do đó về nguyên tắc, tôi có thể khởi chạy các chủ đề lên đến 65536 * 1024 (= 67108864).

Không có điều này là không chính xác. Bạn có thể khởi chạy một mạng lưới có kích thước lên đến 65535 x 65535 x 65535 khối và mỗi khối có tối đa 1024 luồng trên mỗi khối, mặc dù giới hạn tài nguyên của chuỗi có thể hạn chế tổng số chuỗi trên mỗi khối nhỏ hơn mức tối đa này.

Nếu chủ đề của tôi sử dụng sổ đăng ký nhiều thì sao? Liệu chúng tôi vẫn có thể đạt được số lượng chủ đề tối đa về mặt số lượng chủ đề của số lượng chủ đề này là ?

Không, bạn sẽ không thể đạt đến chuỗi tối đa cho mỗi khối trong trường hợp này. Mỗi bản phát hành bộ công cụ NVIDIA CUDA bao gồm bảng tính tính khả dụng mà bạn có thể sử dụng để xem hiệu ứng của áp suất đăng ký trên kích thước khối giới hạn.

Ngoài ra, sau khi viết và tung ra các hạt nhân CUDA, làm thế nào để tôi biết rằng số lượng bài và khối mà tôi đã đưa ra đã thực sự được khởi tạo. Tôi có nghĩa là tôi không muốn GPU để tính toán một số rác, hoặc behace weirdly, nếu tôi có cơ hội instantiated đề nhiều hơn là có thể cho rằng hạt nhân cụ thể.

Nếu bạn chọn cấu hình thực thi bất hợp pháp (vì vậy kích thước khối hoặc kích thước lưới không chính xác) hạt nhân sẽ không khởi chạy và thời gian chạy sẽ phát ra thông báo lỗi cudaErrorInvalidConfiguration. Bạn có thể sử dụng tiêu chuẩn cudaPeekAtLastError()cudaGetLastError() để kiểm tra trạng thái của bất kỳ khởi chạy hạt nhân nào.

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