从github代码看,似乎MatMul op不支持分区矩阵。那么tensorflow中是否有任何工具支持两个分布在多个节点上的巨大矩阵的乘法?
答案 0 :(得分:3)
TensorFlow内置了支持跨机器分配计算的功能。我建议阅读分布式TensorFlow文档,以了解如何设置TensorFlow集群。
设置群集后,您可以决定如何对问题进行分区,并使用with tf.device
将每个工作人员分配到其工作分区。
例如,假设您正在乘以a*a'
,并且您希望将中间乘法均匀地分配给2个工作人员,并且聚合结果将在3日结束。
你会做这样的事情:
with tf.device(worker0):
# load a1
b1 = tf.matmul(a1, tf.transpose(a1))
with tf.device(worker1):
# load a2
b2 = tf.matmul(a2, tf.transpose(a2))
with tf.device(worker2):
result = b1+b2
load a1
部分取决于矩阵的存储量。如果它很大,那么也许load a1
将从磁盘读取它。如果它适合内存,您可以使用a1=a[:n/2,:]
来获取它的分区