2012-02-29 23 views
11

Tôi nhận được một số dữ liệu từ thư viện trên máy chủ dưới dạng con trỏ tới một mảng. Làm thế nào để tạo một thiết bị có chứa dữ liệu này trên thiết bị?Lực đẩy: Cách tạo device_vector từ mảng máy chủ?

int* data; 
int num; 
get_data_from_library(&data, &num); 

thrust::device_vector<int> iVec; // How to construct this from data? 
+2

thể trùng lặp của [là có một cách nhanh hơn để sao chép từ bộ nhớ CPU để GPU sử dụng lực đẩy tốt hơn và?] (Http: // stackoverflow.com/questions/9373455/is-there-a-better-and-a-faster-way-to-copy-from-cpu-memory-to-gpu-using-thrust) – talonmies

Trả lời

12

Theo this answer, tất cả bạn cần là:

int* data; 
int num; 
get_data_from_library(&data, &num); 

thrust::device_vector<int> iVec(data, data+num); 
+0

Tài năng: Cảm ơn! Tôi không biết Thrust có thể phát hiện xem một con trỏ đã cho nằm trong máy chủ hay không gian thiết bị và hoạt động khi cần thiết. –

+3

@Ashwin: Không thể. Nếu bạn muốn truyền một con trỏ trong bộ nhớ thiết bị tới lực đẩy :: vector constructor, bạn cần sử dụng một lực đẩy :: device_ptr. Đó là cách thiết bị và con trỏ lưu trữ được phân biệt trong lực đẩy. – talonmies

+0

Tài năng: Nhưng, câu trả lời bạn đã đưa ra ở trên không sử dụng device_ptr và tôi đã thử nó và nó hoạt động tốt. –

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