2016-12-28 54 views
0

从器件阵列获得的单个元素的最优化的方式,我有巨大的长度的设备和一些条件检查我想从中间访问(在主机/ CPU)只有一个元素的数组(说第N个元素)。什么可能是这样做的最佳方式。什么是CUDA

我是否需要写从src数组单个元素数组写入第N个位置的内核,然后我复制单个器件阵列的主机?

回答

1

可以复制使用cudaMemcpy阵列的单个元件。 比方说,你要复制数组N个元素:

int * dSourceArray

可变

int hTargetVariable

您可以在主机上应用设备指针算术。所有你需要做的是通过N元素蚂蚁拷贝单个元素移动dSourceArray指针:

cudaMemcpy(&hTargetVariable, dSourceArray+N, sizeof(int), cudaMemcpyDeviceToHost) 

请记住,如果你使用多个数据流,你想传送数据之前,设备同步。

+0

这不意味着主机已经知道N了吗?如果不是,会发生什么? – talonmies

+0

如果N以某种方式在设备上计算,那么使用一些全局的__device__变量就可以实现。首先,您将使用cudaMemcpyFromSymbol()从全局__device__变量中复制N的值,然后复制N元素,如上所述。 – pSoLT

相关问题