在C中,如果你有这种类型的循环: for (i = 0; i < N; i++)
sum += a[i] 当数组'a‘包含整数(4字节),缓存块可以存储比方说32字节,那么我知道循环每8次迭代就会有一次冷未命中,因为处理器会将8个整数加载到一个块中,然后直到第9次迭代才会得到缓存未命中。当它在a获得缓存未命中时,它会将a-a7加载到缓存块中,并且不会再次将任何'a‘加载到缓存</
这是我写的代码:void matrix_multi(int c[][TSIZE], int a[][TSIZE], int b[][TSIZE]) int B=8;
#pragma omp parallel for private(i,j,k,i1,j1,k1) schedule(auto) collapse(3) for (j=0; j<TSIZE; j+=B)
for (k=0; k<TSIZ