Половина поддержки генерации кода точности

Чтобы присвоить тип данных полуточности номеру или переменной, используйте half конструктор. Тип данных полуточности занимает 16 битов памяти, но ее представление с плавающей точкой позволяет ему обработать более широкие динамические диапазоны, чем целое число или типы данных с фиксированной точкой, одного размера. Для получения дополнительной информации смотрите Числа с плавающей запятой.

Подмножество MATLAB® функции поддерживаются для использования с входными параметрами полуточности. Кроме того, некоторые функции поддерживают генерацию кода с типами данных полуточности. C и генерация Кода С++ требует MATLAB Coder™. CUDA® генерация кода для NVIDIA® Графические процессоры требуют GPU Coder™. Поддерживаемые функции появляются в алфавитном порядке в следующей таблице. Для получения общей информации относительно генерации кода с половиной точности, смотрите half.

ФункцияПоддержка симуляции MATLABПоддержка Генерации кода C/C++Поддержка генерации кода графического процессора
abs✔✔✔
acos✔✔✔
acosh✔✔✔
activations (Deep Learning Toolbox)✔

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности.

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. Чтобы выполнить расчеты в половине, поставьте цель библиотеки к 'tensorrt' и набор тип данных к 'FP16' в coder.DeepLearningConfig.

all✔✔✔
and, &✔✔✔
any✔✔✔
area✔  
asin✔✔✔
asinh✔✔✔
atan✔✔✔
atan2✔✔✔
atanh✔✔✔
bar✔  
barh✔  
cast

✔

Поддерживаемый синтаксис:

cast(_,'half')

cast(_,'like',p)

✔

Поддерживаемый синтаксис:

cast(_,'half')

cast(_,'like',p)

✔

Поддерживаемый синтаксис:

cast(_,'half')

cast(_,'like',p)

cat✔

✔

  • Аргумент Dimension должен быть константой.

  • Аргумент Dimension не может быть половиной точности.

✔

  • Аргумент Dimension должен быть константой.

  • Аргумент Dimension не может быть половиной точности.

ceil✔✔✔
cell✔✔✔
circshift✔✔✔
classify (Deep Learning Toolbox)✔

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности.

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. Чтобы выполнить расчеты в половине, поставьте цель библиотеки к 'tensorrt' и набор тип данных к 'FP16' в coder.DeepLearningConfig.

coder.ceval ✔✔
colon, :✔✔✔
complex✔✔ 
conj✔✔✔
conv✔✔✔
conv2✔✔✔
cos✔✔✔
cosh✔✔✔
cospi✔✔✔
ctranspose✔✔✔
cumsum

✔

  
dot✔  
double✔✔✔
empty✔  
eps✔✔✔
eq, ==✔✔✔
exp✔✔✔
expm1✔✔✔
eye

✔

Поддерживаемый синтаксис:

eye(_,'half')

eye(_,'like',p)

✔

Поддерживаемый синтаксис:

eye(_,'half')

eye(_,'like',p) где p половина точности. Другие входные параметры не могут быть половиной точности.

✔

Поддерживаемый синтаксис:

eye(_,'half')

eye(_,'like',p) где p половина точности. Другие входные параметры не могут быть половиной точности.

fft✔✔ 
fft2✔✔ 
fftn✔✔ 
fftshift✔✔✔
fix✔✔✔
flip✔

✔

Аргумент Dimension не может быть половиной точности.

✔

Аргумент Dimension не может быть половиной точности.

fliplr✔✔✔
flipud✔✔✔
floor✔✔✔
fma

✔

Комплексные входные параметры полуточности не поддерживаются.

✔

Комплексные входные параметры полуточности не поддерживаются.

✔

Комплексные входные параметры полуточности не поддерживаются.

fplot✔  
ge, >=✔✔✔
gt, >✔✔✔
half✔✔✔
horzcat✔✔✔
hypot✔✔✔
ifft✔✔ 
ifft2✔✔ 
ifftn✔✔ 
ifftshift✔✔✔
imag✔✔ 
Inf

✔

Поддерживаемый синтаксис:

Inf(_,'half')

Inf(_,'like',p)

✔

Поддерживаемый синтаксис:

Inf(_,'half')

Inf(_,'like',p)

✔

Поддерживаемый синтаксис:

Inf(_,'half')

Inf(_,'like',p)

int16✔✔✔
int32✔✔✔
int64✔✔✔
int8✔✔✔
isa✔✔✔
iscolumn✔✔✔
isempty✔✔✔
isequal✔✔✔
isequaln✔✔✔
isfinite✔✔✔
isfloat✔✔✔
isinf✔✔✔
isinteger✔✔✔
islogical✔✔✔
ismatrix✔✔✔
isnan✔✔✔
isnumeric✔✔✔
isobject

✔

Возвращает true с входом полуточности.

