【发布时间】:2013-10-13 16:12:18
【问题描述】:
假设我有一个循环
for(int i = 0; i < 1000; i++){
sum += i;
}
如果我使用 OpenMP 来加速它,这个 for 循环如何映射到 4 个不同的内核?
我知道它使用 fork 和 join,我的意思是 i=0 代表核心 0,i=1 代表核心 1 等等,还是 i=0 代表核心 0,i=249 代表核心 1,i = 499 代表核心2等
谢谢,
鲍勃
【问题讨论】:
-
只需检查 wiki en.wikipedia.org/wiki/OpenMP 它使用分叉连接模型
-
@pyCthon 我知道它使用 fork 和 join,我的意思是 i=0 代表核心 0,i=1 代表核心 1 等等,还是 i=0 代表核心 1,i=249 代表core 2, i = 499 for core 3 etc.
-
@dorafmon 请参阅OpenMP divide for loop over cores
-
@Gangadhar 很酷,谢谢,我认为这回答了我的问题。
-
这是一个微不足道的循环,它无法明智地映射到多个内核。即使在同一个盒子上,这样一个循环的运行时间也少于将它排队到池中的线程间通信开销。
标签: c optimization openmp