熟悉openmp吗?讲一讲应用和原理

个人熟悉程度

openmp在很多数值库或者高性能计算库里还是比较常见的, 而且会搭配一些向量指令食用,甚至openmp比较新的版本本身支持自动simd,我个人应该处于初步了解的截断,实际项目中的应用可能不算太多,毕竟还是以<芯片本身>硬件加速为主。

简单介绍和应用

openmp主要用来将串行程序并行化(以共享内存型的方式),还可以加入一些同步互斥操作, 编译器自动进行并行优化,如果编译器不支持,代码仍然可以正常运作,只是不能以多线程的方式加速。

  • 应用
    简单应用的话比较容易上手,头文件里加上#include ,gnu编译选项时加上-fopenmp
  • openmp里主要有四个组件(4.0版本)。

    1.directives指令,每个指令以`#pragma omp`开头
    2.Runtime Library Routines 运行时接口
    3.Environment Variables 环境变量
    4.Clauses子句 可以算是对指令的补充描述,搭配指令一起食用
  • 例子 faiss L2Distance

原理

更多操作见openmp文档

https://www.openmp.org/specif...

你可能感兴趣的:(openmp面试问题)