使用逻辑线程运行程序
Posted
技术标签:
【中文标题】使用逻辑线程运行程序【英文标题】:Running the program with logical threads 【发布时间】:2015-08-13 09:49:59 【问题描述】:我有一个启用了超线程的多核。 每个物理核心有两个逻辑核心。现在我可以用 1 个核心及其逻辑核心运行我的程序吗?表示我们的程序使用这一核心的 2 个逻辑核心运行,但其他核心处于空闲状态。
【问题讨论】:
从应用程序的角度来看,逻辑核心只是一个核心,一个线程就是一个线程。线程如何分配给内核取决于操作系统。如果你想让一个线程在一个特定的核心上,你必须set its affinity。 【参考方案1】:现在我可以用 1 个内核及其逻辑内核运行我的程序吗?
是的,但是要使用多于 1 个的内核,您必须在多个线程中执行您的应用。 IE。如果您使用的是 pthreads,则使用 pthread_setaffinity_np
指定您的线程应在哪个内核上执行。
如果您想让您的算法并行运行,请考虑使用 OpenMP 或 TBB(线程构建块)。这些库可以很容易地将顺序执行的应用程序转换为并行应用程序。 IE。而不是使用for
,而是使用parallel_for
。此外,您的代码将自动使用所有可用(或配置)数量的内核 - 无论 CPU 有 2 个内核还是其中的 16 个。
【讨论】:
您还可以找到 Ulrich Drepper 关于可扩展并行化的讨论,价值:youtube.com/watch?v=jfimI7UC9Pg以上是关于使用逻辑线程运行程序的主要内容,如果未能解决你的问题,请参考以下文章