Open1

FP16・FP32のとは何なのか?FP〇〇とは?

二宮 貫(Kan Ninomiya)二宮 貫(Kan Ninomiya)

概要

  1. FP16 (16ビット浮動小数点数):
    • 16ビット(2バイト)で数値を表現。
    • 精度はFP32よりも低いが、メモリ使用量と計算速度が少ないため、高速な処理が可能。
    • FP32の半分のメモリ使用量
  2. FP32 (32ビット浮動小数点数):
    • 32ビット(4バイト)で数値を表現。
    • FP16よりも高い精度を持ち、より複雑な計算や科学技術計算に適している。

FP16とは

  • NVIDIAとMicrosoftが共同でGPUに採用した
    • GeForce、Quadroで採用されている
    • DirectX 9.0のタイミング
  • メモリ容量やディスク容量が節約できるので活用されている
  • モバイル向けGPUではFP16が結構使われている
  • FP16はhalf形
    • float形はFP32
    • floatのほうが多く対応しているっぽい
  • float16と同じ
    • float16も16ビット(2バイト)で数値を表現する
    • 16ビットの中身はこれ
      1. 符号ビット: 1ビット。数値の正負を表します。0は正、1は負を意味します。
      2. 指数部: 5ビット。数値の大きさ(スケール)を決定します。
      3. 仮数部(または小数部): 10ビット。数値の精度(細かさ)を表します。
  • データベースとかで使われるfloat8とは違う物
    • FP16
      • メモリとか計算処理で使われるデータ形式
      • 最大
    • float8(PostgresSQLで聞くやつ)
      • 正しくはFP64(float64)
      • こいつが特殊、普通のやつじゃない、変。
        • PostgresSQLのfloat8の「8」は「8バイト」の意味で「64ビット」と同等
          • 「なんでお前だけバイトで書いとんねん」という感じ
          • 中身はFP64(float64)
        • FP16とかは「16ビット」をベースに書いている
      • システムによって違う
        • 64ビットの浮動小数点数(通常はdouble precisionと同等)になったりする
      • 最大