2013-10-13 29 views
0

說我有一個循環OpenMP如何將循環劃分爲線程?

for(int i = 0; i < 1000; i++){ 
    sum += i; 
} 

如果我使用OpenMP的加快了,這是怎麼映射到4個不同的核循環?我知道它使用叉和連接,我的意思是它像i = 0的核心0,i = 1核心1等,或者i = 0核心0,i = 249核心1,i = 499核心2等

感謝,

鮑勃

+0

只檢查維基http://en.wikipedia.org/wiki/OpenMP它使用叉聯接模型 – pyCthon

+0

@pyCthon我知道它使用叉和聯接,我的意思是它就像i = 0的核心0,我= 1核心1等等,或者i = 0核心1,i = 249核心2,i = 499核心3等 – dorafmon

+0

@dorafmon請參閱[OpenMP分割for循環核心](http://stackoverflow.com/questions/8312563/openmp-divide-for-loop-over-cores) – Gangadhar

回答

1

根據this presentation這取決於編譯器實現,而不是OpenMP的規範,但是編譯器可能會使用I = 0的核0,I = 249芯1等

enter image description here

還要確保你是sum的縮減變量,否則在你的例子中你有競爭條件。