ImageMagick和OpenMP,是否在集群中使用所有cpu操作系统?

ImageMagick和OpenMP,是否在集群中使用所有cpu操作系统?,imagemagick,openmp,Imagemagick,Openmp,我知道我可以使用ImageMagick和OpenMP来使用CPU的所有核心,但问题是:我可以使用10台计算机集群的所有核心吗?或者imagemagick只使用本地CPU的内核 非常感谢。OpenMP基于fork-join范例,由于fork函数的本质,它绑定到共享内存系统。因此,您将无法使用集群的所有核心,因为它们不共享内存。然后,启用OpenMP的程序仅限于共享其内存的内核(来自本地CPU的内核) 尽管有办法解决这个问题,但这可能不值得。您可以在10台计算机集群上模拟虚拟NUMA体系结构,并在此

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


非常感谢。

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

尽管有办法解决这个问题,但这可能不值得。您可以在10台计算机集群上模拟虚拟NUMA体系结构,并在此虚拟机上执行ImageMagick。因此,ImageMagick相信它在包含所有内核的单个系统上运行。这就是他们的vSMP软件提供的功能。但是性能的提高与程序的内存访问密切相关,因为它们可能在这个虚拟机的网络上发生,这比缓存或RAM访问慢很多。根据在ImageMagick中访问内存的方式,您可能会受到显著的性能影响


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

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

尽管有办法解决这个问题,但这可能不值得。您可以在10台计算机集群上模拟虚拟NUMA体系结构,并在此虚拟机上执行ImageMagick。因此,ImageMagick相信它在包含所有内核的单个系统上运行。这就是他们的vSMP软件提供的功能。但是性能的提高与程序的内存访问密切相关,因为它们可能在这个虚拟机的网络上发生,这比缓存或RAM访问慢很多。根据在ImageMagick中访问内存的方式,您可能会受到显著的性能影响

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