2013-11-29 50 views
0

我是CUDA和推力的新手,我從谷歌代碼下載了GPU BVH構建代碼。但代碼是在CUDA的舊版本和推力下編寫的。現在,我正在使用推力爲1.7的最新CUDA 5.5。看來,derefrence功能已被否決,所以我不知道我怎麼可以重寫下面的代碼在最新的CUDA,並提前推力哪些函數可以代替棄用的函數推力::詳細:: backend :: dereference在推力1.7

typename std::iterator_traits<Output_iterator>::value_type value = def_value; 
for (uint32 i = begin; i < end; ++i) 
    value = op(value, thrust::detail::backend::dereference(in_values + i)); 
thrust::detail::backend::dereference(out_values, leaf_id) = value; 

謝謝!

+0

什麼in_values和out_values? – inf

回答

1

你應該能夠只是解引用迭代器直接與較新版本的推力:

typename std::iterator_traits<Output_iterator>::value_type value = def_value; for (uint32 i = begin; i < end; ++i) value = op(value, in_values[i] ); out_values[leaf_id] = value;

1

可能最簡單的解決方案是從GitHub下載您需要的Thrust版本並直接編譯。

使用推力的內部函數不是一個好主意。 API不應該沒有充分理由地改變,但內部可能隨時改變。

+1

問題似乎是他試圖從Thrust的內部實現中構建使用功能的庫,這些功能在最新版本中不再存在。 –

+1

@JaredHoberock:我同意,我建議他可以下載舊版本的Thrust並使用該版本,而不是使用CUDA 5.5提供的版本(1.7)。 – Tom

+0

感謝您的回覆,這是一個好主意。還有其他類似的問題是由同樣的原因造成的。我應該使用舊版本的Thrust! – Sunf71