阅读Zig语言参考之后,我发现矢量部分指出如果可能的话,
@Vector
将使用SIMD指令。以下是一个例子。const a = @Vector(4, i32){ 1, 2, 3, 4 };
const b = @Vector(4, i32){ 5, 6, 7, 8 };
// Math operations take place element-wise.
const c = a + b;
但我想知道是否可以编写一个for
循环来就地操作一个单一的@Vector
,并且保证使用SIMD指令。例如,在Julia中,我可以按以下方式利用SIMD指令。
arr = Vector{Float64}(under, 32)
@simd for i in eachindex(arr)
@inbounds arr[i] = 2 * i
end
感谢您的帮助!