我写一个自定义的TensorFlow运算需要能够读取,以便决定如何继续OpKernel计算()实现中的张量的电流值。本征不支持的的TensorMap
template(使用的tensorflow::TTypes
的typedef)提供了函数调用操作,当运算正在主机上运行的我可以使用的多个重载。实际上,“Adding a New Op”教程示例代码使用函数调用操作符重载将值分配给张量。从张量读取设备不可知的方式?
的问题是,当运算是在GPU上运行,调用段错误的函数调用操作符重载的结果。这是因为函数调用操作重载解引用一个m_data
构件指针,但是当张量驻留在GPU这是一种设备指针。此外,与this other question,我不认为我可以使用HostMemory(),因为张是暂时的,所使用的GPU代码。
我目前调用cudaMemcpy()将设备内存复制到主机,但我想使用与设备无关的方式从设备内存读取设备是否为Eigen::ThreadPoolDevice
,Eigen::GpuDevice
或其他 - 因为我会那么能够使用相同的特征码,但是针对每个支持的设备进行编译(“仿函数”方法)。
我注意到TensorBase :: eval()方法,但我不能确定这是否是我所期待的。