2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

後継GPUで倍精度が約30分の1に。インスタンスタイプを型番で選んで大丈夫ですか?

2
Posted at

後継機で減った倍精度演算器

안녕하신게라!パナソニック コネクト株式会社クラウドソリューション部の加賀です。

NVIDIAのBlackwell世代、B200の倍精度(FP64)性能は40 TFLOPSです。ところが後継のBlackwell Ultra(B300)では、1.2〜1.3 TFLOPSまで落ちたと報告されています1。30分の1前後です。GPUは型番が新しいほど性能が上がるものだと思い込んでいたので、単位を読み間違えたのかと思いました。どうして性能が落ちたのかが分からないままでは、クラウドでインスタンスタイプを選ぶときに判断がつきません。

倍精度とは、64ビットで数を表す計算の精度です。気象予測や耐震設計、新材料の探索のような科学シミュレーションは、桁が足りないと答えが信用できなくなるため、この精度に頼ってきました。AI向けのGPUでは、倍精度の性能が大きく下がっています。

この記事では、主にNVIDIAがこの状況にどう対応したのかを、公表された動きから読みます。2026年7月に開発者向けプレビューとして出たCUDA Toolkit 13.4のリリースノート2に、次の一文が載りました。

Emulated FP64 matrix multiplications now leverage the Ozaki-II scheme when it provides a performance benefit over the Ozaki-I scheme; the Ozaki-II scheme is supported on NVIDIA Ampere and newer GPUs.

「Ozaki」は、芝浦工業大学の尾崎克久氏の名前です。根拠の一部は査読前の論文なので、事実、論文の主張、私の見方は書き分けます。

NVIDIAが選んだこと

公表された資料や論文から読み取れる動きは、次の4点です。

  1. 倍精度の性能を大きく下げた。B200からB300で、倍精度の性能は約30分の1になっています1。公表されているのは性能の数字ですが、回路を減らしたと見られます。ただし、低精度ならどれも増えたわけではありません。松岡聡氏の論文によると、B300ではFP8やFP4が強化された一方、cuBLASのエミュレーションが使うINT8の性能も大きく下がっています3。
  2. 性能表に、エミュレーションによる倍精度の行列積の性能が載った。倍精度の行列積(DGEMM)を、別の演算器でエミュレーション(模倣)した性能です。NVIDIAの公式ブログでは、FP64 matrixの欄がRubinで200 TFLOPS、Blackwellで150 TFLOPSとされ、いずれもテンソルコアを使ったエミュレーションのピーク値と注記されています4。このブログはScheme IIがcuBLASに入る前に公開されたもので、後で触れるB200の175 TFLOPSとは時点が違います。松岡氏の論文は、Rubinの仕様に「Emulated DGEMM」という欄が初めて明示されたと見て、これを倍精度相当の行列積性能を得る公式な経路として扱っています3。
  3. cuBLASに、倍精度のエミュレーションを入れた。2025年10月にOzaki Scheme Iが入りました。Ozaki Scheme IIは2026年7月の開発者向けプレビュー(CUDA 13.4)で加わり、9月の13.4 Update 1から正式版に含まれています。速いほうが自動で選ばれます2。
  4. 精度が足りない入力は、ネイティブの倍精度に自動で戻す。cuBLASのドキュメントでは、ADP(automatic dynamic precision)という仕組みが入力を調べ、エミュレーションでは精度を保てないと判断すると、ネイティブの回路へ退避させるとされています5。

NVIDIAの公表値では、B200で倍精度の行列積が最大175 TFLOPSです2。性能表の倍精度40 TFLOPSの4.4倍にあたります。

B200 B300 Rubin
ネイティブのFP64 40 TFLOPS(NVIDIA公表4) 1.2〜1.3 TFLOPS(報告値1) ベクトル演算で33 TFLOPS(NVIDIA公表4)
エミュレーションのDGEMM 最大175 TFLOPS(NVIDIA公表2) FP8経由の理論上限で約135 TFLOPS(論文の推定3) 最大212 TFLOPS(NVIDIA公表2。初出は開発者向けプレビューの13.4)

この選択の背景

