什么是OpenMP的高级描述?

Wikipedia article指出:“OpenMP(开放多处理)是一个应用程序编程接口(interface)(API),它支持在包括Unix和Microsoft Windows平台在内的许多体系结构上使用C,C++和Fortran进行的多平台共享内存多处理编程。会影响运行时行为的一组编译器指令,库例程和环境变量。”什么?

它与其他并发方法(例如线程,线程池和工作窃取)相比如何?

最佳答案

它是一组扩展,使C/C++能够并行运行代码的某些部分,而无需显式管理(创建,销毁,分配)线程。

通过允许您声明性地并行运行代码的某些部分,它基本上使您摆脱了自我管理线程的复杂性。代码示例总是有帮助的:

# pragma omp parallel \
  shared ( n, x, y ) \
  private ( i ) \
  reduction ( + : xdoty )

# pragma omp for

  for ( i = 0; i < n; i++ )
  {
    xdoty = xdoty + x[i] * y[i];
  }

10-04 17:41