gpt4 book ai didi

memory - 我可以将设备中的 cudaMemcpy 直接转换为主机 STL 向量吗?

转载 作者:行者123 更新时间:2023-12-01 14:34:34 25 4
gpt4 key购买 nike

正如标题所说 - 我计划通过 STL 向量 .reserve() 主机上的一些内存,然后 cudaMemcpy 从设备到主机的数组(即进入保留的主机内存)。

STL 向量会发现我已经(通过外部方法)将新数据复制到向量中吗? IE。会正确吗

  • 确定新尺寸应该是什么?
  • 允许我通过[i]-索引或迭代器访问数据吗?
  • 总体上表现如预期,即像任何法向量一样?

最佳答案

Will the STL vector pick up on the fact I have (by external methods) copied new data into the vector? I.e. will it correctly.

不,它不会,因为您只是保留,而没有实际调整向量的大小。 reserve 只是请求保留内部存储空间,以减少内存分配开销并防止迭代器失效。从外面看,它不会改变容器的大小。

但可行的方法是调用 resize 而不是 reserve。在这种情况下,您可以自由地将数据直接复制到向量中,因为它的存储保证是连续的并且大小合适。在这种情况下,您的所有积分都将保留。但请注意,resize 伴随着默认构造要写入元素的数据的可能开销,但防止这种开销是另一个问题,resize向量仍然是实现您所追求目标的唯一可能方法。

关于memory - 我可以将设备中的 cudaMemcpy 直接转换为主机 STL 向量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16502937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com