我在理解TF内部时遇到了问题(或者更确切地说是放慢了进度)。在过去的三天里,我一直在挖掘代码(来自"顶部",下降)。我已经掌握了图形创建和大多数在调用OpKernel :: Compute之前发生的事情。只是一个快速摘要(如果我有重要的错误,请纠正我):
有:
有:
所以问题部分在于我不知道如何(高效地)了解其余的代码,而且大多数情况下我无法理解OpKernel如何在GPU上调度实例以及何时。在检查TF之前,我读了关于GPGPU(openCL文档)的内容,我想我得到了它的要点 - 工作项,组,计算队列,同步,内存管理,物理设备上的内存类型。但我似乎无法将这些知识映射到TF如何使用GPU。正如我所说 - 我到达了OpKernel :: Compute并且(在几种类型的内核中)我看到只有内存分配,在某些情况下(matmul)CUBlass被调用(所以我无法看到发生了什么) ),或者没有GPU实现。我希望看到一些机制,根据图的分析,设置一些同步点等等,为内核分配可变数量的线程(工作项)。 我非常感谢有关上述主题的任何澄清。
答案 0 :(得分:3)
再过一天,我想我明白了: