Tensorflow/XLA:LLVM IR中的并行操作数

2024-06-03 05:52:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我对启动带有--xla_dump_ir_to标志的Tensorflow程序所获得的LLVM感兴趣,特别是我想探讨XLA如何处理并行化。你知道吗

我在一台有56个CPU的机器上运行了一个测试程序,结果.ll文件中显示了一个并行化的函数,如预期的那样:

call void @__xla_cpu_runtime_ParallelForkJoin(i8* %6, i8* %run_options, i8** null, i8** %buffer_table, i64* %prof_counters, i32 56, i64* getelementptr inbounds ([224 x i64], [224 x i64]* @parallel_convolution_parallel_dimension_partitions, i32 0, i32 0), i32 2, i8* bitcast (void (i8*, i8*, i8**, i8**, i64*, i64*)* @parallel_convolution to i8*))

查看XLA源代码中的ParallelForkJoin函数,这里有一个输入参数num_partitions,设置为56。你知道吗

现在我想得到一个类似的结果,它只使用了一些可用的cpu,因此我在python程序中添加了以下几行代码(如Tensorflow指南https://www.tensorflow.org/guide/performance/overview#optimizing_for_cpu和其他地方的建议):

config = tf.ConfigProto()
config.intra_op_parallelism_threads = 5
config.inter_op_parallelism_threads = 5
tf.Session(config=config)

但是生成的.ll文件是完全相同的!你知道吗

为什么?我本以为指定不同数量的并行线程会导致参数5(在本例中)而不是56。你知道吗

一般来说,是否有关于XLA如何提取并行性的文档?你知道吗


Tags: 文件to函数程序configparalleltensorflowcpu