Abstractions For Portable Data Management In Heterogeneous Memory Systems