我试图找到实际 Conv2D 操作的实现在哪里,以便我可以评估内存访问模式。环顾四周,看起来 Conv2D 操作的执行通过contract()
函数调用进入 Eigen。问题是,我似乎无法在 TensorFlow 或 Eigen 源中找到函数的定义或声明。
哪些函数主要负责在 TensorFlow 中执行 Conv2D 操作?我想看看它是如何瘫痪的,一般的内存访问模式是什么,以及原始计算是如何完成的。
此查询专门针对 CPU,因为我已经在一定程度上研究了 GPU 执行。
我试图找到实际 Conv2D 操作的实现在哪里,以便我可以评估内存访问模式。环顾四周,看起来 Conv2D 操作的执行通过contract()
函数调用进入 Eigen。问题是,我似乎无法在 TensorFlow 或 Eigen 源中找到函数的定义或声明。
哪些函数主要负责在 TensorFlow 中执行 Conv2D 操作?我想看看它是如何瘫痪的,一般的内存访问模式是什么,以及原始计算是如何完成的。
此查询专门针对 CPU,因为我已经在一定程度上研究了 GPU 执行。
经过一番搜索,我发现 CPU Conv2D 的实际实现在deep_conv2d.cc中。
我认为 Conv2dCPU 是在这个文件中使用 Eigen conv ops Line 61实现的
contract()
返回一个抽象表达式,其评估在TensorContraction.h中实现。它本质上是 Eigen 矩阵-矩阵或矩阵-向量乘积之上的包装器。