Tensorflow C ++快速Tensor深拷贝

时间:2017-03-08 08:34:39

标签: c++ tensorflow

我正在用C ++编写自定义张量流操作,我想知道如何将一个张量的深层复制到另一个张量中。换句话说,我想要从一个张量到另一个张量的元素方式复制,这样它们就不会共享底层内存缓冲区。

我发现的最接近的东西是DeepCopy(在tensor_util.h中定义)。问题是我需要快速执行此操作,并且文档清楚地表明此功能尚未针对速度进行优化:

// DeepCopy returns a tensor whose contents are a deep copy of the
// contents of 'other'.  This function is intended only for
// convenience, not speed.

更详细一点:我在GPU上使用Tensorflow,所以我想要做的就是让TF启动cudaMemcpy,其中源和目标都是设备指针。 TF确实可以访问张量指针(tensor.tensor_data()。data()),但如果你尝试使用cudaMemcpy,它会很快遇到问题(它们与重叠的cuda上下文有关;不太好)。

提前致谢!

1 个答案:

答案 0 :(得分:1)

目前,对于“快速”深拷贝,TensorFlow使用Eigen来实现CPU和GPU版本。作为Eigen,代码是非常模板化的,但相关的代码在这里(从dense_update_ops.h复制):

</>