【问题标题】:CPU/Threads usage on M1 Pro (Apple Silicon) using openMP使用 openMP 在 M1 Pro(Apple Silicon)上的 CPU/线程使用情况
【发布时间】:2022-01-19 15:44:42
【问题描述】:

希望有人知道这个问题的答案...

我的代码可以完美地与 openMP 一起编译(它使用 libsharp)。但是,我发现让 M1 Pro 芯片使用我拥有的所有 8 或 10 个内核是不可能的。

我将线程变量正确设置为export OMP_NUM_THREADS=10,以便代码正确识别它应该使用 10 个线程运行(见下图显示我的活动监视器的打印屏幕):

Activity Monitor Print Screen

打印屏幕显示代码是为 Apple Silicon 编译的,使用 10 个线程,但可用的 CPU 不多。

有谁知道如何正确编译/设置线程数以便使用所有内核?

这在 x86 架构中是微不足道的。

【问题讨论】:

  • 你使用的是哪个编译器?
  • clang 和 gcc 都显示这种行为。
  • 我们是否有任何成功利用 M1 Mac 的 CPU 资源的 openmp 代码示例?

标签: multithreading openmp apple-m1 arm64


【解决方案1】:

不是真正的答案,但渴望评论......

如果 LLVM 和 GCC 的行为相同,则不是 OpenMP 运行时问题。 (并且您的监视器输出显示已创建正确数量的线程)。我也不确定这真的是 Arm 问题。 您是在与 Apple x86 机器(运行相同的操作系统)还是与 Linux x86 系统进行比较? 两个操作系统的调度决策可能不同,并且(例如)MacOS 没有将线程绑定到逻辑 CPU 的接口。 除此之外,还有一些快速核心和一些慢速核心的问题。这可能意味着静态调度的循环效率低下。 我还对你武装同时运行代码的多个实例这一事实感到困惑,所以你明确地导致了逻辑CPU的超额订阅......

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 2021-09-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 2021-05-08
    • 2021-09-19
    相关资源
    最近更新 更多