Было отмечено, что доступ к элементам данных, попадающим в одну и ту же строку кэша, работает плохо из-за эффекта пинг-понга.
Однако код, который я написал, не проверен с помощью valgrind --tool = cachegrind не показывает этого поведения. Буду признателен за любые идеи по этому поводу?
Прилагается ниже функция, которую выполняет каждый pthread:
void test_cache(void* arg)
{
long id = (long) arg;
uint32_t idx = (uint32_t) id;
uint32_t ctr = 0;
uint32_t total_sum = 0;
for(; ctr < 500000; ++ctr)
{
total_sum += shared[idx];
AO_fetch_and_add(&shared[idx], idx);
}
printf("%d %d,\n",id, total_sum);
}