就像标题所说的那样 - 我计划通过STL向量.reserve()
主机上的一些内存,然后cudaMemcpy
从设备到主机(即进入该保留主机内存)的数组[i]
。
STL向量是否会接受我(通过外部方法)将新数据复制到向量中的事实?即会不会正确
答案 0 :(得分:2)
STL向量是否会接受我所拥有的事实(通过外部方法) 将新数据复制到向量中?即会不会。
不,它不会,因为你只是reserved
,而没有实际调整矢量大小。 reserve
只是一个保留内部存储的请求,以减少内存分配开销并防止迭代器失效。从外面看,它不会改变容器的大小。
虽然可以拨打resize
而不是reserve
。在这种情况下,您可以直接将数据直接复制到矢量中,因为它的存储保证是连续的并且大小合适。在这种情况下,你的所有积分都将成立。但请注意resize
带有可能的开销,默认构建要写入元素的数据,但是防止这种开销是另一个问题,resize
向量仍然是实现你所追求的唯一可行方式。