我想知道是否可以将这样的数据结构发送到Open CL
std::vector<std::vector<unsigned> > v;
问题是我不知道任何一个向量的大小,直到运行时每个内部向量的大小也不同。
这是否可能,如果是这样,我将如何在内核和主机中执行此操作。
由于
答案 0 :(得分:0)
获取
的总大小std::vector<std::vector<unsigned> > v;
将其乘以2.为数组分配那么多内存。使用它(从矢量复制到它)。下次获得这些向量时,再次检查总大小。如果大小更改,请检查是否大于分配的最后一个数组的长度。如果是,则使用x2乘以长度重新分配。如果是,请重新使用。重复。如果新向量大小小于最后5次迭代的已分配数组长度的四分之一,则分配一半长度的数组。不要忘记释放旧阵列。也许你可以从这些数组中构建一个LRU策略缓存(其中5-10个可能?)。当然从向量到数组的复制需要时间,但是它不应该比将每个子向量逐个复制到设备存储器花费更长的时间