Why is half-precision slower than double-precision?
6 次查看(过去 30 天)
显示 更早的评论
MathWorks Support Team
2019-8-19
编辑: MathWorks Support Team
2021-9-22
While executing same calculations in MATLAB, speed of double-precision variables is faster than half-precision.
Is this normal? Is there any way to speed up?
采纳的回答
MathWorks Support Team
2019-8-19
This is true.
n = 100;
t1= zeros(1,n);
t2= zeros(1,n);
for i = 1:n
a = ones(10,10,100,100);
b = zeros(10,10,100,100);
a2 = half(a);
b2 = half(b);
tic
temp = plus(a,b);
c = sum(temp(:));
t1(i) = toc;
tic
temp2 = plus(a2,b2);
c2 = sum(temp2(:));
t2(i) = toc;
end
sum(t1)
sum(t2)
ans =
0.1456
ans=
0.2737
Computations with half-precision data types is slower than those with double precision data types. This is because, unlike double, half-precision is not a native data type in MATLAB and hence, requires additional tweak to do the computations.
0 个评论
更多回答(1 个)
Krishna Bindumadhavan
2020-4-9
编辑:MathWorks Support Team
2021-9-22
To accelerate half precision floating point math, from 20a onwards, you can now generate CUDA code from your MATLAB Algorithm for NVIDIA GPU's with Compute Capability > 5.3 which have native half precision floating point support: https://www.mathworks.com/help/gpucoder/ug/sobel-edge-detection-in-half-precision.html.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 GPU Computing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!