【问题标题】:WMMA default coresWMMA 默认内核
【发布时间】:2019-11-19 22:54:09
【问题描述】:

我正在运行nvidia's sample code。代码可在github 上找到: 我从CUDA toolkit documentation 知道代码

允许库尽可能使用 Tensor Core 操作

通过使用CUBLAS_TENSOR_OP_MATH

在文档中我发现 CUBLAS_DEFAULT_MATH 阻止库使用 Tensor Core 操作,但是示例代码没有使用它。

WMMA 的默认设置是什么?它会在 CUDA 核心上执行,还是有 Tensor 核心可能支持计算的可能性。

【问题讨论】:

  • docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#wmma -- 我真的不明白你在问什么/为什么问
  • 我在问矩阵乘法是否会默认使用 CUDA 或 TENSOR 核心来完成。
  • 换句话说:如果我既不使用 CUBLAS_DEFAULT_MATH 也不使用 CUBLAS_TENSOR_OP_MATH 会怎样。是否会使用 Tensor 核心?
  • wmma 命名空间用于与 tensorcore 交互,因此 wmma_example 在所有情况下都将使用 tensorCore 完成。对于cublasGemmEx,默认使用CUBLAS_DEFAULT_MATH,所以如果不设置CUBLAS_TENSOR_OP_MATH,它不会尝试使用tensorcore。
  • 你不能使用 wmma 指令/内在函数,除非你为支持张量核心的 GPU 架构进行编译(你会得到一个编译错误)。您不能使用任何设置禁用或修改此行为。您不能使用 wmma 指令/内在函数在 CUDA 内核上执行任何操作。他们只在张量核上工作。 CUBLAS_ 设置影响 CUBLAS 调用,而不是 wmma 指令/内在函数的使用。

标签: cuda cublas


【解决方案1】:

wmma instructions 只能使用(即执行)Tensor Core 硬件。它们不能在任何其他类型的硬件上执行。因此,在使用 wmma 指令编译 CUDA 设备代码时,您必须以具有 Tensor Core 硬件的架构(当前为 cc7.x)为目标。此外,这样的代码只能在 cc7.x 设备上正确运行(目前)。

您引用的 CUBLAS 变量会影响 CUBLAS API 的使用。它们与您自己编写的 wmma 指令无关。

在底层,CUBLAS 库有多个代码路径。您引用的 CUBLAS 变量可能会影响 CUBLAS 库可能做出的代码路径决策。其中一些代码路径可能使用 wmma 指令或等效的 Tensor Core 用法。其他代码路径可以在不使用 wmma 指令的情况下执行相同的操作(在高级,例如矩阵-矩阵乘法)。

【讨论】:

    猜你喜欢
    • 2020-10-22
    • 2011-08-02
    • 2020-06-25
    • 1970-01-01
    • 2017-11-09
    • 2020-09-13
    • 2014-05-27
    • 2020-01-31
    • 2011-05-24
    相关资源
    最近更新 更多