NVIDIAが単独で決めた話ではなく、複数の立場がつながっています。

研究者の側では、発想の原型は2012年に尾崎氏らが発表した論文6です。その後、大友広幸氏らがAI向けのINT8テンソルコアに載せ7、2025年にNVIDIAのcuBLASに入ったのがOzaki Scheme Iです。2025年4月に尾崎氏、内野佑基氏、今村俊幸氏が出したOzaki Scheme IIは中国剰余定理を使う方式で、Scheme Iとは原理が異なります。同じ精度を出すための計算の回数を、おおむね半分にまで減らしています8。中国剰余定理の中身は、別の記事で扱う予定です。

メーカーの側では、NVIDIAが、Ozaki Scheme Iで倍精度相当の精度を実行時に保証する仕組み(ADP)を自社の研究者らで開発し、cuBLASに組み込んで製品にしました。その内容は、2026年1月に大阪で開かれた国際会議SCA/HPCAsia 2026で論文として発表されています。ADPの検査コストは、この論文によると実行時間の10%未満です(評価したのはScheme Iです)5。方式を考えたのは日本の研究者が中心で、製品として安心して使える形に仕上げたのはNVIDIAの研究者です。

スーパーコンピュータの現場では、理化学研究所が2026年3月の開発状況資料で、次世代機「富岳NEXT」の数値計算ライブラリ開発の方向性として、「FP64行列演算エミュレーション技術(Ozaki Scheme)による低精度演算器の活用」を挙げています。富岳NEXTは富士通・NVIDIAとの連携で、2030年ごろの稼働を目指しています9。

論文による整理もあります。理研 計算科学研究センター(R-CCS)の松岡聡センター長が、「FP8 is All You Need (Part 1): Debunking Hardware FP64 as the HPC Holy Grail」という論文を出しています3。意訳すると「FP8だけあればいい。倍精度のハードウェアがHPCの聖杯だという通説を覆す」です。論文は、行列演算が中心の倍精度の計算では、AI市場が支える低精度の演算器こそが主な基盤になりうると、条件付きで論じています。

松岡氏の論文は査読前のプレプリントで、著者本人が「37回目の改訂版」と注記しています。タイトルにPart 1とあるとおり、続きがある論文です。本記事の紹介は、「こう論じている」という範囲にとどまります。

つまり、日本の大学や研究機関の研究(尾崎氏ら)、メーカーの研究と製品化(NVIDIA)、スパコンの現場(理研、富岳NEXT)が、同じ方向を向いています。日本発の方式が、国内外の研究者の積み重ねを経て製品になった形です。最初の論文(2012年)からScheme IIの採用(2026年)まで数えると、14年かかっています。

時期 出来事
2012年 尾崎氏らの論文が Numerical Algorithms に掲載。Ozaki Scheme Iの原型6
2023年6月 大友氏、尾崎氏、横田理央氏が、INT8テンソルコアでの実装をarXivへ7
2025年4月 尾崎氏、内野氏、今村氏の Ozaki Scheme II がarXivへ8
2025年10月 CUDA Toolkit 13.0 Update 2。cuBLASにOzaki Scheme Iが入る2
2025年11月 NVIDIAの研究者らによるADPの論文がarXivへ。2026年1月にSCA/HPCAsia 2026(大阪)で発表5
2026年3月 理研が、富岳NEXTのライブラリ開発の方向性としてOzaki Schemeを挙げる9
2026年5月 松岡氏の論文の初版がarXivへ3
2026年7月 Ozaki Scheme II の論文が IJHPCA にオンライン掲載8
2026年7月 CUDA Toolkit 13.4(開発者向けプレビュー)。cuBLASにOzaki Scheme IIが入る2
2026年9月 CUDA Toolkit 13.4 Update 1。Scheme IIを含む正式版2

この選択をどう読むか

ここからは公式の説明ではなく、公表された動きを並べたときの私の見方です。

1. ソフトウェアで補う倍精度

