Cụ thể, vấn đề của tôi là tôi có mã CUDA cần <curand_kernel.h>
để chạy. Điều này không được bao gồm theo mặc định trong NVRTC. Có lẽ sau đó khi tạo ngữ cảnh chương trình (tức là cuộc gọi đến nvrtcCreateProgram
), tôi phải gửi tên của tệp (curand_kernel.h
) và cũng là mã nguồn của curand_kernel.h
? Tôi cảm thấy mình không nên làm vậy.Làm thế nào để bạn bao gồm các thư viện CUDA chuẩn để liên kết với mã NVRTC?
Thật khó để nói; Tôi đã không quản lý để tìm một ví dụ từ NVIDIA của một ai đó cần các tập tin CUDA tiêu chuẩn như thế này như là một nguồn, vì vậy tôi thực sự không hiểu cú pháp là gì. Một số vấn đề: curand_kernel.h
cũng đã bao gồm ... Tôi có phải làm tương tự cho mỗi điều này không? Tôi thậm chí không chắc chắn trình biên dịch NVRTC thậm chí sẽ chạy đúng trên curand_kernel.h
, bởi vì có một số tính năng ngôn ngữ mà nó không hỗ trợ, phải không?
Tiếp theo: nếu bạn đã gửi mã nguồn của tệp tiêu đề đến nvrtcCreateProgram
, tôi vẫn phải #include
mã trong mã sẽ được thực hiện/có gây ra lỗi nếu tôi làm như vậy không?
Một liên kết tới mã ví dụ thực hiện điều này hoặc thứ gì đó giống như nó sẽ được đánh giá cao hơn nhiều so với câu trả lời đơn giản; Tôi thực sự không tìm được bất kỳ thứ gì.
Hmmm. Vì vậy, tôi có một số suy nghĩ để làm về cách tôi thực hiện điều này. Pre-biên dịch mã có sử dụng curand vào PTX là không khả thi ... Pre-tạo phao trên CPU là không khả thi vì sẽ cần phải có cách quá nhiều ... Vì vậy, tôi còn lại với làm việc thông qua thư viện curand để có được những phần mà tôi cần để biên dịch bằng cách sử dụng NVRTC, và tìm một thực hiện khác của rand. Vì tất cả những gì tôi thực sự cần từ curand là PRNG thống nhất tiêu chuẩn từ 0 đến 1, tôi nghĩ giải pháp là tìm một PRNG khác dễ dàng hơn để biên dịch bằng NVRTC, cảm ơn! –
Hmm. Việc triển khai GPU của PRNG khó có thể thực hiện được. Có lẽ tôi sẽ phải thích ứng với CURAND bằng cách nào đó ... –
@BillySmith Giải pháp trực tiếp nhất là xây dựng một bộ đệm lớn và điền nó với rand() hoặc bên CPU tương tự, sau đó tải nó lên máy chủ. Giữ một biến chỉ mục cho biết giá trị nào là "tiếp theo" trong bộ đệm. Khi bạn nhấn vào cuối của bộ đệm, rửa sạch và lặp lại. –