A good explanation: Identifying and Avoiding False Sharing among Threads
Great link! Is there any way to consciously avoid false sharing in a parallel cache oblivious algorithm though? Or does the compiler usually do a good enough job?
So by consciously avoiding false sharing you mean something like we did on quiz 3? Changing the access patterns so that caches on 2 different cores don't access the same line during the same time period? I don't think the compiler would do much in such a case.
An Analysis of Linux Scalability to Many Cores. mentioned that false sharing will trigger snooping protocol which generates communication overhead. They solved it by using per-core data structure to avoid false sharing.