异构:9:向量化SIMD

文章目录

  • 它通过循环展开
    • 数据依赖分析
    • 指令重排挖掘程序中的并行性
    • 将程序中可并行化的部分合成处理器支持的向量指令
  • 复制多个操作数并把它们直接打包在寄存器中
    • 从而完成在同一时间内采用同步方式对多个数据执行同一条指令
  • 向量化可充分挖掘处理器并行处理能力,
    • 适合于处理并行程度高的程序代码[27-37]

  • 向量化实现:
    • 自动向量化和手动向量化,图9-1

  • 向量化编译器通过分析程序中控制流和数据流的特征
    • 识别选出以向量化执行的代码,
    • 并将标量指令自动转换为相应的SIMD指令
  • 内嵌手写的汇编代码或目标处理器的内部函数
    • 来添加SIMD指令从而实现代码的向量化
  • 手动向量化又可分为
    • 串行向量化和并行向量化

  • 程序必须在串行情况下实行向量化
  • 13年, Openmp4.0提供指令simd对函数和循环向量化
  • 影响向量化执行效率因素有两:
    • 代码风格和硬件条件

异构:9:向量化SIMD