FP8やFP4のようなAI向けの演算器が増える一方で倍精度の回路が減ったので、面積の配分が変わったと読めます。AI向けの需要が大きいほど、倍精度に面積を割く理由は小さくなります。ただ、回路を減らすだけでは、科学技術計算の用途に応えにくくなります。そこで「低精度の演算器で、倍精度と同じ精度の答えを出す」道を用意したのだと思います。NVIDIAは、このエミュレーションが性能と電力効率の双方を改善するとしています2。電力は、スーパーコンピュータの運用で大きな制約です。

2. 回路を減らしつつ、ゼロにはしていない

4番目の項目で触れた退避先の回路は、B300でも削られただけで、ゼロにはなっていません。保証の受け皿として、最小限は残していると読めます。

次世代のRubinでは、ベクトル演算の倍精度が33 TFLOPSになっています。B300と比べれば大きく戻っていますが、B200の40 TFLOPSよりは低い値です4。NVIDIAは、行列積が中心ではない科学技術計算のために、メモリ帯域を使い切れるだけの倍精度の性能は確保する方針を示しています4。行列積はエミュレーション、それ以外は必要十分なネイティブの回路、という役割分担です。

3. AMDは製品を分けた

AMDのGPUでも、AI向けの製品では倍精度が減っています。行列演算のFP64は、MI300X(2023年)の163.4 TFLOPSからMI355X(2025年)の78.6 TFLOPSへと下がり、2026年7月に出たAI向けのMI455Xでは5 TFLOPSです。一方でAMDは、科学技術計算向けにMI430Xという別の製品を用意し、ハードウェアの倍精度で288 TFLOPSを見込むとしています(2027年に提供予定)10。NVIDIAが同じGPUの上でエミュレーションを使って補うのに対し、AMDは用途で製品を分けたと読めます。

AMDもエミュレーションには取り組んでいて、ROCmのhipBLASLtにOzaki Scheme IIを入れる変更が開発中です(2026年10月時点で未マージ)11。

欲しいのは回路ではなく精度

要件定義書に「Redisを使うこと」と書いてあったけれど、本当に欲しかったのはRedisではなく「複数のサーバでセッションを共有できる手段」だった、という経験はないでしょうか。手段が要件の位置に書かれていると、別の手段で同じことが実現できる状況になっても、替えてよいかどうかを判断できません。

GPUインスタンスの選定でも同じことが起きます。NVIDIAの性能表には、ネイティブの値とエミュレーションの値が並んでいます。そのため、要件に「倍精度性能が○TFLOPS以上のGPU」とだけ書かれていると、利用する予定の人に「エミュレーションでもいいですか」と聞き直す一手間が増えます。エミュレーションで足りるかを判断するのは依頼する側で、クラウドの担当者が代わりに決めるものではありません。「倍精度性能が○TFLOPS以上(エミュレーションでも可)」と書いてあれば、この一手間はなくなります。

倍精度の回路は、科学技術計算が長いあいだ頼ってきた手段でした。NVIDIAの選択は、手段の形で書かれていた要件を、「回路」から「精度の保証」へ寄せる動きだと言えます。松岡氏の論文の抄録にも、native FP64 recast from a hardware requirement into a derived accuracy guarantee(ネイティブのFP64を、ハードウェアの要件から、そこから導かれる精度の保証へと位置づけ直す)という一文があります。

一方で、AMDのMI430Xのように、倍精度を回路で出す製品も出てくる予定です10。メーカーによって、倍精度を回路で出すかエミュレーションで出すかが分かれているからこそ、要件には許せる手段の範囲まで書いておく意味があります。

エミュレーションの限界

