Oracle® Solaris Studio 12.4:Fortran 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

3.4.186 -xvector[=a]

启用向量库函数调用自动生成,或在支持 SIMD(Single Instruction Multiple Data,单指令多数据)的 x86 处理器上启用 SIMD 指令生成。使用此选项时,必须通过指定 -fround=nearest 来使用缺省的舍入模式。

-xvector 选项需要 -xO3 或更高的优化级别。如果优化级别未指定或低于 -xO3,编译将不会继续,同时会发出消息。

下表列出了 a 的可能值。no% 前缀可禁用关联的子选项。

表 3-23  -xvector 子选项
含义
[no%]lib
(Oracle Solaris) 允许编译器将循环内的数学库调用转换为对等效向量数学例程的单个调用(如果能够进行此类转换)。此类转换可提高那些循环计数较大的循环的性能。使用 no%lib 可以禁用此选项。
[no%]simd
(SPARC) 对于 -xarch=sparcace-xarch=sparcaceplus,指示编译器使用浮点和整数 SIMD 指令来提高某些循环的性能。与其他 SPARC 平台的该项相对,-xvector=simd 在指定了任何 -xvector 选项(-xvector=none-xvector=no%simd 除外)的 -xarch=sparcace-xarch=sparcaceplus 下始终有效。此外,对于 -xvector=simd-O 需要大于 3,否则会被跳过而不显示任何警告。
对于所有其他 -xarch 值,指示编译器使用可视指令集 [VIS1、VIS2、ViS3 等] SIMD 指令来提高某些循环的性能。从根本上来说,使用显式 -xvector=simd 选项,编译器将执行循环转换,从而允许生成特殊向量化的 SIMD 指令以减少循环迭代数。仅当 -O 大于 3 并且 -xarchsparcvis3 及以上时,-xvector=simd 选项才有效。否则,将跳过 -xvector=simd 而不显示任何警告。
[no%]simd
(x86) 指示编译器使用本机 x86 SSE SIMD 指令来提高某些循环的性能。在 x86 中,缺省情况下以可产生有利结果的优化级别 3 和更高级别使用流扩展。可以使用 no%simd 禁用此选项。
仅当目标体系结构中存在流扩展(即目标 ISA 至少为 SSE2)时,编译器才会使用 SIMD。例如,可在现代平台中指定 -xtarget=woodcrest、-xarch=generic64、-xarch=sse2、-xarch=sse3-fast 来使用它。如果目标 ISA 没有流扩展,子选项将无效。
%none
完全禁用此选项。
yes
此选项已过时;请改为指定 –xvector=lib
no
此选项已过时;请改为指定 –xvector=%none

在 x86 平台上的缺省值为 -xvector=simd,在 SPARC 平台上的缺省值为 -xvector=%none。如果指定不带子选项的 -xvector,则在 x86 Solaris、SPARC Solaris 和 Linux 平台上,编译器将分别采用 -xvector=simd,lib-xvector=lib-xvector=simd

在装入步骤中,编译器包含 libmvec 库。

如果使用单独的命令进行编译和链接,应确保也在链接 CC 命令中使用 -xvector