「System.Numerics.Vector<T>」の版間の差分

編集の要約なし
編集の要約なし
52行目: 52行目:
  var v = new Vector<int>(new[]{1,2,3,4,5,6,7});
  var v = new Vector<int>(new[]{1,2,3,4,5,6,7});
  // System.IndexOutOfRangeException
  // System.IndexOutOfRangeException
== 使ってみる ==
配列が小さい(64未満くらい)と逆に遅くなる模様。
<source>
// 配列を用意する
var array = Enumerable.Range(0, 1024).ToArray();
var arraySize = array.Length;
// SIMDサイズ
var simdSize = Vector<int>.Count;
// インクリメント用
var one = Vector<int>.One;
// 実行
for (int index = 0; index < arraySize; index += simdSize)
{
    // 配列をSIMDレジスタに格納
    var vector = new Vector<int>(array, index);
    // ベクトル演算Add
    vector += one;
    // SIMDレジスタを配列に書き戻す
    vector.CopyTo(array, index);
}
</source>