在阅读Zig 语言参考后,我发现向量部分指出 a@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;
Run Code Online (Sandbox Code Playgroud)
,但我正在寻找是否可以编写一个循环来就地for操作单个指令 并保证使用 SIMD 指令。例如,我可以在 Julia 中使用 SIMD 指令,如下所示。@Vector
arr = Vector{Float64}(under, 32)
@simd for i in eachindex(arr)
@inbounds arr[i] = 2 * i
end
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
小智 1
不幸的是,没有与您提供的 Julia 代码等效的 Zig。
我认为 Zig 中不需要这样的标签。有理由相信编译器会做正确的事情:https://godbolt.org/z/KoGbqEvYf。如果没有,您应该在 zig/llvm 编译器上提交错误:D