如何使用启用的OpenMP指令重新编译Numpy

如何使用启用的OpenMP指令重新编译Numpy,numpy,openmp,Numpy,Openmp,在第二段中,答案的作者建议使用启用的OpenMP指令重新编译Numpy。 因此,我的问题是: 你是怎么做到的? 什么是负面影响? 你会推荐吗? 通过搜索,我找到了以下帖子,其中的答案解释了为什么由于GIL,OpenMP在一般Python中没有用处。但是我认为Numpy是另一个问题。虽然Python代码本身很难从并行运行中获益,但Numpy不是用Python编写的。事实上,它是一些非常成熟的数值计算库和其他数值算法的Python包装器,它们都是用编译语言(如Fortran和C)实现的。其中一些库已

在第二段中,答案的作者建议使用启用的OpenMP指令重新编译Numpy。 因此,我的问题是:

  • 你是怎么做到的?
  • 什么是负面影响?
  • 你会推荐吗?

  • 通过搜索,我找到了以下帖子,其中的答案解释了为什么由于GIL,OpenMP在一般Python中没有用处。但是我认为Numpy是另一个问题。

    虽然Python代码本身很难从并行运行中获益,但Numpy不是用Python编写的。事实上,它是一些非常成熟的数值计算库和其他数值算法的Python包装器,它们都是用编译语言(如Fortran和C)实现的。其中一些库已经有了并行多线程版本(如Intel MKL和ATLAS,用于在NumPy中提供BLAS和LAPACK实现时)

    这个想法是,在NumPy程序中,Python代码应该只用于驱动计算,而所有繁重的工作都应该在C或Fortran后端完成。如果您的程序没有将大部分运行时间花在NumPy例程中,那么将阻止您通过并行NumPy获得合理的加速

    为了让NumPy支持OpenMP,您必须拥有一个启用OpenMP的C编译器。现在大多数C编译器都支持OpenMP,其中包括GCC、英特尔C编译器、Oracle C编译器,甚至Microsoft Visual C编译器(尽管它仍停留在一个古老的OpenMP版本上)。有关详细说明,请阅读