2013-10-22 6 views
7

5年前からMono.SIMD(またはMonoの中の一般的なSIMDサポート)が開発されているかどうか知りたいです。私は個人的には、これがC#のスピードを向上させるための大きな一歩だと思います。しかし、私はしばらくそれを使用して、私はMono.SIMDが多くの機能が不足しているとして遅れていると感じています。まだMonoでSIMDの開発がありますか?

私が直面してる問題のいくつかが含まれます:

  1. これまでSSE4.1以来、1回の操作で実現することができる内積の欠如は、(2006年に出てきたし、今ではサポートされていますコンピュータの70%)、Mono.SIMDの内部で3回の操作が必要です。これに加えて、プログラマーは、JITがすべき仕事であるSSEのすべてのバージョンに対して関数を書く必要があります(これは、プログラマーがCPUバージョンの心配を止めるために特別に作成されるためです)。
  2. Vector4fとVector4i(または異なるベクトル)を加算または乗算する可能性はありません。
  3. ベクターの適切なキャストはありません(ビットはまったく変わっていないようですので、結果は非常に奇妙でほとんど役に立たない)。
  4. 丸めなど、含まれていない機能がたくさんあります。

Mono.SIMDまたはSIMDサポートで何か起こっていることがあれば、誰でも知っていますか?あるいは、誰かが言及された問題のいずれかの良い解決策を知っていますか?

+2

SSE4.1でのドットプロダクトの指示はほとんど役に立たない。IntelのCPUでは、4つのマイクロオペレーション(単精度バージョンで)をデコードし、最近のAMDのCPUではこの命令がマイクロコード化されています。私はこの命令から利益を得るコード(合成ベンチマークでさえ)を見たことがない。 –

+0

.NET Framework 4.6および4.5(Vector.psのSystem.Numerics)で、RyuJIT(Microsoft.Bcl.Simd)以降、SIMDはネイティブに.Netでサポートされています。これは、おそらくモノチームがリードに続くことを奨励するだろうか? – AFract

答えて

4

AFAIR開発が進行中ではありません。プロジェクトはオープンソースであり、機械はあまり複雑ではないので、現在の実装を改善することができます。私はいくつかの指示を追加することを考えましたが、通常どおり、それを行うのに十分な時間がありませんでした(アプリケーションもやがてキャンセルされました)。あなたはスレッドを見て興味があるかもしれません:http://lists.ximian.com/pipermail/mono-devel-list/2012-February/038632.html

1

もう1つの答えは数年前になされました。したがって、私は2018人の読者に必要なすべてのビットをリストアップするためにこれを書いた。モノがSIMDをサポートするために始めたとき、彼らはユニティ男によって要求された

http://tirania.org/blog/archive/2008/Nov-03.html

急いでように見えたので、全体的なAPIの設計は、まだ成長の余地があります。

Microsoftは、より完全かつ標準化されたSIMD有効ライブラリに取り組み始め、それが2014年に、数年後だった、

https://www.infoq.com/news/2014/04/SIMD-CLR

ので、注意がこの新しいオプションに支払われるべきです。

2015年にMicrosoftがオープンソースの.NETコアを開発して以来、SIMDの作業が加速しています。

それはモノ5.0はMicrosoftの仕事、

http://www.mono-project.com/docs/about-mono/releases/5.0.0/(SIMDアクセラ支持部)の賛成でMono.SIMDのobsoletenessを発表した昨年にありました。

関連する問題