如何在tensorflow中在gpu和cpu之间拉/推送数据
How can I pull/push data between gpu and cpu in tensorflow
我在定制的基于gpu的操作中使用了一个临时张量来存储数据。出于调试目的,我想在C++中通过传统的printf打印这个张量的数据。如何将这个基于gpu的张量拉到cpu,然后打印其内容。非常感谢。
如果temporary指的是allocate_temp
而不是allocate_output
,则无法在python端获取数据。
我通常在调试过程中返回张量本身,以便一个简单的sess.run
获取结果。否则,显示数据的唯一方法是C++内部的传统printf
。假设张量是自定义操作的输出,tf.Print
可以简化进一步的调试。
示例:
Tensor temp_tensor;
OP_REQUIRES_OK(ctx, ctx->allocate_temp(DT_FLOAT, some.shape(), &temp_tensor));
float* host_memory = new float[some.NumElements()];
cudaMemcpy(host_memory, temp_tensor.flat<Dtype>().data(), some.NumElements() * sizeof(float), cudaMemcpyDeviceToHost);
std::cout << host_memory[0] << std::endl;
std::cout << host_memory[1] << std::endl;
std::cout << host_memory[2] << std::endl;
delete[] host_memory;
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 线程之间的实时数据共享
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 在C++事务之间存储大量字符数据的有效方法
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- 在 EXE/DLL 之间传递数据
- 如何在自定义 LLVM 传递之间正确传递数据结构
- 如何使用gRPC在客户端和服务器之间双向发送和接收流元数据
- 读取USB与操作系统、C++之间传输的数据
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 如何在tensorflow中在gpu和cpu之间拉/推送数据
- 在C++和Python之间交换数据的最快方法是什么?
- C++ - 比较模板和类之间的数据类型
- 如何在Qt中预先建立的窗口之间传递数据?
- 包括数据类型之间的斗争