OpenMP如何将数组保存在缓存中

时间:2017-10-20 08:53:46

标签: arrays openmp cpu-cache

我按顺序生成一个数字,然后在一个永不改变的数组中查找。因此,如果这个数组如何停留在生成的线程缓存中会很方便。

unsigned int unordered_set[65535];
void init_set( unsigned int *a) {
...
}

unsigned int generate_number() {
...
}

unsigned int find_number(unsigned int a) {
    unsigned int result=0;
    #pragma omp parallel for
    for(unsigned int i=0; i<65535;i++) {
        if (unordered_set[i]==a)
            result=i;
    }
    return result
}

void main() {
    unsigned int x;
    /* Fill the array with unique numbers */
    init_set(unordered_set);
    while(x>0) {
        /*This loop can only be done sequentially */
        x=generate_number();
        unsigned int r=find_number(x);
        if (r>0)
            printf ("Found: %d %d",x,r);
    }
}

我想这在上面的代码中永远不会发生。每次调用find_number时,数组unordered_set会一次又一次地加载到线程缓存中。可以做些什么来确保数组保持在缓存中?

0 个答案:

没有答案