Я пытаюсь создать собственный тензорный поток Op. Я получил несколько операций для работы, используя https://www.tensorflow.org/versions/master/how_tos/adding_an_op/index.html и обычный C++.
Проблема возникает при использовании фреймворка Eigen C++ и его редуктора .sum
. Он работает для CPU с типами double
, float
и Eigen::half
, но на GPU ломается при использовании Eigen::half
во время компиляции.
Я сократил проблему до копии l2loss_op
с https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernels, где я переименовал L2Loss
в CustomL2Loss
(иначе возникают конфликты имен). См.: https://gist.github.com/AndreasMadsen/4335215cd4293daad3cad745bbeae82a.
Ошибка довольно длинная: https://gist.github.com/AndreasMadsen/5cd0579267f0bc3e5a1c21f2341d9ad6
Поскольку это работает для всех других случаев, кроме <GPUDevice, Eigen::half>
(подтверждено комментарием строки в l2loss_op.cu.cc
), я подумал, не было ли это проблемой тензорного потока. Но я могу скомпилировать сам тензорный поток.
-arch compute_35
исправил. Не могли бы вы добавить это как ответ, чтобы я мог его принять? - person AndreasMadsen   schedule 05.11.2016