Câu trả lời ngắn gọn là ở đây không có giải pháp cho vấn đề đó.
Mọi thứ thường chạy trên CPU phải được điều chỉnh cho môi trường CUDA mà không có bất kỳ đảm bảo nào thậm chí có thể thực hiện được. Các chức năng của máy chủ chỉ là một tên khác trong CUDA cho các hàm C bình thường. Đó là, các chức năng chạy trên kiến trúc Von Neumann của bộ nhớ CPU giống như tất cả C/C++ đã được tính đến thời điểm này trong PC. GPU cung cấp cho bạn một lượng lớn sức mạnh tính toán nhưng chi phí là nó không gần như linh hoạt hoặc tương thích. Quan trọng nhất, các chức năng chạy mà không có khả năng truy cập bộ nhớ chính và bộ nhớ mà chúng có thể truy cập bị hạn chế.
Nếu những gì bạn đang cố gắng có được là một trình tạo số ngẫu nhiên, bạn đang gặp may khi Nvidia gặp rắc rối khi triển khai Mersenne Twister hiệu quả cao có thể hỗ trợ tới 256 luồng trên mỗi SMP. Nó có thể gọi bên trong một chức năng thiết bị, được mô tả trong một bài viết trước đây của tôi here. Nếu bất kỳ ai tìm thấy liên kết tốt hơn mô tả chức năng này, hãy xóa tên của tôi và thay thế văn bản thích hợp tại đây cùng với liên kết.
Một điều tôi liên tục ngạc nhiên là có bao nhiêu lập trình viên dường như không biết làm thế nào các máy phát số giả ngẫu nhiên chuẩn hóa chất lượng cao. "Lăn riêng của bạn" thực sự không phải là một ý tưởng hay khi xem xét bao nhiêu số giả ngẫu nhiên nghệ thuật. Kiểm tra một máy phát điện như cung cấp số lượng chấp nhận được không thể đoán trước mất rất nhiều công việc và tài năng học tập ...
Hạ cấp hiệu suất trong khi gọi chức năng lưu trữ thay vì sử dụng chức năng tích hợp sẵn trong cuda? – Mattia
Điều này có nghĩa là máy chủ và thiết bị sẽ chỉ thực thi các bản sao chức năng tương ứng của riêng chúng? – avgvstvs