如何确认多核系统中的openmp是不是使用了所有内核?

Posted

技术标签:

【中文标题】如何确认多核系统中的openmp是不是使用了所有内核?【英文标题】:How to confirm if all the cores are used by openmp in a multi core system?如何确认多核系统中的openmp是否使用了所有内核? 【发布时间】:2015-09-03 07:16:47 【问题描述】:

我正在使用 c++ 语言学习 openMP。我确信在代码的并行区域中,会产生指定数量的线程。但我不清楚线程是否在所有可用内核上运行。有什么方法可以确认吗?我在使用 g++ 编译的 ubuntu12.04 上运行代码。

【问题讨论】:

您使用的是哪个操作系统? @PoojaNilangekar 我已经编辑了帖子。我正在使用 Linux。 【参考方案1】:

使用sudo apt-get install htop 安装htop。在此之后,您可以运行命令htop 来监控您机器上运行的所有进程的 CPU 和内存使用情况。

【讨论】:

我目前没有使用计算密集型代码。因此,通过运行 htop,我看不出核心使用情况有任何差异。还有其他方法吗? 好的,在这种情况下,在并行代码中打印sched_getcpu()。这将打印线程正在运行的 CPU 的 ID。

以上是关于如何确认多核系统中的openmp是不是使用了所有内核?的主要内容,如果未能解决你的问题,请参考以下文章

C++ openmp并行程序在多核linux上如何最大化使用cpu

intel fortran如何实现单机多核并行运算

Linux 上的多核计算性能低下(openMP、boost::thread 等)

OpenMp实现并行化

OpenMP用法大全

OpenMP基本概念转