2017-06-13 9 views
1

XLAを有効にした非常に簡単なテンソルフロープログラムを作成しています。基本的な考え方は、XLAは、複数のカーネルの起動を避けるために、一緒にsoftmaxの連鎖を融合できるかどうかを確認することですTensorflow XLAはそれをより遅くしますか?

import tensorflow as tf 

def ChainSoftMax(x, n) 
    tensor = tf.nn.softmax(x) 
    for i in range(n-1): 
    tensor = tf.nn.softmax(tensor) 
    return tensor 

config = tf.ConfigProto() 
config.graph_options.optimizer_options.global_jit_level = tf.OptimizerOptions.ON_1 

input = tf.placeholder(tf.float32, [1000]) 
feed = np.random.rand(1000).astype('float32') 

with tf.Session(config=config) as sess: 
    res = sess.run(ChainSoftMax(input, 2000), feed_dict={input: feed}) 

:基本的にはのようなものです。 XLAをオンにすると、上記のプログラムは、GPUカードが搭載されたマシンでXLAを使用しない場合よりも約2倍遅くなります。私のGPUプロファイルでは、XLAが "reduce_xxx"と "fusion_xxx"という名前の多数のカーネルを生成していることがわかりました。このカーネルは全体のランタイムを圧倒しています。誰がここで何が起こったのか知っていますか?

答えて

0

TF dev summitのビデオをご覧ください。一部の操作は、XLAない場合よりも悪化し実行している場合

enter image description here

だから、それは驚くべきことではない:マイクロベンチマークとのグラフは、GPUでのXLA does not make everything fasterがあることを示しています。

関連する問題