C++ 如何将这种数据结构高效地发送到CUDA?
我的数据结构如下: std::vectorC++ 如何将这种数据结构高效地发送到CUDA?,c++,cuda,C++,Cuda,我的数据结构如下: std::vectormystruct[100] mystruct[100]的每个向量都有不同的大小。例如,mystruct[0]的大小是10,mystruct[1]的大小是5,mystruct[2]的大小是12,依此类推 那么,我如何才能有效地将这种数据结构发送到CUDA?如果主机数据结构必须是您描述的方式,我认为您不能比单独下载每个向量做得更好 如果你可以改变数据结构,你可以考虑把所有的向量一个接一个地存储在一个大的内存中,同时下载一个大块,连同一个偏移表,它告诉你在什么
那么,我如何才能有效地将这种数据结构发送到CUDA?如果主机数据结构必须是您描述的方式,我认为您不能比单独下载每个向量做得更好
如果你可以改变数据结构,你可以考虑把所有的向量一个接一个地存储在一个大的内存中,同时下载一个大块,连同一个偏移表,它告诉你在什么位置找到哪个向量。当然,在后一种方法中,调整向量大小的代价可能会很高,但您可能不经常需要这种操作。此外,如果您知道向量大小的合理上限,则可以尝试为每个向量分配如此多的空间,而不管它是否被充分利用
是否使用推力和选择?您可以直接使用设备/主机向量实现。推力不会直接处理向量数组。您要么将数组展平为单个向量,要么使用循环复制每个向量。