如果我编写一个使用SVE指令的程序,并在支持256位宽度SVE寄存器集的ARM平台上编译它,然后将可执行文件复制到支持512位宽度SVE寄存器集的ARM平台,程序会自动适应使用512位运算而不是256位运算?
如果可以的话,它是如何工作的。
SVE 提供的工具允许开发人员编写与向量长度无关的代码。例如,您可以在运行时查询向量长度,并使用它来按 SIMD 宽度(而不是例如)增加循环计数器。假设增加 4。
这不是一个神奇的解决方案,开发人员需要编写与向量长度不可知风格兼容的代码,否则它将无法工作。绝对可以编写仅适用于单个向量长度的 SVE 代码(如果您知道向量长度,这样做可能会更有效)。