3
爲什麼使用以下代碼在執行時間方面有好處?OpenMP關鍵部分意外提升性能
#pragma omp parallel for
for(i=0; i<size; i++)
{
#pragma omp critical
{
funcall1();
funcall2();
for(j=0;j<size2;j++)
{
funcall3();
}
}
}
運行兩次串行版本,但我不知道爲什麼
可能高速緩存一致性如果預留的代碼似乎是由4個內核來執行這些步驟 –
單核.. 一個線程可以進入臨界區,如果前一個線程執行的函數調用? 你能否更好地解釋你的答案? – lucy
每個外部循環運行在sep核心上,內部循環將被關鍵核心鎖定,因此函數調用中的任何緩存值都可用於下一個調用 –