ImageMagick和OpenMP,使用所有cpu os集群?

时间:2013-12-05 00:32:26

标签: imagemagick openmp

我知道我可以使用ImageMagick和OpenMP来使用我的CPU的所有核心,但问题是:我可以使用我的10个计算机集群的所有核心吗?或imagemagick只会使用我本地CPU的核心?

非常感谢。

1 个答案:

答案 0 :(得分:1)

OpenMP基于fork-join范例,由于fork函数的本质特性,它绑定到共享内存系统。因此,您无法使用群集的所有核心,因为他们不会共享内存。然后,支持OpenMP的程序仅限于共享其内存的内核(来自本地CPU的内核)。

虽然有一种解决方法,但它可能不值得。您可以在10个计算机集群上模拟虚拟NUMA体系结构,并在此虚拟​​机上执行ImageMagick。因此,ImageMagick将相信它运行在包含所有核心的单个系统上。这是ScaleMP为其vSMP软件提供的内容。但是性能提升与程序的内存访问密切相关,因为它们可能在此VM中的网络上发生,这比缓存或RAM访问的速度慢。根据ImageMagick中内存的访问方式,您可能会获得显着的性能提升。

为了直接执行您所要求的内容,您可以使用消息传递接口(MPI)框架(例如OpenMPI)在多个项目之间并行化,而不是尝试在其用例之外使用OpenMP。联网计算机。这需要重写ImageMagick的并行部分来代替使用OpenMPI,这可能是一项非常艰巨的任务,具体取决于ImageMagick的代码库。