TensorFlow C 快速张量深副本
Tensorflow C++ fast Tensor deep copy
我正在编写C 中的自定义TensorFlow OP,我想知道如何将一个张量的深副本执行到另一个张量。换句话说,我想要一个元素从一个张量到另一种张量的元素,以免它们共享基础的内存缓冲区。
我发现的最接近的是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上下文有关;不好)。
预先感谢!
当前用于"快速"深副本,TensorFlow使用eigen实现CPU和GPU版本。作为特征,代码是深层的模板,但是相关代码在这里(从dense_update_ops.h
复制):
template <typename Device, typename T>
struct DenseUpdate<Device, T, ASSIGN> {
void operator()(const Device& d, typename TTypes<T>::Flat params,
typename TTypes<T>::ConstFlat update) {
params.device(d) = update;
}
};
相关文章:
- 使用Pybind11向Python公开Eigen::张量
- C++中的张量流对象检测
- 在官方张量流 resnet50 模型上运行 tflite 精度工具
- PyTorch C++将数据转换为张量失败
- 如何使用 c++ 更改张量流中的per_process_gpu_memory_fraction?
- 编译 GPU 的张量流示例自定义操作
- 在 Torch C++ API 中,如何快速写入张量的内部数据?
- 如何在C++中将一个特征张量乘以另一个特征张量的标量和?
- C++ ABI 兼容性问题/张量流
- 如何从内存缓冲区加载张量流图
- PyTorch C++ 前端向前返回多个张量
- 从 std::向量值创建张量<Tensor>
- 张量流错误 此文件需要编译器和库支持 ISO C++ 2011 标准
- 如何将自定义特征张量类存储到 std::vector 中?
- CUDA 高效的 nd-array(张量)切片
- 部署在张量流中训练的神经网络来火炬C++的最佳方法是什么?
- 微调张量流对象检测预训练模型
- 犰狳(C++)中的快速阵列置换(广义张量转置)
- 添加 OP 张量流调试
- TensorFlow C 快速张量深副本