背景:SSE 有向量指令和标量指令。3D现在!死了。
任何编译器在没有程序员帮助的情况下从向量化中提取有意义的好处是不常见的。通过编程工作和实验,人们通常可以接近纯汇编的速度,而无需实际提及任何特定的向量指令。有关详细信息,请参阅编译器的向量编程指南。
涉及到一些可移植性权衡。如果您为 GCC 的矢量化器编码,您可能能够使用非英特尔架构,例如 PowerPC 和 ARM,但不能使用其他编译器。如果您使用英特尔内在函数使您的 C 代码更像汇编,那么您可以使用其他编译器,但不能使用其他架构。
电子知识不会帮助你。学习可用的说明将。
一般情况下,您根本不能依赖编译器使用向量化指令。有些是这样做的(Intel 的 C++ 编译器在许多简单的情况下都完成了合理的工作,GCC 也尝试这样做,但取得了不同程度的成功)
\n\n但其想法只是将相同的操作应用于 4 个 32 位字(或在某些情况下为 2 个 64 位值)。
\n\n因此,您可以使用向量化加法,而不是使用传统的“add\xc2\xb4”指令(将 2 个不同的 32 位宽寄存器中的值相加),该指令使用包含四个 32 位值的特殊 128 位宽寄存器,并且将它们作为单个操作添加在一起。
\n 归档时间: |
|
查看次数: |
4267 次 |
最近记录: |