Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

半精度コード生成のサポート

半精度データ型を数値または変数に代入するには、half (Fixed-Point Designer) コンストラクターを使用します。半精度データ型は 16 ビット メモリしか占有しませんが、その浮動小数点表現を使って同じサイズの整数データ型または固定小数点データ型よりも広いダイナミック レンジを処理できます。詳細については、浮動小数点数 (Fixed-Point Designer)を参照してください。

MATLAB® 関数のサブセットは、半精度入力での使用をサポートしています。さらに、一部の関数は、半精度データ型を使用したコード生成をサポートしています。C および C++ のコード生成には、MATLAB Coder™ が必要です。NVIDIA® GPU 用の CUDA® コード生成には、GPU Coder™ が必要です。次の表では、サポートされている関数をアルファベット順に示しています。MATLAB System object™ は半精度データ型をサポートし、MATLAB System (Simulink)ブロックは実数値をもつ半精度データ型をサポートします。半精度でのコード生成に関する一般的な情報については、half (Fixed-Point Designer) を参照してください。

関数MATLAB シミュレーションのサポートC/C++ コード生成のサポートGPU コード生成のサポート
abs
acos
acosh
activations (Deep Learning Toolbox)

half 入力は単精度にキャストされ、計算は単精度で実行されます。

half 入力は単精度にキャストされ、計算は単精度で実行されます。half での計算を実行するには、coder.DeepLearningConfig でライブラリ ターゲットを 'tensorrt' に設定し、データ型を 'FP16' に設定します。

all
allfinite
and, &
Short-Circuit AND
any
anynan
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

  • 次元の引数は定数でなければなりません。

  • 次元の引数は半精度にできません。

  • 次元の引数は定数でなければなりません。

  • 次元の引数は半精度にできません。

ceil
cell
chol  
circshift
classify (Deep Learning Toolbox)

half 入力は単精度にキャストされ、計算は単精度で実行されます。

half 入力は単精度にキャストされ、計算は単精度で実行されます。half での計算を実行するには、coder.DeepLearningConfig でライブラリ ターゲットを 'tensorrt' に設定し、データ型を 'FP16' に設定します。

coder.ceval (Simulink) 
colon, :
complex 
conj
conv
conv2
cos
cosh
cospi
ctranspose
cumsum

  
dot  
double
empty  
eps

サポートされている構文:

eps('half')

eps(half(1))

eps('like',half(1))

eps(half(1))

eps(half(1))

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
flintmax

サポートされている構文:

flintmax('half')

flintmax('like',half(1))

  
flip

次元の引数は半精度にできません。

次元の引数は半精度にできません。

fliplr
flipud
floor
fma (Fixed-Point Designer)

複素数の半精度入力はサポートされていません。

複素数の半精度入力はサポートされていません。

複素数の半精度入力はサポートされていません。

fplot  
ge, >=
gt, >
half (Fixed-Point Designer)
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 (Fixed-Point Designer)
isinf
isinteger
islogical
ismatrix
isnan
isnumeric
isobject

半精度入力で true を返します。

半精度入力で false を返します。

半精度入力で false を返します。

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

2 出力の構文はサポートされていません。

2 出力の構文はサポートされていません。

logical
lt, <
lu  
max
mean
min
minus, -
mldivide, \

左辺はスカラーでなければなりません。

  
mod
mrdivide, /

右辺はスカラーでなければなりません。

右辺はスカラーでなければなりません。

右辺はスカラーでなければなりません。

mtimes, *

GPU コード生成の場合、実数入力の半精度の行列の乗算を実行できます。

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, ||
Short-Circuit OR
permute
plot  
plot3  
plotmatrix  
plus, +
pow10 (Fixed-Point Designer)
pow2
power, .^
predict (Deep Learning Toolbox)

half 入力は単精度にキャストされ、計算は単精度で実行されます。

half 入力は単精度にキャストされ、計算は単精度で実行されます。half での計算を実行するには、coder.DeepLearningConfig でライブラリ ターゲットを 'tensorrt' に設定し、データ型を 'FP16' に設定します。

predictAndUpdateState (Deep Learning Toolbox)

half 入力は単精度にキャストされ、計算は単精度で実行されます。

half 入力は単精度にキャストされ、計算は単精度で実行されます。half での計算を実行するには、coder.DeepLearningConfig でライブラリ ターゲットを 'tensorrt' に設定し、データ型を 'FP16' に設定します。

prod

half 入力は単精度にキャストされ、計算は単精度で実行されます。その結果、飽和の動作は single 入力と half 入力で異なることになります。

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
realmax

サポートされている構文:

realmax('half')

realmax('like',half(1))

  
realmin

サポートされている構文:

realmin('half')

realmin('like',half(1))

  
rem
repelem
repmat

次元の引数は半精度にできません。

次元の引数は半精度にできません。

reshape

次元の引数は半精度にできません。

次元の引数は半精度にできません。

rgbplot  
round

1 つの入力のみがサポートされます。

1 つの入力のみがサポートされます。

1 つの入力のみがサポートされます。

rsqrt (Fixed-Point Designer)

複素数の半精度入力はサポートされていません。

  
scatter  
scatter3  
sign
sin
single
sinh
sinpi
size
sort  
sqrt
squeeze
storedInteger (Fixed-Point Designer)  
sum

half 入力は単精度にキャストされ、計算は単精度で実行されます。その結果、飽和の動作は single 入力と half 入力で異なることになります。

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  

参考

関連するトピック