SIMDの方法で要素間の要素の追加を「ベクトル化」する方法はありますか?C#ベクトル化された配列の追加
例えば、Iターンしたいと思います:
var a = new[] { 1, 2, 3, 4 };
var b = new[] { 1, 2, 3, 4 };
var c = new[] { 1, 2, 3, 4 };
var d = new[] { 1, 2, 3, 4 };
var e = new int[4];
for (int i = 0; i < a.Length; i++)
{
e[i] = a[i] + b[i] + c[i] + d[i];
}
// e should equal { 4, 8, 12, 16 }
のようなものに:
var e = VectorAdd(a,b,c,d);
私は何かがC++/XNAライブラリに存在する可能性が知っているが、私はかどうかを知りませんでした私たちは標準の.Netライブラリでそれを持っています。
ありがとうございます!
あなたが書いたような単純なループは、最適化コンパイラによってベクトル化されていると思います。 – Tudor