我知道在CUDA內核中沒有辦法使用std類,如字符串,向量,映射或集合。但是,沒有它們是非常不舒服的。我必須在CUDA內核中編寫大量代碼,所以我想至少使用字符串和向量。我不是在談論推力。我希望能夠寫出這樣的事:CUDA內核中的STD類
__global__ void kernel()
{
cuda_vector<int> a;
for(int i=0;i<10;i++)
a.push_back(i);
}
int main()
{
kernel<<<1,512>>>();
return 0;
}
這將創建512個線程以及每個線程我想創建cuda_vector類,並把它作爲標準::向量。我在互聯網上沒有找到任何解決方案,我開始寫自己的課程。這個類的每個函數都被定義爲「__ host __」和「__ device __」函數,以便我可以在CPU和GPU上使用它。 理論上,它可以實現,但只能在費米架構上實現。因爲,我們需要動態分配內存。我有GTX 580,並開始寫我自己的矢量。但這很累人,需要很多時間。沒有我可以使用的任何實現嗎?我無法相信沒有任何東西。沒有它,很多軟件開發人員在CUDA上編寫代碼嗎?沒有人試圖寫他/她自己的版本?
只要知道這樣的事情對於表現並不會很好。閱讀Cuda C編程指南和最佳實踐指南,您將理解爲什麼。 – jmsu
我明白這一點。但是,我很少需要字符串和向量。我的意思是,在計算密集的部分,我不必使用它們。所以,它不會影響性能太多。 –