Shared Memory Abstractions For Heterogeneous Multicore Processors