Why is half-precision slower than double-precision?

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?

 Réponse acceptée

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.

Plus de réponses (1)

Krishna Bindumadhavan
Krishna Bindumadhavan le 9 Avr 2020
Modifié(e) : MathWorks Support Team le 22 Sep 2021

0 votes

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.

Catégories

Produits

Version

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by