1. [Wiki](https://feex.it/wiki/)
2. [ハードウェア](https://feex.it/wiki/hardware/)
3. [システムとアーキテクチャ](https://feex.it/wiki/hardware/system/)
4. FMAおよびFMA3

# FMAおよびFMA3

アーキテクチャリファレンス: Feex

FMA、FMA3とも呼ばれます

FMAは、浮動小数点の乗算と加算を計算し、最後に1回だけ丸めを行います。FMA3は3オペランドのx86積和演算命令ファミリーを指し、AVX2とは個別に列挙されます。

## 確認しておくべき要点

FMAは、浮動小数点の乗算と加算を計算し、最後に1回だけ丸めを行います。FMA3は3オペランドのx86積和演算命令ファミリーを指し、AVX2とは個別に列挙されます。

## 仕組み

融合演算（fused operation）は、出力フォーマットへの丸めを行う前に、積と和を1つの算術演算として評価します。これにより、乗算が最初に丸められた場合に失われる可能性のある寄与を保持できます。132、213、および231命令形式は、どのオペランドが積、加数、上書きされる出力先を提供するかを選択します。スカラー形式とパック形式ではレーン動作が異なります。

## 有用な場面

多項式評価、行列乗算、およびデジタルフィルタは、算術演算を組み合わせるためにFMAを使用できます。融合された結果は、意図的に2つの別々の演算を使用するプログラムとは異なる場合があります。したがって、命令の可用性だけでなく、コンパイラの縮約設定や数値再現性の要件も重要になります。

## サポートと有効化の確認方法

VEX FMA3命令については、完全なAVX OSステートチェックとともにCPUID.01H:ECX bit 12を確認してください。EVEX形式を使用する場合は、それらの形式で必要とされる追加のAVX-512サブセットおよびステートを確認してください。再ビルド後に数値結果が変わった場合は、コンパイラフラグを点検してください。

プログラムは、適切な実装を含んでいることと、実行時にそれを選択することの両方が必要です。ハードウェアの列挙、OSで有効化されたレジスタ状態、およびバイナリのコンパイル済みベースラインは、別個の確認事項です。仮想マシンはホストよりも意図的に少ない機能を公開することができ、コンテナがホストCPUに命令を追加することはありません。

## この機能が確立しない事項

FMAは、すべての浮動小数点式が追加の精度で評価されることを意味するわけではなく、コンパイラ設定間で同一の結果を保証するものでもありません。FMA4は異なる命令ファミリーです。AVXまたはAVX2の単体サポートだけでは、FMA3のサポートを証明できません。

## 実際の互換性とパフォーマンス

代表的なデータを使用して完全なワークロードを測定してください。より広いベクトルは命令数を減らすことができますが、メモリトラフィック、同期、または変換コストが変わらないままになる可能性があります。命令のレイテンシ、スループット、および電力動作は、正確なマイクロアーキテクチャと動作条件に依存します。

## 実践的な検証チェックリスト

1. 関係する正確なプロセッサまたはプラットフォームのモデル、ならびにアプリケーション、OS、ランタイムのバージョンを記録してください。実際のエラーや要件の文言をそのまま保持してください。
2. その正確なモデルの製造元リファレンスを確認し、プログラムが実行される環境で実効的な機能と有効化状態を検査してください。
3. 選択したバイナリまたはバックエンドのすべての要件を比較してください。類似した名前の機能、エイリアス、または広範な技術表記だけでは不十分です。
4. アプリケーションが意図した実装を選択したことを確認してください。要件が満たされていない場合は、文書化された診断機能とサポートされているフォールバックを使用してください。
5. 一度に1つのサポート対象の変更のみを行い、同じワークロードを繰り返してください。元の構成と復旧手順を常に利用可能な状態にしておいてください。

## 機能が記載されているにもかかわらずソフトウェアで使用できない場合

正確にどのコンポーネントが失敗しているかから調査を開始してください。ハードウェアデータベースに記載されているのは記録された機能です。オペレーティングシステムまたはハイパーバイザーは、異なる実効環境を公開することがあります。破損や無関係な未サポート命令でも同様の症状が発生する可能性があるため、不正命令エラーの場合も実際にフォールトの原因となった命令とバイナリビルドの調査が必要です。

正確なプラットフォーム向けにサポートされているアプリケーション、ドライバ、またはランタイムのバージョンをインストールし、必要に応じてベンダーが文書化しているベースラインまたはフォールバックビルドを使用してください。ソフトウェアアップデートによってプロセッサに欠落している命令を作り出すことはできません。ファームウェアおよびセキュリティポリシーの変更は、一般的な最適化レシピではなく、システム製造元の手順と復旧計画に従う必要があります。

## 関連機能と有用な相違点

[AVX](https://feex.it/wiki/l/ja/hardware/system/avx/) · [AVX2](https://feex.it/wiki/l/ja/hardware/system/avx2/) · [F16C](https://feex.it/wiki/l/ja/hardware/system/f16c/) · [x86-64-v3](https://feex.it/wiki/l/ja/hardware/system/x86-64-v3/)

## 本説明のソースと対象範囲

[Intel 64 and IA-32 Architectures Software Developer's Manual](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) · [Linuxカーネル: ユーザー空間でのXSTATE機能の使用](https://docs.kernel.org/arch/x86/xstate.html)

これらのリファレンスは、アーキテクチャの動作およびソフトウェア要件を規定しています。リンクされたハードウェアモデルページのすべての機能値を個別に検証するものではありません。モデルのサポート状況については、そのページの製造元エビデンスを使用し、実際の実効システム構成を確認してください。この記事はベンチマーク、認定、または独立したレビュー日を提供するものではありません。

## 関連情報

これらはこの記事に関連する項目です。リンクごとに種別が表示されます。

[AVX: アーキテクチャリファレンス](https://feex.it/wiki/l/ja/hardware/system/avx/)[AVX2: アーキテクチャリファレンス](https://feex.it/wiki/l/ja/hardware/system/avx2/)[F16C: アーキテクチャリファレンス](https://feex.it/wiki/l/ja/hardware/system/f16c/)[x86-64-v3: アーキテクチャリファレンス](https://feex.it/wiki/l/ja/hardware/system/x86-64-v3/)

## 出典と検証

エディトリアル所有権: Feex。独立したレビュー日は記録されていません。 [調査方法](https://feex.it/wiki/research/).

- [Intel 64 and IA-32 Architectures Software Developer's Manual ](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)· 第1巻および第2巻では指定された命令ファミリおよびCPUIDについて説明し、第3巻では状態、ページング、VMX、保護制御について説明しています。アーキテクチャドキュメントは、特定のモデルに対するサポートを確定するものではありません。
- [Linuxカーネル: ユーザー空間でのXSTATE機能の使用 ](https://docs.kernel.org/arch/x86/xstate.html)· OSで有効化されたベクトル状態、動的に有効化されるタイル状態、シグナルスタック要件、およびAMXパーミッションフロー。Linux固有の動作は、他のOSに関する保証ではありません。

## この記事は役に立ちましたか？

「はい」または「いいえ」を選択するだけで完了します。必要に応じて理由を選択するか、簡単なメモを追加してください。

概要情報

このページの簡単な要約です。仕様、情報源、詳細な内容は記事本文に記載されています。

---

Source: [Canonical Feex Wiki page](https://feex.it/wiki/l/ja/hardware/system/fma/)

[Developer guide](https://feex.it/wiki/developers/) | [API policy](https://feex.it/developers/api-policy/) | [Agent guidance](https://feex.it/wiki/llms.txt)
