5年前からMono.SIMD(またはMonoの中の一般的なSIMDサポート)が開発されているかどうか知りたいです。私は個人的には、これがC#のスピードを向上させるための大きな一歩だと思います。しかし、私はしばらくそれを使用して、私はMono.SIMDが多くの機能が不足しているとして遅れていると感じています。まだMonoでSIMDの開発がありますか?
私が直面してる問題のいくつかが含まれます:
- これまでSSE4.1以来、1回の操作で実現することができる内積の欠如は、(2006年に出てきたし、今ではサポートされていますコンピュータの70%)、Mono.SIMDの内部で3回の操作が必要です。これに加えて、プログラマーは、JITがすべき仕事であるSSEのすべてのバージョンに対して関数を書く必要があります(これは、プログラマーがCPUバージョンの心配を止めるために特別に作成されるためです)。
- Vector4fとVector4i(または異なるベクトル)を加算または乗算する可能性はありません。
- ベクターの適切なキャストはありません(ビットはまったく変わっていないようですので、結果は非常に奇妙でほとんど役に立たない)。
- 丸めなど、含まれていない機能がたくさんあります。
Mono.SIMDまたはSIMDサポートで何か起こっていることがあれば、誰でも知っていますか?あるいは、誰かが言及された問題のいずれかの良い解決策を知っていますか?
SSE4.1でのドットプロダクトの指示はほとんど役に立たない。IntelのCPUでは、4つのマイクロオペレーション(単精度バージョンで)をデコードし、最近のAMDのCPUではこの命令がマイクロコード化されています。私はこの命令から利益を得るコード(合成ベンチマークでさえ)を見たことがない。 –
.NET Framework 4.6および4.5(Vector.psのSystem.Numerics)で、RyuJIT(Microsoft.Bcl.Simd)以降、SIMDはネイティブに.Netでサポートされています。これは、おそらくモノチームがリードに続くことを奨励するだろうか? – AFract