web-dev-qa-db-ja.com

x86_64のgccで__fp16タイプを有効にする方法

__fp16浮動小数点データ型は、特にARMプロセッサで使用されるC標準のよく知られた拡張です。x86_64プロセッサでIEEEバージョンを実行したいと思います。通常はそれがありません。「符号なしの短い」ストレージ(同じアライメント要件とストレージスペースがあります)と(ハードウェア)浮動小数点演算でエミュレートしても問題ありません。

Gccでそれを要求する方法はありますか?

丸めは少し「正しくない」かもしれないと思いますが、それは私には大丈夫です。

これがC++でも機能するのであれば、それは理想的です。

14
Nonyme

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との間でそれらをプロモートします)。

私のユースケースではそれで十分でした。

4
Nonyme