2013-03-01 10 views

Trả lời

21

Một cuộc gọi đến

cudaFree(0); 

là cách kinh điển để buộc thành lập bối cảnh lười biếng trong thời gian chạy CUDA. Bạn không thể giảm chi phí, đó là một chức năng của trình điều khiển, thời gian chạy và thời gian chờ của hệ điều hành. Nhưng cuộc gọi ở trên sẽ cho phép bạn kiểm soát cách thức/khi các chi phí vượt quá đó xảy ra trong quá trình thực thi chương trình.

EDIT vào năm 2015 thêm rằng các chẩn đoán của khởi ngữ cảnh trong API runtime đã khéo léo thay đổi theo thời gian để cudaSetDevice tại thiết lập một bối cảnh, vì vậy cuộc gọi cudaFree() không cần rõ ràng để intialise một bối cảnh, bạn có thể sử dụng cudaSetDevice để thay thế. Cũng lưu ý rằng một số thời gian thiết lập sẽ vẫn được phát sinh khi khởi chạy hạt nhân đầu tiên, trong khi trước đây không phải như vậy. Đối với thời gian hạt nhân, tốt nhất là bao gồm một cuộc gọi khởi động trước trước khi khởi chạy hạt nhân, bạn sẽ có thời gian để loại bỏ độ trễ thiết lập này. Dường như các công cụ lược tả khác nhau có đủ độ chi tiết được tích hợp để tránh điều này mà không cần bất kỳ cuộc gọi API hoặc cuộc gọi hạt nhân nào khác.

+0

Chính xác! Nó nắm bắt tất cả thời gian khởi tạo! Cảm ơn! – szli