__fp16
浮動小数点データ型は、特にARMプロセッサで使用されるC標準のよく知られた拡張です。x86_64プロセッサでIEEEバージョンを実行したいと思います。通常はそれがありません。「符号なしの短い」ストレージ(同じアライメント要件とストレージスペースがあります)と(ハードウェア)浮動小数点演算でエミュレートしても問題ありません。
Gccでそれを要求する方法はありますか?
丸めは少し「正しくない」かもしれないと思いますが、それは私には大丈夫です。
これがC++でも機能するのであれば、それは理想的です。
Gccでそうする方法が見つかりませんでした(gcc 8.2.0以降)。
Clangに関しては、6.0.0では次のオプションがある程度の成功を示しました。
clang -cc1 -fnative-half-type -fallow-half-arguments-and-returns
オプション-fnative-half-type
は、__fp16
タイプの使用を有効にします(フロートにプロモートする代わりに)。オプション-fallow-half-arguments-and-returns
では__fp16
を値で渡すことができますが、APIは非標準であるため、異なるコンパイラを混在させないように注意してください。
そうは言っても、__fp16
タイプを使用する数学関数は提供しません(float
またはdouble
との間でそれらをプロモートします)。
私のユースケースではそれで十分でした。