回路を減らす判断は、エミュレーションで足りる範囲を前提にしていますが、足りない範囲もあります。依頼する側が「エミュレーションでも可」と書けるかどうかを決めるときは、次の点が判断の材料になります。

  • 行列積向けの方式です
    疎行列やFFTのように、行列積の形をしていない計算には、そのままでは使えません。連立方程式や固有値を扱う上位のライブラリ(cuSOLVER)への導入は、CUDA 13.2から始まっています2。
  • 小さい行列では速くなりません
    小さな問題では、DGEMMより遅くなる例が論文にあります8。
  • 倍精度の回路が強いGPUでは、メリットが小さくなります
    GH200では、約1.3倍にとどまります8。
  • 特殊な値の扱いに制約があります
    InfやNaNは、この方式では暗黙には扱えず、ライブラリが追加の処理で補います12。IEEE 754の倍精度を完全に再現するものではありません8。
  • Scheme IIの精度保証を裏づける論文は、私が確認した範囲では見当たりません
    ADPの保証を示した論文はOzaki Scheme Iが対象で、Scheme IIへの拡張は対象外と明記されています5。cuBLASのドキュメントでは、Ozaki-IとOzaki-IIに基づく固定小数点エミュレーションの既定が、ADPによる動的な仮数ビット制御になっています。ただし、Scheme IIを名指しして保証を説明しているわけではありません12。
  • 論文の見積もりには幅があります
    上限は前提によって変わり、大きな正方の密行列のDGEMMは、入力の変換のコストのために上限の半分あたりで頭打ちになる、と松岡氏の論文は書いています3。

試すには

倍精度の数字だけでインスタンスタイプを比べると、行列積が中心の計算では、エミュレーションで補える分を見落とします。確かめたいのは、行列積中心かどうかです。

動かすだけなら、CUBLAS_EMULATE_DOUBLE_PRECISION=1 という環境変数を設定するのがいちばん手軽です。CUDA Toolkit 13.0 Update 2以降のcuBLASで有効になり、cuBLASのDGEMMやZGEMMを呼んでいるコードなら、書き換えは要りません。13.4以降ならScheme IIも自動で選ばれます。既定の戦略(performant)では、エミュレーションのほうが速いときだけ使われます。倍精度の回路が強いGPUでは切り替わらないことがあるので、動作を確かめたいときは CUBLAS_EMULATION_STRATEGY=eager もあわせて設定します12。クラウドのGPUインスタンスでも、A100やL4のようなAmpere世代以降のGPUなら同じ方法で試せます(T4のようなTuring世代は対象外です)。AMDのGPUでは、ライブラリ(hipBLASLt)のエミュレーションがまだ開発中なので、現時点では正式版の設定だけで試すことはできません11。

AMDのGPUで試したい場合は、理研R-CCSによるScheme IIの実装 GEMMul8 が手がかりになります。GEMMul8はAMDのGPU(ROCm 7.0以降)にも対応していて、cuBLASやhipBLASの呼び出しを横取りし、アプリケーションのソースを書き換えずに使うモードも用意されています。

おわりに

倍精度の回路を減らした判断が正しかったかどうかは、まだ全部は言えません。行列積の形をした大きな計算では、精度を守る仕組みを備えたうえで、回路の不足を補う実装が製品に入りました。ただし、その仕組みの論文での裏づけは、今のところScheme Iまでです。それ以外の計算では、B300のように倍精度の回路を大きく削ったGPUで不足が残ります。Rubinでは、ベクトル演算の倍精度をB300より戻すことで、この部分を補う形になっています。ただ、B200の水準には届いていません。AMDは、倍精度の回路が強い科学技術計算向けの製品(MI430X)を別に出す予定で、この部分に応えようとしています。

仕事に引き寄せると、依頼する側が許せる手段の範囲まで要件に書いておけば、聞き直す一手間がなくなります。


