我想要沿矢量vecShift移動卷紋理的內容。我認爲一個內核是這樣的:CUDA:僅使用一個內核和線程來移動卷紋理的內容
__global__ void
moveVolume(int* vecShift)
{
// Determine position of current voxel as ptDest
// Determine position of voxel we copy the content from as ptSrc
// Read value at ptSrc and store it to voxelColor
// __threadfence()
// Write voxelColor to voxel at position ptDest
}
的threadfence將確保所有的體素已經閱讀他們的「合作伙伴」的內容,並會出現以ptDest沒有寫每個體素已經完成讀操作之前,不它?
如果這是真的,爲什麼我(有時)得到一個模糊類型的文物?或者我對threadfence的功能有錯誤的看法?
'__threadfence()'只確保寫入對設備上的所有**活動**線程都可見。如果您的內核啓動包含的塊數多於可以在設備上同時運行的塊,那麼您的策略將保證失敗。 – talonmies 2012-07-11 14:59:25