質問

これは、GHCは、様々なSSEの世代のためにSIMDコードを生成するために取得することはできますか?

例:。

このようなプログラムを持って
import Data.Array.Vector
main = print . sumU $ (enumFromToFracU 1 10000000 :: UArr Double)

私は(64ビットx86用にコンパイルされた)生成されたコードを見ることができるスカラーモード(CとASMバックエンドの両方)でSSE命令を使用します。だから、むしろaddpdよりADDSD。私は、ベクトル命令を使用する上で動作するプログラムの種類のパフォーマンスのために重要です。私自身は、GHCはSSEを使用してコードをSIMDizeするために取得するなど、初心者のための簡単な方法はありますか?

役に立ちましたか?

解決

はい、それはCのバックエンドを介して、可能であるが、それは試行錯誤です。 フラグは、私が使用します:

 gcc -O2 -funbox-strict-fields -fvia-C -optc-O3 -march=native -optc-msse4

そして、GCCは、GHCはユニフォームベクタコードを経由して発生タイトなループをスポットし、SIMD可能性があります実現を願っています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top