सवाल यह है कि: क्या कुडा कर्नेल में कक्षा "वेक्टर" का उपयोग करने का कोई तरीका है? जब मैं कोशिश करता हूं तो मुझे निम्न त्रुटि मिलती है:सीयूडीए डिवाइस कोड में std :: वेक्टर का उपयोग
error : calling a host function("std::vector<int, std::allocator<int> > ::push_back") from a __device__/__global__ function not allowed
तो वैश्विक अनुभाग में वेक्टर का उपयोग करने का कोई तरीका है? मैं हाल ही में निम्नलिखित की कोशिश की:
- एक नया Cuda परियोजना
- परियोजना के गुणों के लिए जाना बनाने
- खुला Cuda C/C++
- डिवाइस के लिए "कोड में मूल्य जाना
- परिवर्तन पीढ़ी "को इस मान पर सेट किया जाना चाहिए: compute_20, sm_20
........ उसके बाद मैं इसका उपयोग करने में सक्षम था मेरे Cuda कर्नेल में printf मानक पुस्तकालय समारोह।
क्या मानक पुस्तकालय वर्ग vector
का उपयोग करने के लिए कोई तरीका है जिस तरह से printf कर्नेल कोड में समर्थित है?
// this code only to count the 3s in an array using Cuda
//private_count is an array to hold every thread's result separately
__global__ void countKernel(int *a, int length, int* private_count)
{
printf("%d\n",threadIdx.x); //it's print the thread id and it's working
// vector<int> y;
//y.push_back(0); is there a possibility to do this?
unsigned int offset = threadIdx.x * length;
int i = offset;
for(; i < offset + length; i++)
{
if(a[i] == 3)
{
private_count[threadIdx.x]++;
printf("%d ",a[i]);
}
}
}
+1 पूरी तरह से कानूनी प्रश्न (यकीन नहीं क्यों यह मतदान किया गया था। दुर्भाग्य से इस सवाल का जवाब वर्तमान में कोई है। – harrism