异构:9:向量化SIMD
文章目录
- 它通过循环展开
- 数据依赖分析
- 指令重排挖掘程序中的并行性
- 将程序中可并行化的部分合成处理器支持的向量指令
- 复制多个操作数并把它们直接打包在寄存器中
- 从而完成在同一时间内采用同步方式对多个数据执行同一条指令
- 向量化可充分挖掘处理器并行处理能力,
- 适合于处理并行程度高的程序代码[27-37]
- 向量化实现:
- 自动向量化和手动向量化,图9-1
- 向量化编译器通过分析程序中控制流和数据流的特征
- 识别选出以向量化执行的代码,
- 并将标量指令自动转换为相应的SIMD指令
- 内嵌手写的汇编代码或目标处理器的内部函数
- 来添加SIMD指令从而实现代码的向量化
- 手动向量化又可分为
- 串行向量化和并行向量化
- 程序必须在串行情况下实行向量化
- 13年, Openmp4.0提供指令simd对函数和循环向量化
- 影响向量化执行效率因素有两:
- 代码风格和硬件条件