当我使用XLA_标志转储PTX和llvm时,为什么不为矩阵乘法tensorflow操作生成PTX?
我正在尝试为以下当我使用XLA_标志转储PTX和llvm时,为什么不为矩阵乘法tensorflow操作生成PTX?,tensorflow,matrix-multiplication,ptx,tensorflow-xla,xla,Tensorflow,Matrix Multiplication,Ptx,Tensorflow Xla,Xla,我正在尝试为以下tensorflow 1.13.1代码转储HLO、LLVM IR和PTX: import tensorflow as tf import numpy as np a = tf.placeholder(shape=(10,20), dtype=tf.float32) b = tf.placeholder(shape=(20,10), dtype=tf.float32) c = tf.placeholder(shape=(10,10), dtype=tf.float32) jit
tensorflow 1.13.1
代码转储HLO
、LLVM IR
和PTX
:
import tensorflow as tf
import numpy as np
a = tf.placeholder(shape=(10,20), dtype=tf.float32)
b = tf.placeholder(shape=(20,10), dtype=tf.float32)
c = tf.placeholder(shape=(10,10), dtype=tf.float32)
jit_scope = tf.contrib.compiler.jit.experimental_jit_scope #using JIT compilation
with jit_scope():
d = tf.matmul(a, b) + c
with tf.Session() as sess:
print(sess.run(d, feed_dict={a:np.random.random((10,20)), b:np.random.random((20,10)), c:np.random.random((10,10))}))
我使用以下XLA\u标志运行该程序:
XLA_FLAGS="--xla_generate_hlo_text_to=./path1 --xla_dump_ir_to=./path2" python source.py
/path1
目录包含所有HLO
过程输出。但是/path2
目录中的.ll
和.ptx
文件不包括ptx
或llvm IR
代码。.ptx
文件为空,ll
文件只有以下几行:
; ModuleID = 'cluster_0__XlaCompiledKernel_true__XlaNumConstantArgs_0__XlaNumResourceArgs_0_.12'
source_filename = "cluster_0__XlaCompiledKernel_true__XlaNumConstantArgs_0__XlaNumResourceArgs_0_.12"
target datalayout = "e-i64:64-i128:128-v16:16-v32:32-n16:32:64"
target triple = "nvptx64-nvidia-cuda"
我的问题是,为什么我看不到上述tensorflow代码的ptx
代码
我应该提到的是,如果我将d=d+d
行添加到上面的python代码中,在a*b+c
之后,XLA
生成一些PTX
代码,这只是一个加法运算,它不包括矩阵乘法代码。没有人能回答这个问题吗?甚至没有注释?我发现这表明如果hlocompution
是一个融合的计算,它会跳过红外。是吗?PTX代表什么?并行线程执行