【问题标题】:Does TensorFlow use all of the hardware on the GPU?TensorFlow 是否使用 GPU 上的所有硬件?
【发布时间】:2018-11-19 12:45:50
【问题描述】:

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. 对于 TensorFlow,TPU 是否真的比 NVidia GPU 便宜,目前尚无定论。 NVidia is challenging Google price/performance claims.

【问题讨论】:

  • 是否有不同的 Stack Exchange 会更受欢迎,例如人工智能还是交叉验证?我选择 StackOverlow 是因为它发布了更多 TensorFlow 和 GPU 问题。
  • 也许试试人工智能?不太确定。
  • 好的,但是我冒着其他一些不赞成投票的风险,然后让我很难进行交叉发布。我可以换一种方式问它,那就是问 CUDA 的哪些部分命中了 NVidia GPGPU 硬件的哪些部分。
  • 您最近编辑的最后一段有什么意义? Nvidia 将 GPU 推向不仅仅是神经网络,包括科学计算和光线追踪医学成像和自动驾驶汽车……如果可以的话,Nvidia 会将其 gpu 推销为治疗癌症的方法(我收到他们的电子邮件几乎完全声称这一点。 ..)。它们被称为 GPGPU 是有原因的,它们不仅仅用于神经网络。
  • Why do people use GPUs for high-performance computation instead of a more specialized chip? 解释了为什么规模经济意味着我们通常不会为每个单独的任务获得专用硬件,而是像 GPU 这样擅长许多大规模并行任务的可编程硬件。我认为执行单元占据了大部分芯片面积/热量,因此运行没有充分利用每个晶体管的软件不会“浪费”很多东西。

标签: tensorflow gpu gpgpu


【解决方案1】:

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

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

如果我们在上面读到:

GP100 旨在成为世界上性能最高的并行计算处理器,以解决 由我们的 Tesla P100 加速器平台服务的 GPU 加速计算市场的需求。喜欢 以前的 Tesla 级 GPU,GP100 由一系列图形处理集群 (GPC)、Texture 处理集群 (TPC)、流式多处理器 (SM) 和内存控制器。完整的 GP100 由 6 个 GPC、60 个 Pascal SM、30 个 TPC(每个包含两个 SM)和 8 个 512 位内存组成 控制器(总共 4096 位)。

看一下我们看到的图表:

因此,不仅 GPC 和 SMS 不是独立的硬件,甚至 TPC 也只是重组硬件架构和想出一个花哨的营销名称的另一种方式。您可以清楚地看到 TPC 并没有在图中添加任何新内容,它只是看起来像 SM 的容器。它的 [1 GPC]:[5 TPC]:[10 SM]

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

其中“高带宽内存”是指HBM2 一种视频内存,如 GDDR5,换句话说,视频 RAM。这不是您在 CUDA 软件中直接解决的问题,而不是在 X86 桌面机器上解决的问题。

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

编辑:发帖人将他们的问题编辑为一个完全不同的问题,并且在那里有新的误解,所以这里是答案:

纹理处理集群 (TPC) 和纹理单元不是一回事。 TPC 似乎只是一个流式多处理器 (SM) 的组织,并带有一点营销魔力。

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

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

现在,尽管您可以在 cuda 中处理纹理功能,但您通常不需要这样做。纹理单元固定函数功能对神经网络来说并不是那么有用,但是,即使您没有明确地尝试访问它,CUDA 也经常自动使用空间相干纹理内存作为优化。这样一来,TensorFlow 仍然不会“浪费”芯片。

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2016-04-22
    • 2019-08-17
    • 2018-12-10
    • 1970-01-01
    相关资源
    最近更新 更多