Có cách nào để "vector hóa" việc bổ sung các phần tử trên mảng theo kiểu SIMD không?C# Vectorized Array bổ sung
Ví dụ, tôi muốn chuyển:
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 }
Into cái gì đó như:
var e = VectorAdd(a,b,c,d);
tôi biết điều gì đó có thể tồn tại trong các thư viện ++/XNA C, nhưng tôi không biết liệu chúng tôi có nó trong thư viện chuẩn .Net.
Cảm ơn!
Tôi nghĩ rằng các vòng lặp đơn giản như vòng bạn viết được vector hóa bởi trình biên dịch tối ưu hóa. – Tudor