TensorFlow是否使用GPU上的所有硬件?

时间:2018-06-09 19:39:39

标签: tensorflow gpu gpgpu

NVidia GP100有30个TPC电路和240个“纹理单元”。 TensorFlow是否可以使用TPC和纹理单元,还是这些用于机器学习的一次性硅片?

我正在运行神经网络训练课程中查看GPU-Z和Windows 10的内置GPU性能监视器,我发现各种硬件功能未得到充分利用。 Tensorflow使用CUDA。我认为CUDA可以访问所有硬件组件。如果我知道差距在哪里(在Tensorflow和底层CUDA之间)以及它是否是材料(浪费了多少硅),我可以通过制作TensorFlow的克隆,修改它,然后提交拉取请求来进行修复。

例如,下面的答案讨论了可从CUDA访问的纹理对象。 NVidia指出这些可以用于speed up latency-sensitive, short-running kernels。如果我谷歌“TextureObject tensorflow”我没有得到任何命中。因此,除了相反的证据,我可以假设TensorFlow没有利用TextureObjects。

NVidia推出用于神经网络培训的GPGPU。到目前为止,似乎他们已经为他们的电路采用了双用策略,因此他们将离开不用于机器学习的电路。这就引出了纯TensorFlow电路是否更有效的问题。 Google is now promoting TPUs for this reason.评委会对TPens实际上比TensorFlow的价格是否比NVidia GPU更便宜。 NVidia is challenging Google price/performance claims.

1 个答案:

答案 0 :(得分:6)

这些东西都不是可以在CUDA中单独处理的单独硬件。阅读文档第10页的这段文字:

  

GP100内的每个GPC都有10个SM 。每个SM有64个CUDA核心和4个纹理单元。 有60个SM ,   GP100共有3840个单精度CUDA核心和240个纹理单元。每个内存控制器都是   附加到512 KB的L2缓存,每个HBM2 DRAM堆栈由一对内存控制   控制器。完整的GPU包括总共4096 KB的L2缓存。

如果我们在上面阅读:

  

GP100是世界上性能最高的并行计算处理器,可以解决这个问题   我们的Tesla P100加速器平台为GPU加速计算市场提供服务。喜欢   以前的特斯拉级GPU,GP100由一组图形处理集群(GPC),纹理组成   处理集群(TPC),流式多处理器(SM)和内存控制器。完整的GP100   由六个GPC,60个Pascal SM, 30个TPC(每个包括两个SM)和八个512位内存组成   控制器(总共4096位)。

并查看我们看到以下内容的图表:

enter image description here

因此,不仅GPC和SMS不是单独的硬件,而且即使 TPC 也只是重新组织硬件架构并提出一个花哨的营销名称的另一种方式。你可以清楚地看到TPC没有在图中添加任何新东西,它看起来就像是SM的容器。其[1 GPC]:[5 TPC]:[10 SMs]

内存控制器是所有硬件将要与RAM连接的东西,更多的内存控制器可以实现更高的带宽,请参见此图:

enter image description here

其中“高带宽内存”是指HBM2一种类型的视频内存,如GDDR5,换言之,视频内存。对于使用CUDA的软件,您不会直接使用X86台式机来解决这个问题。

所以实际上,我们这里只有SM,而不是TPC和GPC。所以要回答你的问题,因为Tensor flow利用了cuda,大概它可以使用所有可用的硬件。

编辑:海报将他们的问题编辑成一个完全不同的问题,并且在那里有新的误解,所以这就是答案:

纹理处理集群(TPC)和纹理单元不是一回事。 TPC似乎只是一个流媒体多处理器(SM)的组织,带来了一些营销魔力。

纹理单元不是具体术语,功能因GPU而异,但基本上你可以将它们视为纹理存储器的组合或纹理存储器的组合,它采用空间相干性,而不是L1,L2,L3 ...缓存采用时间相干性,结合一些固定功能。固定功能可以包括插值访问滤波器(通常至少是线性插值),不同的坐标模式,mipmapping控制和各向异性纹理滤波。请参阅有关此主题的Cuda 9.0 Guide以了解纹理单元功能以及您可以使用CUDA控制的内容。在图表上我们可以看到底部的纹理单元。

enter image description here

显然,这些与我发布的第一张图片中显示的TPC完全不同,至少根据图表没有与之相关的额外功能,并且仅仅是两个SM的容器。

现在,尽管你可以解决cuda中的纹理功能,但你通常不需要这样做。纹理单元固定功能功能并非对神经网络有用,但是,即使您没有明确尝试访问它,空间连贯纹理内存通常也会被CUDA自动用作优化。通过这种方式,TensorFlow仍然不会“浪费”硅。