struct Point
{
int x;
int y;
float val;
}
我打算用這個結構來表示稀疏矩陣的結構(我CUSPARSE,牙尖的認識 但我只打算使用 推力進行一些測試)並使用推力算法執行操作。
從我在CUDA編程教程中學到的東西,總是建議使用 數組結構而不是結構數組來更好地結合內存。
如果是這種情況,那麼如果使用上述結構在device_vector中存儲非零值(以數百萬的數量級),該device_vector在處理推力算法時會使用GPU內部的未對齊內存訪問嗎?
我問這個,因爲我可能需要訪問此 device_vector中的不規則步幅,並通過傳遞多個 函數對象來執行算法操作。
它會像定製內核一樣高效地運行在數組結構上嗎?
謝謝。
我同意所有這些,特別是對於自定義的kernes,但是對於推力的具體使用,我懷疑只需使用三個設備矢量(或者可以是座標的矢量/矢量/數據矢量)將會更簡單和更容易。 – talonmies
對不起,我錯過了關於Thrust的部分。編輯我的答案以涵蓋該案例。請注意,如果您受到帶寬限制,則使用小型結構,然後編寫自定義函子以在Thrust中對其進行操作可能仍然更有效。 – harrism
@harrism ...謝謝我最終使用__align__運算符,同時定義我的struct.Will是否有效,如果我在推力內使用它? – Recker