c=c+a*b的OpenMP 4 simd矢量化
OpenMP 4 simd vectorization for c=c+a*b
我不知道OpenMP 4是否支持循环。使用和不使用pragma
的速度相同。
#pragma omp for simd
for (size_t i = 0; i < col; i++)
{
C[i] += A[i]* B[i];
}
杂注无效的原因(我想)有两个:
- 在没有
simd
指令的情况下,代码已经矢量化;以及 - 无论如何,代码都是内存绑定的,所以添加更多的线程来计算它不会有太大区别,除非它能让你访问更多的内存带宽。有关更多详细信息,请参阅此优秀答案
相关文章:
- OpenMP阵列性能较差
- OpenMP卸载说'fatal error: could not find accel/nvptx-none/mkoffload'
- 使用 GCC 卸载的 OpenMP 卸载失败,并出现"Ptx assembly aborted due to errors"
- OpenMP:并行更新数组总是需要减少数组吗
- 如何使用OpenMP并行这两个循环
- 从python调用openMP共享库时,未定义opnMP函数
- 如何使用OpenMP并行化此矩阵时间矢量运算
- 如何使用OpenMP使这个循环并行
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 查找最近配对时的OpenMP竞赛条件
- 使用输入打破 OpenMP 中的循环
- 为什么 openmp 的并行不适用于矢量化色彩空间转换?
- 使用 openMP simd 进行以下循环是否安全?
- openMP 的 SIMD 结构是否需要特定类型的硬件?
- 使用 openmp + SIMD 时没有加速
- c=c+a*b的OpenMP 4 simd矢量化
- OpenMP为内联函数声明SIMD
- 使用自定义运算符减少OpenMP SIMD
- SIMD指令缺少OpenMP if子句
- OpenMP奇怪的行为与SIMD线性和并行的线性指令