「半精度浮動小数点数」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
− | '''半精度浮動小数点数''' | + | '''半精度浮動小数点数'''(読み:はんせいどふどうしょうすうてん)とは、浮動小数点の表現方法のひとつで、16ビット形式のものをいう。 |
− | + | IEEE 754-2008では「binary16」と命名されている。巷では「FP16」や「Half」などとも呼ばれる。 | |
− | IEEE 754- | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== 概要 == | == 概要 == | ||
半精度浮動小数点数は主に[[コンピューターグラフィックス]]界隈で流行りの「[[HDR]]」で使われている数値形式である。 | 半精度浮動小数点数は主に[[コンピューターグラフィックス]]界隈で流行りの「[[HDR]]」で使われている数値形式である。 | ||
− | + | [[機械学習]]とも相性がいいらしいが詳しくは知らん。 | |
− | |||
=== 事の経緯 === | === 事の経緯 === | ||
− | その昔、[[RGB]] | + | その昔、[[RGB]]各8ビット整数の24ビット(穴埋めして32ビット)では色表現できる範囲が狭いという問題を叫ぶ人があらわれた。 |
かつて「人間の目で認識できる限界」と絶賛された「24ビットカラー(16,777,216色)とかショボいじゃん」という時代が到来したのである。 | かつて「人間の目で認識できる限界」と絶賛された「24ビットカラー(16,777,216色)とかショボいじゃん」という時代が到来したのである。 | ||
これは本物の写真のような自然画ならともなく、色の偏ったアニメ調の絵や現実離れしたCGだと最悪256色しか表現できないケースがあったためである。 | これは本物の写真のような自然画ならともなく、色の偏ったアニメ調の絵や現実離れしたCGだと最悪256色しか表現できないケースがあったためである。 | ||
− | これに対して[[NVIDIA]] | + | これに対して[[NVIDIA]]は2002年ごろにRGB各16ビットの浮動小数点数で表すという手法を発表した。 |
この手法はRGB表現で32ビット整数より1.5倍の48ビットの帯域を必要とし、絵は綺麗になるがレンダリングが死ぬほど遅いという問題点を抱えていた。 | この手法はRGB表現で32ビット整数より1.5倍の48ビットの帯域を必要とし、絵は綺麗になるがレンダリングが死ぬほど遅いという問題点を抱えていた。 | ||
− | 一方、[[ATI]](現[[AMD]] | + | 一方、[[ATI]](現[[AMD]])からはRGB各10ビットの浮動小数点で表すという手法が登場した(Radeon X三桁シリーズ)。 |
+ | この手法は計32ビットであるため現状の[[ハードウェア]]への負荷の差はなく有利であったが、10ビット刻みとか常識的に考えて[[プログラマ]]が死ぬほど扱いにくいという問題点を抱えていた。 | ||
− | + | まさに典型的なNVIDIAとAMDの争いのひとつで時代背景的には[[PS3]]と[[Xbox 360]]がモロに直撃していた。当時ゲーム開発で広く使われていた「[[C言語]]に半精度浮動小数点数などない」という問題もあったが、NVIDIAが勝手に「half型」を拡張搭載した言語を出したりしたため、最終的には[[ハードウェア]]技術の進歩でNVIDA方式を力押しする手法が一般化し、そのフォーマットを標準化した[[OpenEXR]]なるものが登場して現在に至っている。現在では[[OpenGL]]や[[Direct3D]]にも採用されている。 | |
− | + | == IEEE 754形式 == | |
− | [[ | + | IEEE 754標準は'''binary16'''を以下のように定めている。 |
+ | * 符号ビット: 1 ビット | ||
+ | * [[指数]]部の幅: 5 ビット | ||
+ | * [[仮数]]部の幅=精度: 11 (明示的には10ビット) | ||
== 関連項目 == | == 関連項目 == | ||
− | + | ||
− | + | == 参考文献 == | |
− | + | {{reflist}} | |
+ | |||
+ | {{stub}} |