0
我通過this後可以瞭解「l2_subp0_read_sector_misses」和「l2_subp1_read_sector_misses」。現在我有關於事件「l2_subp0_write_sector_misses」和「l2_subp1_write_sector_misses」的類似問題。瞭解nvprof事件的結果「l2_subp0_write_sector_misses」和「l2_subp1_write_sector_misses」
讓我們首先採取同樣的例子如在給定的鏈路(矢量加)
內核代碼:
__global__ void AddVectors(const float* A, const float* B, float* C, int N)
{
int blockStartIndex = blockIdx.x * blockDim.x * N;
int threadStartIndex = blockStartIndex + threadIdx.x;
int threadEndIndex = threadStartIndex + (N * blockDim.x);
int i;
for(i=threadStartIndex; i<threadEndIndex; i+=blockDim.x){
C[i] = A[i] + B[i];
}
}
在這裏,我也列C從主機複製到設備。因此,C數組必須位於L2高速緩存中(總共3個數組的大小小於L2高速緩存的大小)。但是,我仍然看到根據nvprof結果,所有對C的寫入訪問都是L2緩存未命中。
這是預期的行爲? 是否有任何情況下我們可以期待L2寫入緩存命中或L2緩存寫入訪問總是失敗?
謝謝。