メインメニューを開く

差分

System.Numerics.Vector<T>

620 バイト追加, 2020年5月27日 (水) 04:49
編集の要約なし
var v = new Vector<int>(new[]{1,2,3,4,5,6,7});
// 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>