并行编程模型:AVX 指令、数据分布与信息交换
1. AVX 指令概述
AVX(Advanced Vector Extensions)指令集为计算提供了强大的支持。与向量计算机相比,AVX 指令的寻址模式和加载操作较为简单,缺乏将非连续内存位置便捷加载到 256 位寄存器的功能。不过,其基本计算方法与向量计算机类似,预计未来的 AVX 扩展将提供更多用于加载特殊寄存器的寻址模式。
执行 AVX 指令时,提供了 16 个 256 位寄存器,标记为 YMM0 到 YMM15。可以使用特殊的加载操作从内存中加载 256 位数据块到这些寄存器。例如,MOVAPD 指令用于加载对齐到 256 位边界的双精度值块,MOVUPD 指令用于加载未对齐的块。YMM 寄存器中存储的数据可以解释为单精度(32 位)或双精度(64 位)浮点值,并且提供了特殊指令对 YMM 寄存器中存储的所有值执行算术运算,如加法、减法、乘法、除法、平方根、最小值、最大值和舍入等。为了兼容,AVX 还支持 SSE 数据类型和 SSE 的非算术运算。
未来的 AVX 扩展已经提出,其中包含对融合乘加(FMA)指令的支持。FMA 指令可以在一个周期内执行 a = a + b · c 形式的操作,操作数 a、b、c 存储在 YMM 寄存器中,FMA 指令将应用于这些寄存器中存储的所有浮点值。例如,VFMADDPD 指令用于双精度浮点值。FMA 操作可用于许多数值计算,如向量的内积或矩阵乘法,可能会显著减少计算时间。
2. 数组的数据分布
许多算法,特别是数值分析和科学计算中的算法,基于向量和矩阵。相应的程序使用一维、二维或更高维数组作为基本数据结构。对于
超级会员免费看
订阅专栏 解锁全文
4558

被折叠的 条评论
为什么被折叠?



