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

Lar*_*son 4 gpu gpgpu tensorflow

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

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

例如,下面的答案讨论了可从CUDA访问的纹理对象.NVidia指出,这些可用于加速对延迟敏感,短时运行的内核.如果我谷歌"TextureObject tensorflow"我没有得到任何命中.所以我可以假设,除了相反的证据,TensorFlow没有利用TextureObjects.

NVidia销售用于神经网络培训的GPGPU.到目前为止,似乎他们已经为他们的电路采用了双用策略,因此他们将离开不用于机器学习的电路.这就引出了纯TensorFlow电路是否更有效的问题. 由于这个原因,谷歌现在推广TPU.评审团对TensorFlow的实际价格是否比NVidia GPU更便宜. NVidia正在挑战谷歌的性价比.

whn*_*whn 6

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

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

如果我们在上面阅读:

GP100是世界上性能最高的并行计算处理器,可满足我们的Tesla P100加速器平台所服务的GPU加速计算市场的需求.与之前的特斯拉级GPU一样,GP100由图形处理集群(GPC),纹理处理集群(TPC),流式多处理器(SM)和内存控制器组成.完整的GP100包括6个GPC,60个Pascal SM,30个TPC(每个包括两个SM)和8个512位内存控制器(总共4096位).

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

在此输入图像描述

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

内存控制器是所有硬件为了与RAM接口而拥有的东西,更多的内存控制器可以实现更高的带宽,请参见下图:

在此输入图像描述

其中"高带宽存储器"是指HBM2类似于GDDR5的视频存储器,换言之,视频RAM.对于使用CUDA的软件,您不会直接使用X86台式机来解决这个问题.

所以实际上,我们这里只有SM,而不是TPC和GPC.所以回答你的问题,因为Tensor流程利用了cuda,可能它会使用所有可用的硬件.

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

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

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

在此输入图像描述

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

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