カスタムテンソルフローを作成しようとしています。私はhttps://www.tensorflow.org/versions/master/how_tos/adding_an_op/index.htmlと通常のC++を使用していくつかの操作を行っています。カスタムテンソルフローの固有値和GPUDeviceでEigen :: halfを使用したC++演算
Eigen C++フレームワークとその.sum
レデューサーを使用すると問題が発生します。 double
,float
およびEigen::half
タイプのCPUで動作しますが、GPLではコンパイル時にEigen::half
を使用するとブレークします。
私は(そうでない場合、私は名前の衝突を取得)CustomL2Loss
にL2Loss
の名前を変更したhttps://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/kernelsからl2loss_op
のコピーに問題が低下しています。参照:https://gist.github.com/AndreasMadsen/4335215cd4293daad3cad745bbeae82a
誤差はかなり長いです:https://gist.github.com/AndreasMadsen/5cd0579267f0bc3e5a1c21f2341d9ad6
それは、これがtensorflowの問題だった場合、私は検討していた他のすべてのケースのために動作しますが(l2loss_op.cu.cc
中から行をコメントで確認)<GPUDevice, Eigen::half>
ので。しかし、私はテンソルフロー自体をコンパイルすることができます。
-arch compute_35でnvccを呼び出せますか? nvccが__shfl_downについて知らないという事実は、あなたが16ビット浮動小数点をサポートしていないアーキテクチャをターゲットにしていることを示しているようです。 –
ありがとうございます。 '-arch compute_35'はそれを修正します。私はそれを受け入れることができるように答えとしてそれを追加できますか? – AndreasMadsen
私は答えを加えました。 –