【问题标题】:Running the program with logical threads使用逻辑线程运行程序
【发布时间】:2015-08-13 09:49:59
【问题描述】:

我有一个启用了超线程的多核。 每个物理核心有两个逻辑核心。现在我可以用 1 个核心及其逻辑核心运行我的程序吗?表示我们的程序使用这一核心的 2 个逻辑核心运行,但其他核心处于空闲状态。

【问题讨论】:

  • 从应用程序的角度来看,逻辑核心只是一个核心,一个线程就是一个线程。线程如何分配给内核取决于操作系统。如果你想让一个线程在一个特定的核心上,你必须set its affinity

标签: c++ linux multithreading multicore


【解决方案1】:

现在我可以用 1 个内核及其逻辑内核运行我的程序吗?

是的,但是要使用多于 1 个的内核,您必须在多个线程中执行您的应用。 IE。如果您使用的是 pthreads,则使用 pthread_setaffinity_np 指定您的线程应在哪个内核上执行。

如果您想让您的算法并行运行,请考虑使用 OpenMP 或 TBB(线程构建块)。这些库可以很容易地将顺序执行的应用程序转换为并行应用程序。 IE。而不是使用for,而是使用parallel_for。此外,您的代码将自动使用所有可用(或配置)数量的内核 - 无论 CPU 有 2 个内核还是其中的 16 个。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 2015-11-10
  • 2015-07-16
相关资源
最近更新 更多