お断り
記事内容は個人の見解であり、所属組織の立場や戦略・意見を代表するものではありません。
あくまでエンジニアとしての経験や考えを発信していますので、ご了承ください。
本記事が参照した松岡聡氏の論文は査読前のプレプリントです。引用した主張・数値は確定した知見ではなく、同氏がそう論じている内容として紹介しています。

  1. B200の40 TFLOPSは Ozaki Scheme II 論文(arXiv:2504.08009)のTable 1、B300の1.2〜1.3 TFLOPSは松岡氏の論文に基づく数字で、同論文はNVIDIAの公式データシートを出典としています。芝浦工業大学のプレスリリースも同じ出典でこの比較を紹介しています。B300側は、データシートでの直接確認はできていません。 ↩ ↩2 ↩3

  2. NVIDIA「CUDA Toolkit Release Notes」の cuBLAS: Release 13.4。引用は同リリースノートの該当項目の冒頭の一文です。CUDA 13.4に同梱されたcuBLAS本体の版は13.7.0です。B200で最大175 TFLOPS(DGEMM)と295 TFLOPS(ZGEMM)、Rubinで最大212 TFLOPSと301 TFLOPSとも書かれています。Rubin対応では、Ozaki-IとOzaki-IIに加えて新しいTI16型を使うと説明されています。CUDA Toolkit Archiveでは、13.4.0が「Developer Preview (July 2026)」、13.4.1(Update 1)が2026年9月の公開です。性能と電力効率の改善は、cuBLAS 13.0 Update 2の項目にある「improves performance and power-efficiency」によります。cuSOLVERへの導入は、cuSOLVER 13.2の項目にある「Added FP64 fixed-point emulation support to cuSOLVERDn」によります。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10

  3. S. Matsuoka: FP8 is All You Need (Part 1): Debunking Hardware FP64 as the HPC Holy Grail, arXiv:2606.06510, 2026. 査読前のプレプリントです。初版(v1)の投稿は2026年5月28日です。本記事が参照したのは2026年9月8日(UTC)に投稿されたv4(論文内の表記は Revision 37、Sep 3rd version)です。B300のINT8性能の低下は同論文のTable 4によります。出荷中のcuBLASのエミュレーションがINT8の経路を使うことも、同論文の記述によります。B300のFP8経由のエミュレーション上限約135 TFLOPS(別の前提では、GB300で約125 TFLOPS)、Rubinの大きな密行列DGEMMで約235 TFLOPS(同じく別の前提では約148 TFLOPS)という数字は、同論文の記述に基づく推定値で、NVIDIAの公表値ではありません。論文のモデルはFP8経由のOzaki Scheme IIが前提で、cuBLASのRubin対応(Ozaki Scheme I/IIとTI16型を使う)とは経路が違うため、NVIDIAの公表値(Rubinで最大212 TFLOPS)とは直接比べられません。B300のエミュレーション性能は、本記事が参照した資料の範囲では、NVIDIAの公表値を確認できていません。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  4. NVIDIA Developer Blog「Inside the NVIDIA Vera Rubin Platform: Six New Chips, One AI Supercomputer」(2026年1月5日公開、3月16日更新)のTable 3。FP64 vectorはHopper 34、Blackwell 40、Rubin 33 TFLOPS、FP64 matrixはHopper 67、Blackwell 150、Rubin 200 TFLOPSで、BlackwellとRubinのmatrixの値には「Peak performance using Tensor Core-based emulation algorithms」と注記されています。行列積が中心ではない計算向けに、メモリ帯域を使い切れるだけの倍精度の性能を確保するという方針も、同記事の記述によります。 ↩ ↩2 ↩3 ↩4 ↩5

  5. cuBLASのドキュメント「Floating Point Emulation」の節より。既定は動的な仮数ビット制御で、その中核がADPです。同節はADPの出典として A. Schwarz ほか: Guaranteed DGEMM Accuracy While Using Reduced Precision Tensor Cores Through Extensions of the Ozaki Scheme, SCA/HPCAsia '26, pp. 91-101 を挙げています。DOI: 10.1145/3773656.3773670 / arXiv:2511.13778。著者11名はいずれもNVIDIAの所属です。arXivの初版は2025年11月16日で、SCA/HPCAsia 2026は2026年1月26〜29日に大阪で開かれました。同論文によるADPの検査コストは、実行時間の10%未満です。ただし同論文が評価しているのはOzaki Scheme Iで、IIへの拡張は対象外と明記されています。 ↩ ↩2 ↩3 ↩4

  6. K. Ozaki, T. Ogita, S. Oishi, S. M. Rump: Error-Free Transformations of Matrix Multiplication by Using Fast Routines of Matrix Multiplication and its Applications, Numerical Algorithms, Vol. 59:1 (2012), pp. 95-118. DOI: 10.1007/s11075-011-9478-1。掲載号は2012年1月で、オンライン公開は2011年6月です。 ↩ ↩2

  7. H. Ootomo, K. Ozaki, R. Yokota: DGEMM on integer matrix multiplication unit, The International Journal of High Performance Computing Applications, Vol. 38:4 (2024), pp. 297-313. arXiv:2306.11975。arXivの初版は2023年6月21日です。cuBLAS 13.0 Update 2のリリースノートは、Ozaki Scheme I(リリースノートでの表記は「Ozaki-1 Scheme」)の出典としてこの論文をリンクしています。 ↩ ↩2

  8. K. Ozaki, Y. Uchino, T. Imamura: Ozaki scheme II: A GEMM-oriented emulation of floating-point matrix multiplication using an integer modular technique, The International Journal of High Performance Computing Applications, 2026. DOI: 10.1177/10943420261467787 / arXiv:2504.08009。arXivの初版は2025年4月10日です。GH200で約1.3倍(80.2 TFLOPS 対 60.9 TFLOPS)、倍精度が弱いRTX 4090で約16倍(9.81 TFLOPS 対 0.62 TFLOPS)という比較は、同論文のTable 3とTable 4によります。「同じ精度を出すための計算の回数がおおむね半分」は、DGEMM級の精度を出すのに、Scheme Iは7〜8分割で行列積28〜35回、Scheme IIは行列積14〜15回という論文の数字からの要約です(Scheme IIの回数は、入力の値の幅に依存する条件付きの数字です)。Scheme Iの回数は論文の本文の値で、同論文のTable 2の対応表では8分割が36回です。同論文は、この方式がIEEE 754の倍精度の仕様をビット単位まで完全に実装するものではなく、NaNや無限大、符号付きのゼロには別の処理が必要だと明記しています。 ↩ ↩2 ↩3 ↩4 ↩5 ↩6

  9. 芝浦工業大学「芝浦工業大学・尾崎教授の計算アルゴリズムをNVIDIAが新たに採用」2026年9月30日。理研の2026年3月の開発状況資料の紹介と、富岳NEXT(富士通・NVIDIAとの連携、2030年ごろの稼働を目指す)は、いずれも同プレスリリースの記述によります。 ↩ ↩2

  10. AMD公式の製品ページ(MI300X、MI355X、MI455X、MI430X)。FP64の行列演算のピーク値は、MI300Xが163.4 TFLOPS(ベクトルは81.7 TFLOPS)、MI355Xが78.6 TFLOPS、MI455Xが5 TFLOPSです。MI455Xの公開日は2026年7月23日です。MI430Xの288 TFLOPSは「hardware-based」のFP64のピーク値で、2026年7月時点のAMDの見込みとして示されています。提供は2027年の予定とされています。2026年4月のAMDのブログでは「200 TFLOPS超」でした。製品ページにある「Vera Rubinの8.7倍」は、ハードウェアのFP64ベクトル性能どうしの比較で、Rubinのエミュレーションの値は含みません。 ↩ ↩2

  11. ROCm/rocm-libraries のプルリクエスト「feat(hipBLASLt): FP32/FP64 emulation」(2026年9月21日作成、2026年10月時点でドラフト)。INT8の行列積によるOzaki Scheme IIで、対象はMI350X/MI355X、利用者が有効にしたときだけ使う方式です。MI455Xへの対応やZGEMMは今後の課題とされています。連立方程式などを扱うrocSOLVERには、cuSOLVERのエミュレーションに相当する機能がまだないと、hipSOLVERのプルリクエスト(#12490)に書かれています。 ↩ ↩2

  12. NVIDIA cuBLAS ドキュメント「Floating Point Emulation」の節。固定小数点エミュレーションの対応は compute capability 8.x、9.0、10.x、11.0、12.x、CUDA 13.0 Update 2以降です。環境変数 CUBLAS_EMULATE_DOUBLE_PRECISION でエミュレーションを有効にできます。既定のエミュレーション戦略は performant で速くなる場合にだけエミュレーションを使い、CUBLAS_EMULATION_STRATEGY=eager では可能な限り使います。固定小数点エミュレーションはOzaki-IとOzaki-IIに基づき、既定の仮数ビット制御は動的(ADP)です。InfやNaNは固定小数点エミュレーションでは暗黙には扱えず、ライブラリの設定に応じて追加の処理で対応すると書かれています(「Support For Floating Point Special Values」の節)。 ↩ ↩2 ↩3

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?