[英]Openmp Inizialization Vectors
我想知道為什么如果使用openmp通過以下代碼初始化向量會更慢:
尺寸= 7000; chunksize = 700;
這些用於兩個不同的地方。
#pragma omp parallel for schedule (static, chunksize) private(i)
for (i=0;i<dimension;i++){
visited[i]=0;
used[i]=0;
connected[i]=0;
}
#pragma omp parallel for schedule(static,chunksize) private(j)
for(j=0;j<dimension;j++){
if (mat[next][j]) {
visited[j]=1;
connected[j]=tag;
}
}
我有4個核心(2個物理,2個邏輯),這些是第一個的速度:不使用Openmp:0.000048使用Openmp:0.000168
OpenMP確實會導致一些開銷。 我不知道您有7000個,但是像double或int這樣的小類型的7000可能適合單個處理器的最快的L1高速緩存,並且肯定適合下一個更大的高速緩存,這意味着您正在並行化代碼在串行情況下,該性能已經接近最佳情況。
另外,如果您的mat
變量僅存在於一個位置,則線程可能會爭用對它的引用,從而導致爭用並使速度變慢。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.