Khi tôi hiểu chính xác các thiết bị khả năng tính toán 2.x có giới hạn đăng ký là 63 cho mỗi chủ đề. Bạn có biết giới hạn đăng ký cho mỗi luồng cho các thiết bị có khả năng tính toán 1.3 không?Đăng ký Cuda cho mỗi chủ đề
Tôi có một hạt nhân lớn mà tôi đang thử nghiệm trên GTX260. Tôi khá chắc chắn tôi đang sử dụng rất nhiều thanh ghi kể từ khi hạt nhân là rất phức tạp và tôi cần rất nhiều biến địa phương. Theo hồ sơ Cuda, đăng ký sử dụng của tôi là 63 (Static Smem là 68 mặc dù tôi không chắc chắn điều đó nghĩa là gì và Smem động là 0), mặc dù tôi khá chắc rằng tôi có hơn 63 biến cục bộ, vì vậy tôi đã tìm ra trình biên dịch đang sử dụng lại thanh ghi hoặc chèn chúng vào bộ nhớ cục bộ.
Bây giờ tôi nghĩ các thiết bị có khả năng tính toán 1.3 có giới hạn đăng ký trên mỗi luồng cao hơn so với các thiết bị 2.x. Dự đoán của tôi là trình biên dịch đã chọn giới hạn 63 vì tôi đang sử dụng khối 256 chủ đề trong trường hợp 256 * 63 là 16128 trong khi 256 * 64 là 16384 là số lượng đăng ký cho SM của thiết bị này. Vì vậy, tôi đoán là nếu tôi giảm số lượng các chủ đề cho mỗi khối tôi có thể tăng số lượng đăng ký sử dụng. Vì vậy, tôi chạy hạt nhân với các khối của 196 chủ đề. Nhưng một lần nữa profiler cho thấy 63 đăng ký mặc dù 63 * 192 là 12096 và 64 * 192 là 12288 là cách bên trong giới hạn 16384 của SM.
Vì vậy, bất kỳ ý tưởng nào tại sao trình biên dịch tự giới hạn đến 63 đăng ký? Nó có thể là tất cả vì đăng ký tái sử dụng hoặc là nó vẫn tràn đăng ký?
Câu trả lời có thể cho phần đầu tiên của câu hỏi của bạn là [ở đây] (http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#features-technical-specifications.xml) – talonmies
Vâng tôi đã nhìn vào điều đó trước đó. Trong bảng nó nói "Số lượng đăng ký 32 bit trên mỗi bộ xử lý" là 16K nhưng những gì tôi cần là số lượng đăng ký tối đa được phép ** cho mỗi luồng ** mà không được chỉ định ở đó. Tôi biết rằng đối với các thiết bị 2.x giới hạn là 63 nhưng có giới hạn cho 1.3 không? – Atirag
Tiếp tục tìm kiếm, mỗi số chủ đề nằm ngay bên dưới – talonmies