メインメニューを開く

「半精度浮動小数点数」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

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

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)