簡體   English   中英

Openmp初始化化向量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM