GPUDevice 上具有 Eigen::half 的自定义张量流 C++ 操作中的特征和
Eigen sum in custom tensorflow C++ op with Eigen::half on GPUDevice
我正在尝试创建自定义 tensorflow Op。我已经获得了一些使用 https://www.tensorflow.org/versions/master/how_tos/adding_an_op/index.html 和普通 C++ 的操作。
问题出现在使用 Eigen C++ 框架及其 .sum
reducer 时。它适用于 CPU 和 double
、float
和 Eigen::half
类型,但在 GPU 上它在编译时使用 Eigen::half
时会中断。
我已将问题简化为 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernels, where I have renamed L2Loss
to CustomL2Loss
(otherwise I get name conflicts). See: https://gist.github.com/AndreasMadsen/4335215cd4293daad3cad745bbeae82a
中 l2loss_op
的副本
错误比较长:https://gist.github.com/AndreasMadsen/5cd0579267f0bc3e5a1c21f2341d9ad6
因为它适用于所有其他情况,但 <GPUDevice, Eigen::half>
(通过注释 l2loss_op.cu.cc
中的行确认)我在考虑这是否是张量流问题。但是我可以自己编译tensorflow。
支持半浮点数需要大于或等于 3.5 的 cuda 架构。您需要使用 -arch compute_35 标志进行编译以启用相应的指令。
我正在尝试创建自定义 tensorflow Op。我已经获得了一些使用 https://www.tensorflow.org/versions/master/how_tos/adding_an_op/index.html 和普通 C++ 的操作。
问题出现在使用 Eigen C++ 框架及其 .sum
reducer 时。它适用于 CPU 和 double
、float
和 Eigen::half
类型,但在 GPU 上它在编译时使用 Eigen::half
时会中断。
我已将问题简化为 https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernels, where I have renamed L2Loss
to CustomL2Loss
(otherwise I get name conflicts). See: https://gist.github.com/AndreasMadsen/4335215cd4293daad3cad745bbeae82a
l2loss_op
的副本
错误比较长:https://gist.github.com/AndreasMadsen/5cd0579267f0bc3e5a1c21f2341d9ad6
因为它适用于所有其他情况,但 <GPUDevice, Eigen::half>
(通过注释 l2loss_op.cu.cc
中的行确认)我在考虑这是否是张量流问题。但是我可以自己编译tensorflow。
支持半浮点数需要大于或等于 3.5 的 cuda 架构。您需要使用 -arch compute_35 标志进行编译以启用相应的指令。