Why is half-precision slower than double-precision?

9 次查看(过去 30 天)
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
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.

更多回答(1 个)

Krishna Bindumadhavan
编辑: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.

类别

Help CenterFile Exchange 中查找有关 GPU Computing 的更多信息

产品


版本

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by