問題タブ [custom-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - 計算式でカスタム演算子を定義する方法
計算式にいくつかのカスタム演算子を定義したいのですが、うまくいきません
ところで、に変更member this.Map f s ...
しmember this.Map (f, s) ...
ても同じエラーが発生します。
c++ - カスタム op の CPU 実装が選択されているのはなぜですか?
カスタム TensorFlow op の書き方を学ぶために、新しい Op の追加のb
チュートリアルに従い、すべての入力値にスカラーを追加する「add_b」op を作成しました。
add_b_op.cc
:
add_b_op.cu.cc
CPU または GPU 実装が使用されているかどうかを区別できるように、意図的に CPU 実装にエラーを導入しました。
カスタム op を次のようにテストすると、次のようになります。
次の出力が得られます。
「デバイス配置ログ」は GPU で op が実行されていることを示しているように見えますが、出力は CPU 実装が使用されていることを示しています。
DEVICE_CPU
実装、再コンパイル、および再テストの 2 つの REGISTER_KERNEL_BUILDER() 登録をコメント アウトすると、期待どおりの出力が得られ[ 13. 12. 11. 10. 9.]
ますが、エラーが発生します。
このエラー メッセージはバグのように見えます。エラーには「エグゼキュータがカーネルを作成できませんでした」と表示されますが、GPU で op を実行するためにカーネルが作成されたようです。
GPU 実装ではなく CPU 実装が使用されているのはなぜですか?
これが重要な場合に備えて、私の開発セットアップの詳細を以下に示します。
- NVIDIA GeForce GT 750M (CUDA Compute Capability 3.0) を内蔵した MacBook Pro を使用しています。
- macOS シエラ バージョン 10.12.1 (16B2555)
- cuda_8.0.47_mac、cudnn-8.0-osx-x64-v5.1
- TensorFlow 0.11.0rc2 のインストール:
export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.11.0rc2-py2-none-any.whl
更新CPU または GPU の実装が選択されているかどうかは、入力のサイズに依存することがわかりました。このテスト スクリプトを使用すると、次のようになります。
..NUM_VALUES
が 1310720 以下の場合、CPU 実装が使用されます。NUM_VALUES
が 1310721 以上の場合、GPU 実装が使用されます。
(1310720 * double あたり 8 バイト = ) 10 MiB カットオフはありますか? もしそうなら、どうすればこれをオーバーライドできますか? AddB() op は十分に単純ですが、より複雑なカスタム操作の場合、10 MiB は GPU 実装を選択するにはしきい値が大きすぎる可能性があります。