CublasComputeType_t 如何影响张量核心的输入和输出数据类型?

问题描述 投票:0回答:1

我对使用

cublasGemmEx API
cublasComputeType_t 对计算的影响有点困惑。

例如,我的 A、B、C 矩阵都是

float
类型。

cublasComputeType_t=CUBLAS_COMPUTE_32F_FAST_16F
时,是否意味着在内核内部,矩阵A和B的数据类型会先转换为half并存储在寄存器中,然后再进行Tensor Core计算?

虽然Tensor Core支持half-float和half->half类型,但在这种情况下,内核应该选择half ->half的张量核心进行计算(对于

CUBLAS_COMPUTE.32F_FAST_16F
),并且只在写入时将数据类型转换为float最终结果。

我上面的理解正确吗?

matrix cuda matrix-multiplication cublas
1个回答
0
投票

这只是 cuBLAS 可以做沮丧的暗示。但这不是强制性的。最好的建议是尝试

_TF32
_16F
并选择任何可以提高性能并保持对您有利的结果精度的方法。

关于 TC 使用 half->half 或 half->float 的问题,累加到 half 寄存器输出将导致更多的精度损失,以及一些性能加速。我无法回答 cuBLAS 在这种特定情况下做了什么,但如果支持的话,选择 half->float 张量核心是明智的。

cuBLAS 在底层使用了许多不同的算法,因此您确实需要使用特定的硬件、精度、矩阵大小、主维、转置等进行基准测试。您可以运行内核并检查在 Nsight Compute 下正在执行哪些指令.

© www.soinside.com 2019 - 2024. All rights reserved.