✔

Возвращает false с входом полуточности.

✔

Возвращает false с входом полуточности.

isreal✔✔✔
isrow✔✔✔
isscalar✔✔✔
issorted✔  
isvector✔✔✔
ldivide✔✔✔
le, <=✔✔✔
length✔✔✔
line✔  
log✔✔✔
log10✔✔✔
log1p✔✔✔
log2

✔

✔

Два выходных синтаксиса не поддерживаются.

✔

Два выходных синтаксиса не поддерживаются.

logical✔✔✔
Logical Operators: Short-Circuit && ||✔✔✔
lt, <✔✔✔
max✔✔✔
mean✔✔✔
min✔✔✔
minus, -✔✔✔
mldivide, \

✔

Левая сторона должна быть скаляром

  
mod✔✔✔
mrdivide, /

✔

Правая сторона должна быть скаляром

✔

Правая сторона должна быть скаляром

✔

Правая сторона должна быть скаляром

mtimes, *✔✔

✔

Для Генерации кода графического процессора можно выполнить умножение матриц полуточности с действительными входными параметрами.

NaN

✔

Поддерживаемый синтаксис:

NaN(_,'half')

NaN(_,'like',p)

✔

Поддерживаемый синтаксис:

NaN(_,'half')

NaN(_,'like',p)

✔

Поддерживаемый синтаксис:

NaN(_,'half')

NaN(_,'like',p)

ndims✔✔✔
ne, ~=✔✔✔
not✔✔✔
numel✔✔✔
ones

✔

Поддерживаемый синтаксис:

ones(_,'half')

ones(_,'like',p)

✔

Поддерживаемый синтаксис:

ones(_,'half')

ones(_,'like',p)

✔

Поддерживаемый синтаксис:

ones(_,'half')

ones(_,'like',p)

or, ||✔✔✔
permute✔✔✔
plot✔  
plot3✔  
plotmatrix✔  
plus, +✔✔✔
pow10✔✔✔
pow2✔✔✔
power, .^✔✔✔
predict (Deep Learning Toolbox)✔

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности.

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. Чтобы выполнить расчеты в половине, поставьте цель библиотеки к 'tensorrt' и набор тип данных к 'FP16' в coder.DeepLearningConfig.

predictAndUpdateState (Deep Learning Toolbox)✔

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности.

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. Чтобы выполнить расчеты в половине, поставьте цель библиотеки к 'tensorrt' и набор тип данных к 'FP16' в coder.DeepLearningConfig.

prod

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. В результате поведение насыщения отличается между одним и половиной входных параметров:

maxhalf = half.realmax;
isequal(prod([maxhalf 2 0.5]), maxhalf)
ans =

  logical

   1
maxsingle = realmax('single');
isequal(prod([maxsingle 2 0.5]), maxsingle)
ans =

  logical

   0
✔✔
rdivide✔✔✔
real✔✔✔
rem✔✔✔
repelem✔✔✔
repmat✔

✔

Аргумент Dimension не может быть половиной точности.

✔

Аргумент Dimension не может быть половиной точности.

reshape✔

✔

Аргумент Dimension не может быть половиной точности.

✔

Аргумент Dimension не может быть половиной точности.

rgbplot✔  
round

✔

Только один вход поддержан

✔

Только один вход поддержан

✔

Только один вход поддержан

rsqrt

✔

Комплексные входные параметры полуточности не поддерживаются

  
scatter✔  
scatter3✔  
sign✔✔✔
sin✔✔✔
single✔✔✔
sinh✔✔✔
sinpi✔✔✔
size✔✔✔
sort✔  
sqrt✔✔✔
squeeze✔✔✔
storedInteger✔  
sum

✔

Половина входных параметров брошена к одинарной точности, и расчеты выполняются в одинарной точности. В результате поведение насыщения отличается между одним и половиной входных параметров:

maxhalfint = half.flintmax;
isequal(sum([maxhalfint, 1, -1]), maxhalfint)
ans =

  logical

   1
maxsingleint = flintmax('single');
isequal(sum([maxsingleint, 1, -1]), maxsingleint)
ans =

  logical

   0
✔✔
tan✔✔✔
tanh✔✔✔
times, .*✔✔✔
transpose✔✔✔
typecast✔  
uint16✔✔✔
uint32✔✔✔
uint64✔✔✔
uint8✔✔✔
uminus✔✔✔
uplus✔✔✔
vertcat✔✔✔
xlim✔  
ylim✔  
zeros

✔

Поддерживаемый синтаксис:

zeros(_,'half')

zeros(_,'like',p)

✔

Поддерживаемый синтаксис:

zeros(_,'half')

zeros(_,'like',p)

✔

Поддерживаемый синтаксис:

zeros(_,'half')

zeros(_,'like',p)

zlim✔  

Смотрите также

Похожие темы