【发布时间】:2013-02-06 02:32:18
【问题描述】:
假设我有以下 OpenMP 区域:
omp_set_num_threads(3);
#pragma omp parallel for
{
//start
...
//somewhere in the middle
...
//end
}
假设我有 8 核系统。例如,在“开始”之后,假设线程 0 在核心 4 上运行,线程 1 在核心 5 上运行,线程 2 在核心 6 上运行。线程迁移从“结束”之前的“中间某处”是否可能他们各自的核心是在“开始”之后分配的? IE。是否有可能在“开始”之后将线程 0-2 分配给核心 4-5,而“中间某处”线程说分别迁移到核心 5-7?甚至有可能线程可能驻留在核心 0-2 上的“结束”之前?谢谢。
【问题讨论】:
-
如果您要求对线程的位置进行某种动态运行时控制,或者您只是询问原则上是否有可能将线程迁移到并行区域执行时不同的内核。
-
@HristoIliev 第二部分,我问的是原则上是否有可能线程迁移到不同的核心,而并行区域执行时没有明确要求这样做。谢谢。
-
@torem 记住:特权伴随着责任。也许你想在 cmets 上查看这个link(尤其是我什么时候不应该发表评论?)
-
@Massimiliano 对不起,如果我做错了什么。我只是想知道确切的情况。