【发布时间】:2012-01-03 03:05:13
【问题描述】:
是否有以 SIMD 方式“矢量化”跨数组添加元素的方法?
比如我想转:
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 库中是否有它。
谢谢!
【问题讨论】:
-
我认为像你写的那样简单的循环是由优化编译器向量化的。
标签: c# .net vectorization simd