【问题标题】:cpu cores vs threadscpu核心与线程
【发布时间】:2011-12-24 17:59:24
【问题描述】:

我的 MacBookPro 运行 BootCamp,有一个 Intel i7-640M 处理器,它有 2 个内核。与所有其他 i7 芯片一样,每个内核都是超线程的,因此您最多可以拥有 4 个线程。使用 Visual Studio 2010 c/c++ 确定这些:

coresAvailable      =    omp_get_num_procs ( );
threadsAvailable    =    omp_get_max_threads ( ) ;

正如预期的那样,“threadsAvailable”返回值为 4。但“coresAvailable”也报告为 4。

我错过了什么?

【问题讨论】:

    标签: c multithreading cpu-cores openmp


    【解决方案1】:

    omp_get_num_procs 返回操作系统报告的 CPU 数量,由于超线程内核将自己报告为 2 个 CPU,因此双核超线程芯片将自己报告为 4 个处理器。

    omp_get_max_threads 返回将在代码的并行区域中使用的最多线程,因此它将使用的最多线程将是可用 CPU 的数量是有意义的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多