2016-06-29 5 views
-1

short型の出力配列に追加する必要がある長いバイト配列があります。ソリューションは、ここで見つけることができます:私は、この命令(加算のために2つの8要素の短い配列に1つの16要素のバイト配列を開梱するために必要な)「を解凍」のサポートを欠いmanaged SIMD を使用してやろうとしています SEE byte + short. 。 ここではサポートされている操作は、管理SIMDである:誰もがアイデアを持っていますenter image description hereバイトとushort配列を追加する.NET SIMD

どのように二つの配列(ショート[] =バイト[] +ショート[])を使用して達成することができます減少SIMDの追加上の命令セット(スカラー加算を避ける)?

答えて

0

以下のAPI proposalは、絞り込みおよび拡大操作を追加します。提案されたAPIは、基礎となるSSE2命令と同様の設計に従います。拡大するには、入力ベクトルの下半分と上半分が2つの出力ベクトルに書き込まれます。狭くするには、2つの入力ベクトルから来る要素を(符号付きまたは符号なしの彩度で)変換し、単一の出力ベクトルにパックします。

APIの提案では、実際に出荷するまでに時間がかかるか、または永遠にかかることがあります。

これらのメソッドは、JITが最終的に組み込み関数を生成するようにアップグレードされていない限り、パフォーマンス上問題ありません。これは、私が恐れていることは、能力がまだ存在していないと単純に仮定すべきであることを意味します。現在ネイティブコードアプローチ(C++/CLIまたはP/Invoke経由)を使用している場合は、その代替方法がまだ存在しないため、現在の方法を引き続き使用する必要があります。

JIT側の実施状況を調べるには:コメントに基づいてAdd JIT intrinsics support for vector conversion on AMD64 and x86 #10662

、それは、.NET標準2.0になりませんが、.NET標準2.1の一部である可能性が高いです。

関連する問題