gpt4 book ai didi

python - PyTorch 的 nn.Conv2d 半精度 (fp16) 比 fp32 慢

转载 作者:行者123 更新时间:2023-12-05 05:56:19 26 4
gpt4 key购买 nike

我发现使用 float16 的单个 2D 卷积运算比使用 float32 慢。

我正在使用带有 torch.1.8.0+cu111 的 Gtx 1660 Ti和 cuda-11.1 (也尝试过 torch.1.9.0 )

<表类="s-表"><头>Dtypein=1,out=64in=1,out=128in=64,out=128<正文>Fp163532 it/s632 it/s599it/sFp322160 度/秒1311 它/秒925it/s

我正在使用以下代码测量卷积速度。

inputfp16 = torch.arange(0,ch_in*64*64).reshape(1, ch_in, 64, 64).type(torch.float16).to('cuda:0')
inputfp32 = torch.arange(0,ch_in*64*64).reshape(1, ch_in, 64, 64).type(torch.float32).to('cuda:0')

conv2d_16 = nn.Conv2d(ch_in,ch_out, 3, 1, 1).eval().to('cuda:0').half()
conv2d_32 = nn.Conv2d(ch_in,ch_out, 3, 1, 1).eval().to('cuda:0')


for i in tqdm(range(0, 50)):
out = conv2d_16(inputfp16)
out.cpu()

for i in tqdm(range(0, 50)):
out = conv2d_32(inputfp32)
out.cpu()

如果你能告诉我你是否遇到过同样的问题,那就太好了,如果你能提供解决方案就更好了。

最佳答案

嗯,问题在于Mixed/Half 精度张量计算是通过Tensor Core.

理论上(实际上)Tensor Core 旨在处理精度较低的矩阵计算,例如,您添加 2 fp16< 的 fp32 乘积/strong> 矩阵计算到累加器。

只要 GTX 1660 TI 不附带张量核心,我们就可以得出结论,CUDA 将无法利用 的加速>该 GPU 上的混合/一半精度。

关于python - PyTorch 的 nn.Conv2d 半精度 (fp16) 比 fp32 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69188051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com