簡體   English   中英

CUDA:我如何將主機存儲的向量傳遞給Device端int數組?

[英]CUDA: How would I pass a host stored vector to a Device side int array?

我目前正在與CUDA合作處理坐標列表。 因此,我正在從文本文件中讀取坐標到主機,並將這些坐標傳遞到GPU上的數組中。

不幸的是,我不知道每個文本文件中包含多少坐標。 因此,我使用向量來存儲坐標主機端 - 因為無法動態分配非向量數組大小。

因為聲明設備變量是動態完成的,我想知道是否有一種方法可以將主機向量的值傳遞到設備端浮點數組中?

從向量傳遞數據可以與數組相同的方式完成。 std :: vector中的值存儲在連續的內存中。

假設STL向量存儲始終是連續的是否安全?

作為旁注,我接觸過的大多數科學存儲方法都會預先確定它們的坐標數量。 如果你創建這個文件,我強烈建議這樣做,因為它比使用std :: vector更快,它必須在容量增長時動態地重新分配和復制內存。

正如Christian Sarofeen提到的那樣,您可以直接訪問原始vector數據,更多信息請點擊此處 如果您使用的是C ++ 11,最好的方法是使用data()函數來實現此目的。

另一方面,我對你的這句話感到有些驚訝:

因為非向量數組大小不能動態分配

我不同意,這應該對你有用:

int x;
cin >> x;
int* dynamicArray = new int[x];
// Do computations on dynamicArray,
// possibly copy to GPU memory.
// Then deallocate.
delete [] dynamicArray;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM