我如何明确地在Zig中利用SIMD?

4
阅读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

感谢您的帮助!


请每个问题只提一个问题 - 您上面的两个问题似乎没有关联,因此应该在 Stack Overflow 上分成两个独立的问题。 - Paul R
请查看有关如何提问的指南 - sigod
谢谢你提醒我。我已经编辑了我的帖子,提出了一个更具体的问题。 - YuChan Tai
1个回答

1

很遗憾,没有与您提供的Julia代码等效的Zig代码。

我认为在Zig中没有这样的标签需要。可以合理地信任编译器会做正确的事情:https://godbolt.org/z/KoGbqEvYf。如果不是这样,请向zig/llvm编译器提交错误报告 :D

有点相关的是:7702 9389


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接