C++ OpenMP不使用所有处理器

C++ OpenMP不使用所有处理器,c++,openmp,C++,Openmp,我有一个使用OpenMP进行循环并行化的程序。在具有单CPU四核的开发工作站上,它使用所有核。在具有2个CPU和10个内核的服务器上,每个程序只使用1个CPU。有没有办法强制OpenMP同时使用这两种处理器 您正在设置OMP_NUM_线程吗?请提供硬件和软件详细信息。如果这些CPU具有不同的内存缓存,则您可能无法仅使用OpenMP对其进行编程,而是使用MPI实现分布式内存并行(跨CPU),使用OpenMP实现共享内存并行(跨核心/CPU)。我们需要更多信息来发现是否存在这种情况。omp\u ge

我有一个使用OpenMP进行循环并行化的程序。在具有单CPU四核的开发工作站上,它使用所有核。在具有2个CPU和10个内核的服务器上,每个程序只使用1个CPU。有没有办法强制OpenMP同时使用这两种处理器

您正在设置OMP_NUM_线程吗?请提供硬件和软件详细信息。如果这些CPU具有不同的内存缓存,则您可能无法仅使用OpenMP对其进行编程,而是使用MPI实现分布式内存并行(跨CPU),使用OpenMP实现共享内存并行(跨核心/CPU)。我们需要更多信息来发现是否存在这种情况。
omp\u get\u num\u procs()
应该输出设备上可用处理器的数量,无论程序是否使用它们。如果这确实返回2,请尝试设置线程数,以便可以占用它们。别忘了阅读作为一种工具well@NoseKnowsAll现在哪个平台支持缓存一致性处理器而不支持套接字之间的一致性?我不知道有这样的硬件。@Jeff除非证明没有,否则我是在假设OP对系统的理解可能是错误的情况下操作的。据我们所知,可能是2个计算节点,每个节点有10个核心。您是否正在设置OMP_NUM_线程?请提供硬件和软件详细信息。如果这些CPU具有不同的内存缓存,则您可能无法仅使用OpenMP对其进行编程,而是使用MPI实现分布式内存并行(跨CPU),使用OpenMP实现共享内存并行(跨核心/CPU)。我们需要更多信息来发现是否存在这种情况。
omp\u get\u num\u procs()
应该输出设备上可用处理器的数量,无论程序是否使用它们。如果这确实返回2,请尝试设置线程数,以便可以占用它们。别忘了阅读作为一种工具well@NoseKnowsAll现在哪个平台支持缓存一致性处理器而不支持套接字之间的一致性?我不知道有这样的硬件。@Jeff除非证明没有,否则我是在假设OP对系统的理解可能是错误的情况下操作的。据我们所知,它可能是2个计算节点,每个节点有10个核心。