System.Numerics.Vector.GreaterThan和bool结果

时间:2017-08-11 15:48:37

标签: c# simd

我正在尝试转换一些可以使用SIMD指令优化的现有代码。有一个掩码生成代码,我正在测试转换后我可以从SIMD获得多少性能,而下面是我用来分析它的过度简化的块。

Random r = new Random();
var random1 = new double[65536000*4];
var random2 = new double[random1.Length];
var result = new bool[random1.Length];
for (i = 0; i < random1.Length; i++)
{
    random1[i] = r.Next();
    random2[i] = r.Next();
}

var longRes = new long[random1.Length];
for (int i = 0; i < result.Length; i += Vector<double>.Count)
{
    Vector<double> v1 = new Vector<double>(random1, i);
    Vector<double> v2 = new Vector<double>(random2, i);
    Vector<long> res = System.Numerics.Vector.GreaterThan(v1, v2);
    res.CopyTo(longRes, i);
}

我是否可以使用一种技术将结果res有效地放入result数组?

最初我以为我可以和Vector<long>一起生活并将面具保留在long[]但我意识到这可能是不可行的。

1 个答案:

答案 0 :(得分:-1)

在对原始问题发表评论时,我意识到System.Numberics.Vector.GreaterThan和其他类似方法(如LesserThan等)设计用于ConditionalSelect()

在我的情况下,我试图生成一个bool数组,该数组表示稍后在整个API中使用的图像掩码,并且将long转换为bool是不可行的。

换句话说,这些比较方法并非用于通用目的。